Skip to content

Commit 44bf93a

Browse files
committed
add: Vector float32 tests
1 parent 3abdc9e commit 44bf93a

9 files changed

Lines changed: 197 additions & 139 deletions

File tree

tests/GraphBLAS-sharp.Tests/Algorithms/BFS.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ let testFixtures (testContext: TestContext) =
4040
|> Utils.createArrayFromDictionary (Array2D.length1 matrix) 0
4141

4242
let matrixHost =
43-
Utils.createMatrixFromArray2D CSR matrix (fun x -> x = 0)
43+
Utils.createMatrixFromArray2D CSR matrix ((=) 0)
4444

4545
let matrix = matrixHost.ToDevice context
4646

tests/GraphBLAS-sharp.Tests/Vector/AssignByMask.fs

Lines changed: 14 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ let alwaysTrue _ = true
2020

2121
let config = Utils.defaultConfig
2222

23-
let notNane x = not <| Double.IsNaN x
23+
let wgSize = 32
2424

2525
let checkResult isZero isComplemented (actual: Vector<'a>) (vector: 'a []) (mask: 'a []) (value: 'a) =
2626

@@ -96,17 +96,14 @@ let makeTest<'a when 'a: struct and 'a: equality>
9696
| ex when ex.Message = "InvalidBufferSize" -> ()
9797
| ex -> raise ex
9898

99-
let testFixtures case =
99+
let testFixtures isComplemented case =
100100
let getCorrectnessTestName datatype =
101101
$"Correctness on %s{datatype}, vector: %A{case.Format}"
102102

103-
let wgSize = 32
104103
let context = case.TestContext.ClContext
105104

106-
let isComplemented = false
107-
108105
[ let intFill =
109-
Vector.assignByMask context Mask.assign wgSize
106+
Vector.assignByMaskComplemented context Mask.assign wgSize
110107

111108
let intToCoo = Vector.toDense context wgSize
112109

@@ -116,62 +113,22 @@ let testFixtures case =
116113

117114
if Utils.isFloat64Available context.ClDevice then
118115
let floatFill =
119-
Vector.assignByMask context Mask.assign wgSize
116+
Vector.assignByMaskComplemented context Mask.assign wgSize
120117

121118
let floatToCoo = Vector.toDense context wgSize
122119

123120
case
124-
|> makeTest (Utils.floatIsEqual 0.0) notNane floatToCoo floatFill isComplemented
121+
|> makeTest (Utils.floatIsEqual 0.0) Double.IsNormal floatToCoo floatFill isComplemented
125122
|> testPropertyWithConfig config (getCorrectnessTestName "float")
126123

127-
let byteFill =
128-
Vector.assignByMask context Mask.assign wgSize
129-
130-
let byteToCoo = Vector.toDense context wgSize
131-
132-
case
133-
|> makeTest ((=) 0uy) alwaysTrue byteToCoo byteFill isComplemented
134-
|> testPropertyWithConfig config (getCorrectnessTestName "byte")
135-
136-
let boolFill =
137-
Vector.assignByMask context Mask.assign wgSize
124+
let float32Fill =
125+
Vector.assignByMaskComplemented context Mask.assign wgSize
138126

139-
let boolToCoo = Vector.toDense context wgSize
127+
let float32ToCoo = Vector.toDense context wgSize
140128

141129
case
142-
|> makeTest ((=) false) alwaysTrue boolToCoo boolFill isComplemented
143-
|> testPropertyWithConfig config (getCorrectnessTestName "bool") ]
144-
145-
let tests =
146-
operationGPUTests "Backend.Vector.assignByMask tests" testFixtures
147-
148-
let testFixturesComplemented case =
149-
let getCorrectnessTestName datatype =
150-
$"Correctness on %s{datatype}, vector: %A{case.Format}"
151-
152-
let wgSize = 32
153-
let context = case.TestContext.ClContext
154-
155-
let isComplemented = true
156-
157-
[ let intFill =
158-
Vector.assignByMaskComplemented context Mask.assign wgSize
159-
160-
let intToCoo = Vector.toDense context wgSize
161-
162-
case
163-
|> makeTest ((=) 0) alwaysTrue intToCoo intFill isComplemented
164-
|> testPropertyWithConfig config (getCorrectnessTestName "int")
165-
166-
if Utils.isFloat64Available context.ClDevice then
167-
let floatFill =
168-
Vector.assignByMaskComplemented context Mask.assign wgSize
169-
170-
let floatToCoo = Vector.toDense context wgSize
171-
172-
case
173-
|> makeTest (Utils.floatIsEqual 0.0) notNane floatToCoo floatFill isComplemented
174-
|> testPropertyWithConfig config (getCorrectnessTestName "float")
130+
|> makeTest (Utils.float32IsEqual 0.0f) Single.IsNormal float32ToCoo float32Fill isComplemented
131+
|> testPropertyWithConfig config (getCorrectnessTestName "float32")
175132

176133
let byteFill =
177134
Vector.assignByMaskComplemented context Mask.assign wgSize
@@ -191,5 +148,8 @@ let testFixturesComplemented case =
191148
|> makeTest ((=) false) alwaysTrue boolToCoo boolFill isComplemented
192149
|> testPropertyWithConfig config (getCorrectnessTestName "bool") ]
193150

151+
let tests =
152+
operationGPUTests "Backend.Vector.assignByMask tests" <| testFixtures false
153+
194154
let complementedTests =
195-
operationGPUTests "Backend.Vector.assignByMaskComplemented tests" testFixturesComplemented
155+
operationGPUTests "Backend.Vector.assignByMaskComplemented tests" <| testFixtures true

tests/GraphBLAS-sharp.Tests/Vector/Convert.fs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ let logger =
1616
Log.create "Backend.Vector.Convert.Tests"
1717

1818
let config = Utils.defaultConfig
19+
1920
let wgSize = 32
2021

2122
let makeTest
@@ -46,8 +47,8 @@ let makeTest
4647
res
4748

4849
logger.debug (
49-
eventX $"Actual is {actual}"
50-
>> setField "actual" (sprintf "%A" actual)
50+
eventX "Actual is {actual}"
51+
>> setField "actual" $"%A{actual}"
5152
)
5253

5354
let expected =
@@ -57,7 +58,7 @@ let makeTest
5758

5859
let testFixtures case =
5960
let getCorrectnessTestName datatype formatFrom =
60-
sprintf "Correctness on %s, %A -> %A" datatype formatFrom case.Format
61+
sprintf $"Correctness on %s{datatype}, %A{formatFrom} -> %A{case.Format}"
6162

6263
let context = case.TestContext.ClContext
6364
let q = case.TestContext.Queue

tests/GraphBLAS-sharp.Tests/Vector/Copy.fs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ open GraphBLAS.FSharp.Backend.Objects.ClContext
1313

1414
let logger = Log.create "Vector.copy.Tests"
1515

16+
let config = Utils.defaultConfig
17+
18+
let wgSize = 32
19+
1620
let checkResult (isEqual: 'a -> 'a -> bool) (actual: Vector<'a>) (expected: Vector<'a>) =
1721

1822
Expect.equal actual.Size expected.Size "The size should be the same"
@@ -57,16 +61,13 @@ let correctnessGenericTest<'a when 'a: struct>
5761
checkResult isEqual actual expected
5862

5963
let testFixtures (case: OperationCase<VectorFormat>) =
60-
let config = Utils.defaultConfig
6164

6265
let getCorrectnessTestName datatype =
63-
sprintf "Correctness on %s, %A" datatype case.Format
66+
sprintf $"Correctness on %s{datatype}, %A{case.Format}"
6467

65-
let wgSize = 32
6668
let context = case.TestContext.ClContext
6769

6870
[ let intCopy = Vector.copy context wgSize
69-
let isZero item = item = 0
7071

7172
case
7273
|> correctnessGenericTest<int> (=) 0 intCopy
@@ -79,6 +80,12 @@ let testFixtures (case: OperationCase<VectorFormat>) =
7980
|> correctnessGenericTest<float> Utils.floatIsEqual 0.0 floatCopy
8081
|> testPropertyWithConfig config (getCorrectnessTestName "float")
8182

83+
let float32Copy = Vector.copy context wgSize
84+
85+
case
86+
|> correctnessGenericTest<float32> Utils.float32IsEqual 0.0f float32Copy
87+
|> testPropertyWithConfig config (getCorrectnessTestName "float32")
88+
8289
let boolCopy = Vector.copy context wgSize
8390

8491
case

0 commit comments

Comments
 (0)