@@ -2,71 +2,11 @@ namespace GraphBLAS.FSharp.Backend.Matrix.COO
22
33open Brahma.FSharp
44open GraphBLAS.FSharp .Backend .Common
5- open GraphBLAS.FSharp .Backend .Predefined
65open Microsoft.FSharp .Quotations
76open GraphBLAS.FSharp .Backend .Objects
7+ open GraphBLAS.FSharp .Backend
88
99module COOMatrix =
10- ///<param name =" clContext " >.</param >
11- ///<param name =" workGroupSize " >Should be a power of 2 and greater than 1.</param >
12- let private setPositions < 'a when 'a : struct > ( clContext : ClContext ) workGroupSize =
13-
14- let indicesScatter =
15- Scatter.runInplace clContext workGroupSize
16-
17- let valuesScatter =
18- Scatter.runInplace clContext workGroupSize
19-
20- let sum =
21- PrefixSum.standardExcludeInplace clContext workGroupSize
22-
23- let resultLength = Array.zeroCreate< int> 1
24-
25- fun ( processor : MailboxProcessor < _ >) ( allRows : ClArray < int >) ( allColumns : ClArray < int >) ( allValues : ClArray < 'a >) ( positions : ClArray < int >) ->
26- let resultLengthGpu = clContext.CreateClCell 0
27-
28- let _ , r = sum processor positions resultLengthGpu
29-
30- let resultLength =
31- let res =
32- processor.PostAndReply( fun ch -> Msg.CreateToHostMsg<_>( r, resultLength, ch))
33-
34- processor.Post( Msg.CreateFreeMsg<_>( r))
35-
36- res.[ 0 ]
37-
38- let resultRows =
39- clContext.CreateClArray< int>(
40- resultLength,
41- hostAccessMode = HostAccessMode.NotAccessible,
42- deviceAccessMode = DeviceAccessMode.WriteOnly,
43- allocationMode = AllocationMode.Default
44- )
45-
46- let resultColumns =
47- clContext.CreateClArray< int>(
48- resultLength,
49- hostAccessMode = HostAccessMode.NotAccessible,
50- deviceAccessMode = DeviceAccessMode.WriteOnly,
51- allocationMode = AllocationMode.Default
52- )
53-
54- let resultValues =
55- clContext.CreateClArray(
56- resultLength,
57- hostAccessMode = HostAccessMode.NotAccessible,
58- deviceAccessMode = DeviceAccessMode.WriteOnly,
59- allocationMode = AllocationMode.Default
60- )
61-
62- indicesScatter processor positions allRows resultRows
63-
64- indicesScatter processor positions allColumns resultColumns
65-
66- valuesScatter processor positions allValues resultValues
67-
68- resultRows, resultColumns, resultValues, resultLength
69-
7010 let private preparePositions < 'a , 'b , 'c when 'a : struct and 'b : struct and 'c : struct and 'c : equality >
7111 ( clContext : ClContext )
7212 ( opAdd : Expr < 'a option -> 'b option -> 'c option >)
@@ -368,7 +308,7 @@ module COOMatrix =
368308 let preparePositions =
369309 preparePositions clContext opAdd workGroupSize
370310
371- let setPositions = setPositions< 'c> clContext workGroupSize
311+ let setPositions = Matrix.Common. setPositions< 'c> clContext workGroupSize
372312
373313 fun ( queue : MailboxProcessor < _ >) ( matrixLeft : ClCOOMatrix < 'a >) ( matrixRight : ClCOOMatrix < 'b >) ->
374314
0 commit comments