Skip to content

Commit ecb4eb5

Browse files
committed
refactor: remove *.map2ToCOO
1 parent 743491e commit ecb4eb5

File tree

9 files changed

+57
-142
lines changed

9 files changed

+57
-142
lines changed

src/GraphBLAS-sharp.Backend/Matrix/CSR/Map.fs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ module internal Map =
8181

8282
resultBitmap, resultValues, resultRows, resultColumns
8383

84-
let runToCOO<'a, 'b when 'a: struct and 'b: struct and 'b: equality>
84+
let run<'a, 'b when 'a: struct and 'b: struct and 'b: equality>
8585
(opAdd: Expr<'a option -> 'b option>)
8686
(clContext: ClContext)
8787
workGroupSize
@@ -112,18 +112,3 @@ module internal Map =
112112
Rows = resultRows
113113
Columns = resultColumns
114114
Values = resultValues }
115-
116-
let run<'a, 'b when 'a: struct and 'b: struct and 'b: equality>
117-
(opAdd: Expr<'a option -> 'b option>)
118-
(clContext: ClContext)
119-
workGroupSize
120-
=
121-
122-
let mapToCOO = runToCOO opAdd clContext workGroupSize
123-
124-
let toCSRInPlace =
125-
Matrix.toCSRInPlace clContext workGroupSize
126-
127-
fun (queue: MailboxProcessor<_>) allocationMode (matrix: ClMatrix.CSR<'a>) ->
128-
mapToCOO queue allocationMode matrix
129-
|> toCSRInPlace queue allocationMode

src/GraphBLAS-sharp.Backend/Matrix/CSR/Map2.fs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ module internal Map2 =
215215
processor.Post(Msg.CreateRunMsg<_, _>(kernel))
216216
rowPositions, allValues
217217

218-
let runToCOO<'a, 'b, 'c when 'a: struct and 'b: struct and 'c: struct and 'c: equality>
218+
let run<'a, 'b, 'c when 'a: struct and 'b: struct and 'c: struct and 'c: equality>
219219
(opAdd: Expr<'a option -> 'b option -> 'c option>)
220220
(clContext: ClContext)
221221
workGroupSize
@@ -257,18 +257,3 @@ module internal Map2 =
257257
Rows = resultRows
258258
Columns = resultColumns
259259
Values = resultValues }
260-
261-
let run<'a, 'b, 'c when 'a: struct and 'b: struct and 'c: struct and 'c: equality>
262-
(opAdd: Expr<'a option -> 'b option -> 'c option>)
263-
(clContext: ClContext)
264-
workGroupSize
265-
=
266-
267-
let elementwiseToCOO = runToCOO opAdd clContext workGroupSize
268-
269-
let toCSRInPlace =
270-
Matrix.toCSRInPlace clContext workGroupSize
271-
272-
fun (queue: MailboxProcessor<_>) allocationMode (matrixLeft: ClMatrix.CSR<'a>) (matrixRight: ClMatrix.CSR<'b>) ->
273-
elementwiseToCOO queue allocationMode matrixLeft matrixRight
274-
|> toCSRInPlace queue allocationMode

src/GraphBLAS-sharp.Backend/Matrix/CSR/Matrix.fs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,6 @@ module Matrix =
6161

6262
let map2 = Map2.run
6363

64-
let map2AtLeastOneToCOO<'a, 'b, 'c when 'a: struct and 'b: struct and 'c: struct and 'c: equality>
65-
(clContext: ClContext)
66-
(opAdd: Expr<AtLeastOne<'a, 'b> -> 'c option>)
67-
workGroupSize
68-
=
69-
70-
Map2.AtLeastOne.runToCOO (Convert.atLeastOneToOption opAdd) clContext workGroupSize
71-
7264
let map2AtLeastOne<'a, 'b, 'c when 'a: struct and 'b: struct and 'c: struct and 'c: equality>
7365
(clContext: ClContext)
7466
(opAdd: Expr<AtLeastOne<'a, 'b> -> 'c option>)
@@ -77,7 +69,6 @@ module Matrix =
7769

7870
Map2.AtLeastOne.run (Convert.atLeastOneToOption opAdd) clContext workGroupSize
7971

80-
8172
let transposeInPlace (clContext: ClContext) workGroupSize =
8273

8374
let toCOOInPlace = toCOOInPlace clContext workGroupSize

src/GraphBLAS-sharp.Backend/Matrix/Matrix.fs

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -264,10 +264,10 @@ module Matrix =
264264
fun (processor: MailboxProcessor<_>) allocationMode matrix ->
265265
match matrix with
266266
| ClMatrix.COO m -> mapCOO processor allocationMode m |> ClMatrix.COO
267-
| ClMatrix.CSR m -> mapCSR processor allocationMode m |> ClMatrix.CSR
267+
| ClMatrix.CSR m -> mapCSR processor allocationMode m |> ClMatrix.COO
268268
| ClMatrix.CSC m ->
269-
(mapCSR processor allocationMode m.ToCSR).ToCSC
270-
|> ClMatrix.CSC
269+
(mapCSR processor allocationMode m.ToCSR)
270+
|> ClMatrix.COO
271271
| _ -> failwith "Not yet implemented"
272272

273273
let map2 (opAdd: Expr<'a option -> 'b option -> 'c option>) (clContext: ClContext) workGroupSize =
@@ -292,47 +292,22 @@ module Matrix =
292292
| _ -> failwith "Matrix formats are not matching"
293293

294294
let map2AtLeastOne (opAdd: Expr<AtLeastOne<'a, 'b> -> 'c option>) (clContext: ClContext) workGroupSize =
295-
let COOElementwise =
295+
let COOMap2 =
296296
COO.Matrix.map2AtLeastOne clContext opAdd workGroupSize
297297

298-
let CSRElementwise =
298+
let CSRMap2 =
299299
CSR.Matrix.map2AtLeastOne clContext opAdd workGroupSize
300300

301301
fun (processor: MailboxProcessor<_>) allocationMode matrix1 matrix2 ->
302302
match matrix1, matrix2 with
303303
| ClMatrix.COO m1, ClMatrix.COO m2 ->
304-
COOElementwise processor allocationMode m1 m2
305-
|> ClMatrix.COO
306-
| ClMatrix.CSR m1, ClMatrix.CSR m2 ->
307-
CSRElementwise processor allocationMode m1 m2
308-
|> ClMatrix.CSR
309-
| ClMatrix.CSC m1, ClMatrix.CSC m2 ->
310-
(CSRElementwise processor allocationMode m1.ToCSR m2.ToCSR)
311-
.ToCSC
312-
|> ClMatrix.CSC
313-
| _ -> failwith "Matrix formats are not matching"
314-
315-
let map2AtLeastOneToCOO (opAdd: Expr<AtLeastOne<'a, 'b> -> 'c option>) (clContext: ClContext) workGroupSize =
316-
let COOElementwise =
317-
COO.Matrix.map2AtLeastOne clContext opAdd workGroupSize
318-
319-
let CSRElementwise =
320-
CSR.Matrix.map2AtLeastOneToCOO clContext opAdd workGroupSize
321-
322-
let transposeCOOInPlace =
323-
COO.Matrix.transposeInPlace clContext workGroupSize
324-
325-
fun (processor: MailboxProcessor<_>) allocationMode matrix1 matrix2 ->
326-
match matrix1, matrix2 with
327-
| ClMatrix.COO m1, ClMatrix.COO m2 ->
328-
COOElementwise processor allocationMode m1 m2
304+
COOMap2 processor allocationMode m1 m2
329305
|> ClMatrix.COO
330306
| ClMatrix.CSR m1, ClMatrix.CSR m2 ->
331-
CSRElementwise processor allocationMode m1 m2
307+
CSRMap2 processor allocationMode m1 m2
332308
|> ClMatrix.COO
333309
| ClMatrix.CSC m1, ClMatrix.CSC m2 ->
334-
CSRElementwise processor allocationMode m1.ToCSR m2.ToCSR
335-
|> transposeCOOInPlace processor
310+
(CSRMap2 processor allocationMode m1.ToCSR m2.ToCSR)
336311
|> ClMatrix.COO
337312
| _ -> failwith "Matrix formats are not matching"
338313

tests/GraphBLAS-sharp.Tests/Backend/Matrix/Map.fs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ let testFixturesMapNot case =
113113
createTestMap case false true (fun _ -> not) (=) (fun _ _ -> ArithmeticOperations.notOption) ]
114114

115115
let notTests =
116-
operationGPUTests "Backend.Matrix.map not tests" testFixturesMapNot
116+
operationGPUTests "not" testFixturesMapNot
117117

118118
let testFixturesMapAdd case =
119119
[ let context = case.TestContext.ClContext
@@ -130,7 +130,7 @@ let testFixturesMapAdd case =
130130
createTestMap case 0uy 10uy (+) (=) ArithmeticOperations.addLeftConst ]
131131

132132
let addTests =
133-
operationGPUTests "Backend.Matrix.map add tests" testFixturesMapAdd
133+
operationGPUTests "add" testFixturesMapAdd
134134

135135
let testFixturesMapMul case =
136136
[ let context = case.TestContext.ClContext
@@ -147,4 +147,7 @@ let testFixturesMapMul case =
147147
createTestMap case 0uy 10uy (*) (=) ArithmeticOperations.mulLeftConst ]
148148

149149
let mulTests =
150-
operationGPUTests "Backend.Matrix.map mul tests" testFixturesMapMul
150+
operationGPUTests "mul" testFixturesMapMul
151+
152+
let allTests =
153+
testList "Map" [ addTests; mulTests; notTests ]

tests/GraphBLAS-sharp.Tests/Backend/Matrix/Map2.fs

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -151,36 +151,6 @@ let testFixturesMap2AddAtLeastOne case =
151151
let addAtLeastOneTests =
152152
operationGPUTests "Backend.Matrix.map2AtLeastOne add tests" testFixturesMap2AddAtLeastOne
153153

154-
let testFixturesMap2AddAtLeastOneToCOO case =
155-
[ let context = case.TestContext.ClContext
156-
let q = case.TestContext.Queue
157-
q.Error.Add(fun e -> failwithf "%A" e)
158-
159-
creatTestMap2Add case false (||) (=) ArithmeticOperations.boolSumAtLeastOne Matrix.map2AtLeastOneToCOO
160-
creatTestMap2Add case 0 (+) (=) ArithmeticOperations.intSumAtLeastOne Matrix.map2AtLeastOneToCOO
161-
162-
if Utils.isFloat64Available context.ClDevice then
163-
creatTestMap2Add
164-
case
165-
0.0
166-
(+)
167-
Utils.floatIsEqual
168-
ArithmeticOperations.floatSumAtLeastOne
169-
Matrix.map2AtLeastOneToCOO
170-
171-
creatTestMap2Add
172-
case
173-
0.0f
174-
(+)
175-
Utils.float32IsEqual
176-
ArithmeticOperations.float32SumAtLeastOne
177-
Matrix.map2AtLeastOneToCOO
178-
179-
creatTestMap2Add case 0uy (+) (=) ArithmeticOperations.byteSumAtLeastOne Matrix.map2AtLeastOneToCOO ]
180-
181-
let addAtLeastOneToCOOTests =
182-
operationGPUTests "Backend.Matrix.map2AtLeastOneToCOO add tests" testFixturesMap2AddAtLeastOneToCOO
183-
184154
let testFixturesMap2MulAtLeastOne case =
185155
[ let context = case.TestContext.ClContext
186156
let q = case.TestContext.Queue
@@ -204,3 +174,10 @@ let testFixturesMap2MulAtLeastOne case =
204174

205175
let mulAtLeastOneTests =
206176
operationGPUTests "Backend.Matrix.map2AtLeastOne multiplication tests" testFixturesMap2MulAtLeastOne
177+
178+
let allTests =
179+
testList
180+
"Map2"
181+
[ addTests
182+
addAtLeastOneTests
183+
mulAtLeastOneTests ]

tests/GraphBLAS-sharp.Tests/Backend/Matrix/SpGeMM/Expand.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ let makeGeneralTest<'a when 'a: struct> zero isEqual opMul opAdd testFun (leftAr
220220
let createGeneralTest (zero: 'a) isEqual (opAddQ, opAdd) (opMulQ, opMul) testFun =
221221
testFun opAddQ opMulQ context Utils.defaultWorkGroupSize
222222
|> makeGeneralTest<'a> zero isEqual opMul opAdd
223-
|> testPropertyWithConfig config $"test on %A{typeof<'a>}"
223+
|> testPropertyWithConfig { config with endSize = 500 } $"test on %A{typeof<'a>}"
224224

225225
let generalTests =
226226
[ createGeneralTest 0 (=) ArithmeticOperations.intAdd ArithmeticOperations.intMul Matrix.SpGeMM.expand

tests/GraphBLAS-sharp.Tests/Backend/Vector/Map2.fs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ let addTestFixtures case =
110110
createTest case (=) false (||) ArithmeticOperations.boolSumOption Vector.map2
111111
createTest case (=) 0uy (+) ArithmeticOperations.byteSumOption Vector.map2 ]
112112

113-
let addTests =
114-
operationGPUTests "Backend.Vector.Map2 add tests" addTestFixtures
113+
let addTests = operationGPUTests "add" addTestFixtures
115114

116115
let mulTestFixtures case =
117116
let context = case.TestContext.ClContext
@@ -125,8 +124,7 @@ let mulTestFixtures case =
125124
createTest case (=) false (&&) ArithmeticOperations.boolMulOption Vector.map2
126125
createTest case (=) 0uy (*) ArithmeticOperations.byteMulOption Vector.map2 ]
127126

128-
let mulTests =
129-
operationGPUTests "Backend.Vector.map2 mul tests" addTestFixtures
127+
let mulTests = operationGPUTests "mul" addTestFixtures
130128

131129
let addAtLeastOneTestFixtures case =
132130
let context = case.TestContext.ClContext
@@ -141,7 +139,7 @@ let addAtLeastOneTestFixtures case =
141139
createTest case (=) 0uy (+) ArithmeticOperations.byteSumAtLeastOne Vector.map2AtLeastOne ]
142140

143141
let addAtLeastOneTests =
144-
operationGPUTests "Backend.Vector.Map2LeastOne add tests" addTestFixtures
142+
operationGPUTests "addAtLeastOne" addTestFixtures
145143

146144
let mulAtLeastOneTestFixtures case =
147145
let context = case.TestContext.ClContext
@@ -156,7 +154,7 @@ let mulAtLeastOneTestFixtures case =
156154
createTest case (=) 0uy (*) ArithmeticOperations.byteMulAtLeastOne Vector.map2AtLeastOne ]
157155

158156
let mulAtLeastOneTests =
159-
operationGPUTests "Backend.Vector.Map2AtLeasOne mul tests" mulTestFixtures
157+
operationGPUTests "mulAtLeastOne" mulTestFixtures
160158

161159
let fillSubVectorComplementedQ<'a, 'b> value =
162160
<@ fun (left: 'a option) (right: 'b option) ->
@@ -199,4 +197,13 @@ let complementedGeneralTestFixtures case =
199197

200198

201199
let complementedGeneralTests =
202-
operationGPUTests "Backend.Vector.Map2Gen mask tests" complementedGeneralTestFixtures
200+
operationGPUTests "mask" complementedGeneralTestFixtures
201+
202+
let allTests =
203+
testList
204+
"Map"
205+
[ addTests
206+
mulTests
207+
addAtLeastOneTests
208+
mulAtLeastOneTests
209+
complementedGeneralTests ]

tests/GraphBLAS-sharp.Tests/Program.fs

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,19 @@ open Expecto
22
open GraphBLAS.FSharp.Tests.Backend
33
open GraphBLAS.FSharp.Tests
44

5-
let hostTests =
6-
testList
7-
"Host"
8-
[ Host.Matrix.FromArray2D.tests
9-
Host.Matrix.Convert.tests
10-
Host.IO.MtxReader.test ]
11-
|> testSequenced
12-
135
let matrixTests =
146
testList
15-
"Matrix tests"
7+
"Matrix"
168
[ Matrix.Convert.tests
17-
Matrix.Map2.addTests
18-
Matrix.Map2.addAtLeastOneTests
19-
Matrix.Map2.mulAtLeastOneTests
20-
Matrix.Map2.addAtLeastOneToCOOTests
21-
Matrix.Map.notTests
22-
Matrix.Map.addTests
23-
Matrix.Map.mulTests
24-
Matrix.SpGeMM.Expand.generalTests
25-
Matrix.SpGeMM.Masked.tests
9+
Matrix.Map2.allTests
10+
Matrix.Map.allTests
2611
Matrix.Merge.allTests
2712
Matrix.Transpose.tests
2813
Matrix.RowsLengths.tests
29-
Matrix.ByRows.tests ]
14+
Matrix.ByRows.tests
15+
16+
Matrix.SpGeMM.Expand.generalTests
17+
Matrix.SpGeMM.Masked.tests ]
3018
|> testSequenced
3119

3220
let commonTests =
@@ -67,7 +55,7 @@ let commonTests =
6755
Common.Sort.Radix.allTests ]
6856

6957
testList
70-
"Common tests"
58+
"Common"
7159
[ Common.Scatter.allTests
7260
Common.Gather.allTests
7361
Common.Merge.tests
@@ -79,17 +67,13 @@ let commonTests =
7967

8068
let vectorTests =
8169
testList
82-
"Vector tests"
70+
"Vector"
8371
[ Vector.SpMV.tests
8472
Vector.ZeroCreate.tests
8573
Vector.OfList.tests
8674
Vector.Copy.tests
8775
Vector.Convert.tests
88-
Vector.Map2.addTests
89-
Vector.Map2.mulTests
90-
Vector.Map2.addAtLeastOneTests
91-
Vector.Map2.mulAtLeastOneTests
92-
Vector.Map2.complementedGeneralTests
76+
Vector.Map2.allTests
9377
Vector.AssignByMask.tests
9478
Vector.AssignByMask.complementedTests
9579
Vector.Reduce.tests
@@ -109,9 +93,17 @@ let deviceTests =
10993
algorithmsTests ]
11094
|> testSequenced
11195

96+
let hostTests =
97+
testList
98+
"Host"
99+
[ Host.Matrix.FromArray2D.tests
100+
Host.Matrix.Convert.tests
101+
Host.IO.MtxReader.test ]
102+
|> testSequenced
103+
112104
[<Tests>]
113105
let allTests =
114-
testList "All tests" [ deviceTests; hostTests ]
106+
testList "All" [ deviceTests; hostTests ]
115107
|> testSequenced
116108

117109
[<EntryPoint>]

0 commit comments

Comments
 (0)