Skip to content

Commit 4af6dc4

Browse files
committed
Changed writing new values into fields, corrected method Reduce for vector
1 parent f6b5614 commit 4af6dc4

1 file changed

Lines changed: 59 additions & 13 deletions

File tree

src/GraphBLAS-sharp/Implementations.fs

Lines changed: 59 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -175,12 +175,16 @@ and COOMatrix<'a when 'a : struct and 'a : equality>(elements: (int * int * 'a)[
175175

176176
let renewedValues = oclContext.RunSync workflow
177177

178-
(rows, columns, values) <-
178+
let resultRows, resultColumns, resultValues =
179179
(rows, columns, renewedValues)
180180
|||> Array.zip3
181181
|> Array.append elementsToAppend
182182
|> Array.unzip3
183183

184+
rows <- resultRows
185+
columns <- resultColumns
186+
values <- resultValues
187+
184188
override this.Item
185189
with get (matrixMask: Mask2D option) : Matrix<'a> =
186190
let resultElements =
@@ -263,12 +267,16 @@ and COOMatrix<'a when 'a : struct and 'a : equality>(elements: (int * int * 'a)[
263267
let renewedValues = oclContext.RunSync workflow
264268
let renewedElementsToAppend = elementsToAppend |> Array.map (fun (i, a) -> (i, colIdx, a))
265269

266-
(rows, columns, values) <-
270+
let resultRows, resultColumns, resultValues =
267271
(rows, columns, renewedValues)
268272
|||> Array.zip3
269273
|> Array.append renewedElementsToAppend
270274
|> Array.unzip3
271275

276+
rows <- resultRows
277+
columns <- resultColumns
278+
values <- resultValues
279+
272280
override this.Item
273281
with get (vectorMask: Mask1D option, colIdx: int) : Vector<'a> =
274282
let resultLength = this.RowCount
@@ -354,12 +362,16 @@ and COOMatrix<'a when 'a : struct and 'a : equality>(elements: (int * int * 'a)[
354362
let renewedValues = oclContext.RunSync workflow
355363
let renewedElementsToAppend = elementsToAppend |> Array.map (fun (j, a) -> (rowIdx, j, a))
356364

357-
(rows, columns, values) <-
365+
let resultRows, resultColumns, resultValues =
358366
(rows, columns, renewedValues)
359367
|||> Array.zip3
360368
|> Array.append renewedElementsToAppend
361369
|> Array.unzip3
362370

371+
rows <- resultRows
372+
columns <- resultColumns
373+
values <- resultValues
374+
363375
override this.Item
364376
with get (rowIdx: int, vectorMask: Mask1D option) : Vector<'a> =
365377
let resultLength = this.ColumnCount
@@ -411,21 +423,29 @@ and COOMatrix<'a when 'a : struct and 'a : equality>(elements: (int * int * 'a)[
411423
i <- i + 1
412424

413425
if not isFound then
414-
(rows, columns, values) <-
426+
let resultRows, resultCOlumns, resultValues =
415427
(rows, columns, values)
416428
|||> Array.zip3
417429
|> Array.append [|rowIdx, colIdx, value|]
418430
|> Array.unzip3
419431

432+
rows <- resultRows
433+
columns <- resultCOlumns
434+
values <- resultValues
435+
420436
override this.Fill
421437
with set (matrixMask: Mask2D option) (Scalar (value: 'a)) =
422438
match matrixMask with
423439
| None ->
424-
(rows, columns, values) <-
440+
let resultRows, resultCOlumns, resultValues =
425441
[| for i in 0 .. this.RowCount - 1 do
426442
for j in 0 .. this.ColumnCount - 1 do
427443
yield (i, j, value) |]
428444
|> Array.unzip3
445+
446+
rows <- resultRows
447+
columns <- resultCOlumns
448+
values <- resultValues
429449
| Some mask ->
430450
if (mask.RowCount, mask.ColumnCount) <> (this.RowCount, this.ColumnCount) then
431451
invalidArg
@@ -478,12 +498,16 @@ and COOMatrix<'a when 'a : struct and 'a : equality>(elements: (int * int * 'a)[
478498
let renewedValues = oclContext.RunSync workflow
479499
let elementsToAppend = indicesToAppend |> Array.map (fun (i, j) -> (i, j, value))
480500

481-
(rows, columns, values) <-
501+
let resultRows, resultColumns, resultValues =
482502
(rows, columns, renewedValues)
483503
|||> Array.zip3
484504
|> Array.append elementsToAppend
485505
|> Array.unzip3
486506

507+
rows <- resultRows
508+
columns <- resultColumns
509+
values <- resultValues
510+
487511
override this.Fill
488512
with set (vectorMask: Mask1D option, colIdx: int) (Scalar (value: 'a)) =
489513
let mask =
@@ -539,12 +563,16 @@ and COOMatrix<'a when 'a : struct and 'a : equality>(elements: (int * int * 'a)[
539563
let renewedValues = oclContext.RunSync workflow
540564
let elementsToAppend = indicesToAppend |> Array.map (fun i -> (i, colIdx, value))
541565

542-
(rows, columns, values) <-
566+
let resultRows, resultColumns, resultValues =
543567
(rows, columns, renewedValues)
544568
|||> Array.zip3
545569
|> Array.append elementsToAppend
546570
|> Array.unzip3
547571

572+
rows <- resultRows
573+
columns <- resultColumns
574+
values <- resultValues
575+
548576
override this.Fill
549577
with set (rowIdx: int, vectorMask: Mask1D option) (Scalar (value: 'a)) =
550578
let mask =
@@ -600,12 +628,16 @@ and COOMatrix<'a when 'a : struct and 'a : equality>(elements: (int * int * 'a)[
600628
let renewedValues = oclContext.RunSync workflow
601629
let elementsToAppend = indicesToAppend |> Array.map (fun j -> (rowIdx, j, value))
602630

603-
(rows, columns, values) <-
631+
let resultRows, resultColumns, resultValues =
604632
(rows, columns, renewedValues)
605633
|||> Array.zip3
606634
|> Array.append elementsToAppend
607635
|> Array.unzip3
608636

637+
rows <- resultRows
638+
columns <- resultColumns
639+
values <- resultValues
640+
609641
member private this.MxCOOm
610642
(matrix: COOMatrix<'a>)
611643
(mask: Mask2D)
@@ -1144,12 +1176,15 @@ and SparseVector<'a when 'a : struct and 'a : equality>(size: int, listOfNonzero
11441176

11451177
let renewedValues = oclContext.RunSync workflow
11461178

1147-
(indices, values) <-
1179+
let resultIndices, resultValues =
11481180
(indices, renewedValues)
11491181
||> Array.zip
11501182
|> Array.append elementsToAppend
11511183
|> Array.unzip
11521184

1185+
indices <- resultIndices
1186+
values <- resultValues
1187+
11531188
override this.Item
11541189
with get (vectorMask: Mask1D option) : Vector<'a> =
11551190
let resultElements =
@@ -1196,20 +1231,26 @@ and SparseVector<'a when 'a : struct and 'a : equality>(size: int, listOfNonzero
11961231
i <- i + 1
11971232

11981233
if not isFound then
1199-
(indices, values) <-
1234+
let resultIndices, resultValues =
12001235
(indices, values)
12011236
||> Array.zip
12021237
|> Array.append [|idx, value|]
12031238
|> Array.unzip
12041239

1240+
indices <- resultIndices
1241+
values <- resultValues
1242+
12051243
override this.Fill
12061244
with set (vectorMask: Mask1D option) (Scalar (value: 'a)) =
12071245
match vectorMask with
12081246
| None ->
1209-
(indices, values) <-
1247+
let resultIndices, resultValues =
12101248
[| for i in 0 .. this.Length - 1 do
12111249
yield (i, value) |]
12121250
|> Array.unzip
1251+
1252+
indices <- resultIndices
1253+
values <- resultValues
12131254
| Some mask ->
12141255
if mask.Length <> this.Length then
12151256
invalidArg
@@ -1255,12 +1296,15 @@ and SparseVector<'a when 'a : struct and 'a : equality>(size: int, listOfNonzero
12551296
let renewedValues = oclContext.RunSync workflow
12561297
let elementsToAppend = indicesToAppend |> Array.map (fun i -> (i, value))
12571298

1258-
(indices, values) <-
1299+
let resultIndices, resultValues =
12591300
(indices, renewedValues)
12601301
||> Array.zip
12611302
|> Array.append elementsToAppend
12621303
|> Array.unzip
12631304

1305+
indices <- resultIndices
1306+
values <- resultValues
1307+
12641308
member internal this.VxCOOm
12651309
(matrix: COOMatrix<'a>)
12661310
(mask: Mask1D)
@@ -1627,7 +1671,8 @@ and SparseVector<'a when 'a : struct and 'a : equality>(size: int, listOfNonzero
16271671
let command =
16281672
<@
16291673
fun (ndRange: _1D)
1630-
(valuesBuffer: 'a[]) ->
1674+
(valuesBuffer: 'a[])
1675+
(offset: int) ->
16311676

16321677
let i = ndRange.GlobalID0
16331678
valuesBuffer.[i] <- (%plus) valuesBuffer.[i] valuesBuffer.[i + offset]
@@ -1638,6 +1683,7 @@ and SparseVector<'a when 'a : struct and 'a : equality>(size: int, listOfNonzero
16381683
kernelP
16391684
ndRange
16401685
values
1686+
offset
16411687
do! RunCommand command binder
16421688
return! ToHost values
16431689
}

0 commit comments

Comments
 (0)