1- module GraphBLAS.FSharp.Tests.Backend.Common.BitonicSort
1+ namespace GraphBLAS.FSharp.Tests.Backend.Common
22
33open Expecto
44open Expecto.Logging
@@ -8,78 +8,79 @@ open Brahma.FSharp
88open GraphBLAS.FSharp .Tests
99open GraphBLAS.FSharp .Tests .Context
1010
11- let logger = Log.create " BitonicSort.Tests"
11+ module BitonicSort =
12+ let logger = Log.create " BitonicSort.Tests"
1213
13- let context = defaultContext.ClContext
14+ let context = defaultContext.ClContext
1415
15- let config =
16- { Utils.defaultConfig with
17- endSize = 1000000 }
16+ let config =
17+ { Utils.defaultConfig with
18+ endSize = 1000000 }
1819
19- let wgSize = Utils.defaultWorkGroupSize
20+ let wgSize = Utils.defaultWorkGroupSize
2021
21- let q = defaultContext.Queue
22+ let q = defaultContext.Queue
2223
23- let makeTest sort ( array : ( 'n * 'n * 'a ) []) =
24- if array.Length > 0 then
25- let projection ( row : 'n ) ( col : 'n ) ( _ : 'a ) = row, col
24+ let makeTest sort ( array : ( 'n * 'n * 'a ) []) =
25+ if array.Length > 0 then
26+ let projection ( row : 'n ) ( col : 'n ) ( _ : 'a ) = row, col
2627
27- logger.debug (
28- eventX " Initial size is {size}"
29- >> setField " size" $" %A {array.Length}"
30- )
28+ logger.debug (
29+ eventX " Initial size is {size}"
30+ >> setField " size" $" %A {array.Length}"
31+ )
3132
32- let rows , cols , vals = Array.unzip3 array
33+ let rows , cols , vals = Array.unzip3 array
3334
34- use clRows = context.CreateClArray rows
35- use clColumns = context.CreateClArray cols
36- use clValues = context.CreateClArray vals
35+ use clRows = context.CreateClArray rows
36+ use clColumns = context.CreateClArray cols
37+ use clValues = context.CreateClArray vals
3738
38- let actualRows , actualCols , actualValues =
39- sort q clRows clColumns clValues
39+ let actualRows , actualCols , actualValues =
40+ sort q clRows clColumns clValues
4041
41- let rows = Array.zeroCreate< 'n> clRows.Length
42- let columns = Array.zeroCreate< 'n> clColumns.Length
43- let values = Array.zeroCreate< 'a> clValues.Length
42+ let rows = Array.zeroCreate< 'n> clRows.Length
43+ let columns = Array.zeroCreate< 'n> clColumns.Length
44+ let values = Array.zeroCreate< 'a> clValues.Length
4445
45- q.Post( Msg.CreateToHostMsg( clRows, rows))
46- q.Post( Msg.CreateToHostMsg( clColumns, columns))
46+ q.Post( Msg.CreateToHostMsg( clRows, rows))
47+ q.Post( Msg.CreateToHostMsg( clColumns, columns))
4748
48- q.PostAndReply( fun ch -> Msg.CreateToHostMsg( clValues, values, ch))
49- |> ignore
49+ q.PostAndReply( fun ch -> Msg.CreateToHostMsg( clValues, values, ch))
50+ |> ignore
5051
51- rows, columns, values
52+ rows, columns, values
5253
53- let expectedRows , expectedCols , expectedValues =
54- ( rows, cols, vals)
55- |||> Array.zip3
56- |> Array.sortBy ((<|||) projection)
57- |> Array.unzip3
54+ let expectedRows , expectedCols , expectedValues =
55+ ( rows, cols, vals)
56+ |||> Array.zip3
57+ |> Array.sortBy ((<|||) projection)
58+ |> Array.unzip3
5859
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
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
6162
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
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
6465
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
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
6768
68- let testFixtures < 'a when 'a : equality > =
69- BitonicSort.sortKeyValuesInplace< int, 'a> context wgSize
70- |> makeTest
71- |> testPropertyWithConfig config $" Correctness on %A {typeof<'a>}"
69+ let testFixtures < 'a when 'a : equality > =
70+ BitonicSort.sortKeyValuesInplace< int, 'a> context wgSize
71+ |> makeTest
72+ |> testPropertyWithConfig config $" Correctness on %A {typeof<'a>}"
7273
73- let tests =
74- q.Error.Add( fun e -> failwithf " %A " e)
74+ let tests =
75+ q.Error.Add( fun e -> failwithf " %A " e)
7576
76- [ testFixtures< int>
77+ [ testFixtures< int>
7778
78- if Utils.isFloat64Available context.ClDevice then
79- testFixtures< float>
79+ if Utils.isFloat64Available context.ClDevice then
80+ testFixtures< float>
8081
81- testFixtures< float32>
82+ testFixtures< float32>
8283
83- testFixtures< byte>
84- testFixtures< bool> ]
85- |> testList " Backend.Common.BitonicSort tests"
84+ testFixtures< byte>
85+ testFixtures< bool> ]
86+ |> testList " Backend.Common.BitonicSort tests"
0 commit comments