1- namespace GraphBLAS.FSharp.Tests.Backend.Common
1+ module GraphBLAS.FSharp.Tests.Backend.Common.BitonicSort
22
33open Expecto
44open Expecto.Logging
@@ -8,79 +8,78 @@ open Brahma.FSharp
88open GraphBLAS.FSharp .Tests
99open GraphBLAS.FSharp .Tests .Context
1010
11- module BitonicSort =
12- let logger = Log.create " BitonicSort.Tests"
11+ let logger = Log.create " BitonicSort.Tests"
1312
14- let context = defaultContext.ClContext
13+ let context = defaultContext.ClContext
1514
16- let config =
17- { Utils.defaultConfig with
18- endSize = 1000000 }
15+ let config =
16+ { Utils.defaultConfig with
17+ endSize = 1000000 }
1918
20- let wgSize = Utils.defaultWorkGroupSize
19+ let wgSize = Utils.defaultWorkGroupSize
2120
22- let q = defaultContext.Queue
21+ let q = defaultContext.Queue
2322
24- let makeTest sort ( array : ( 'n * 'n * 'a ) []) =
25- if array.Length > 0 then
26- let projection ( row : 'n ) ( col : 'n ) ( _ : 'a ) = row, col
23+ let makeTest sort ( array : ( 'n * 'n * 'a ) []) =
24+ if array.Length > 0 then
25+ let projection ( row : 'n ) ( col : 'n ) ( _ : 'a ) = row, col
2726
28- logger.debug (
29- eventX " Initial size is {size}"
30- >> setField " size" $" %A {array.Length}"
31- )
27+ logger.debug (
28+ eventX " Initial size is {size}"
29+ >> setField " size" $" %A {array.Length}"
30+ )
3231
33- let rows , cols , vals = Array.unzip3 array
32+ let rows , cols , vals = Array.unzip3 array
3433
35- use clRows = context.CreateClArray rows
36- use clColumns = context.CreateClArray cols
37- use clValues = context.CreateClArray vals
34+ use clRows = context.CreateClArray rows
35+ use clColumns = context.CreateClArray cols
36+ use clValues = context.CreateClArray vals
3837
39- let actualRows , actualCols , actualValues =
40- sort q clRows clColumns clValues
38+ let actualRows , actualCols , actualValues =
39+ sort q clRows clColumns clValues
4140
42- let rows = Array.zeroCreate< 'n> clRows.Length
43- let columns = Array.zeroCreate< 'n> clColumns.Length
44- let values = Array.zeroCreate< 'a> clValues.Length
41+ let rows = Array.zeroCreate< 'n> clRows.Length
42+ let columns = Array.zeroCreate< 'n> clColumns.Length
43+ let values = Array.zeroCreate< 'a> clValues.Length
4544
46- q.Post( Msg.CreateToHostMsg( clRows, rows))
47- q.Post( Msg.CreateToHostMsg( clColumns, columns))
45+ q.Post( Msg.CreateToHostMsg( clRows, rows))
46+ q.Post( Msg.CreateToHostMsg( clColumns, columns))
4847
49- q.PostAndReply( fun ch -> Msg.CreateToHostMsg( clValues, values, ch))
50- |> ignore
48+ q.PostAndReply( fun ch -> Msg.CreateToHostMsg( clValues, values, ch))
49+ |> ignore
5150
52- rows, columns, values
51+ rows, columns, values
5352
54- let expectedRows , expectedCols , expectedValues =
55- ( rows, cols, vals)
56- |||> Array.zip3
57- |> Array.sortBy ((<|||) projection)
58- |> Array.unzip3
53+ let expectedRows , expectedCols , expectedValues =
54+ ( rows, cols, vals)
55+ |||> Array.zip3
56+ |> Array.sortBy ((<|||) projection)
57+ |> Array.unzip3
5958
60- $" Row arrays should be equal. Actual is \n %A {actualRows}, expected \n %A {expectedRows}, input is \n %A {rows}"
61- |> Utils.compareArrays (=) actualRows expectedRows
59+ $" Row arrays should be equal. Actual is \n %A {actualRows}, expected \n %A {expectedRows}, input is \n %A {rows}"
60+ |> Utils.compareArrays (=) actualRows expectedRows
6261
63- $" Column arrays should be equal. Actual is \n %A {actualCols}, expected \n %A {expectedCols}, input is \n %A {cols}"
64- |> Utils.compareArrays (=) actualCols expectedCols
62+ $" Column arrays should be equal. Actual is \n %A {actualCols}, expected \n %A {expectedCols}, input is \n %A {cols}"
63+ |> Utils.compareArrays (=) actualCols expectedCols
6564
66- $" Value arrays should be equal. Actual is \n %A {actualValues}, expected \n %A {expectedValues}, input is \n %A {vals}"
67- |> Utils.compareArrays (=) actualValues expectedValues
65+ $" Value arrays should be equal. Actual is \n %A {actualValues}, expected \n %A {expectedValues}, input is \n %A {vals}"
66+ |> Utils.compareArrays (=) actualValues expectedValues
6867
69- let testFixtures < 'a when 'a : equality > =
70- BitonicSort.sortKeyValuesInplace< int, 'a> context wgSize
71- |> makeTest
72- |> testPropertyWithConfig config $" Correctness on %A {typeof<'a>}"
68+ let testFixtures < 'a when 'a : equality > =
69+ BitonicSort.sortKeyValuesInplace< int, 'a> context wgSize
70+ |> makeTest
71+ |> testPropertyWithConfig config $" Correctness on %A {typeof<'a>}"
7372
74- let tests =
75- q.Error.Add( fun e -> failwithf " %A " e)
73+ let tests =
74+ q.Error.Add( fun e -> failwithf " %A " e)
7675
77- [ testFixtures< int>
76+ [ testFixtures< int>
7877
79- if Utils.isFloat64Available context.ClDevice then
80- testFixtures< float>
78+ if Utils.isFloat64Available context.ClDevice then
79+ testFixtures< float>
8180
82- testFixtures< float32>
81+ testFixtures< float32>
8382
84- testFixtures< byte>
85- testFixtures< bool> ]
86- |> testList " Backend.Common.BitonicSort tests"
83+ testFixtures< byte>
84+ testFixtures< bool> ]
85+ |> testList " Backend.Common.BitonicSort tests"
0 commit comments