@@ -6,47 +6,19 @@ open Expecto.Logging.Message
66open GraphBLAS.FSharp .Backend .Common
77open Brahma.FSharp
88open GraphBLAS.FSharp .Tests .Utils
9- open OpenCL.Net
109
1110let logger = Log.create " BitonicSort.Tests"
1211
13- let testContext =
14- " "
15- |> avaliableContexts
16- |> Seq.filter
17- ( fun context ->
18- let mutable e = ErrorCode.Unknown
19- let device = context.ClContext.ClDevice.Device
12+ let makeTest ( context : ClContext ) ( q : MailboxProcessor < _ >) sort ( array : ( 'n * 'n * 'a ) []) =
13+ if array.Length > 0 then
14+ let projection ( row : 'n ) ( col : 'n ) ( v : 'a ) = row, col
2015
21- let deviceType =
22- Cl
23- .GetDeviceInfo( device, DeviceInfo.Type, & e)
24- .CastTo< DeviceType>()
25-
26- deviceType = DeviceType.Gpu)
27- |> Seq.tryHead
28-
29- let makeTest ( context : ClContext ) ( q : MailboxProcessor < _ >) sort ( filter : 'a -> bool ) ( array : ( 'n * 'n * 'a ) []) =
30- let projection ( row : 'n ) ( col : 'n ) ( v : 'a ) = row, col
31-
32- let rows , cols , vals =
33- array
34- |> Array.distinctBy ((<|||) projection)
35- |> Array.filter ( fun ( _ , _ , v ) -> filter v)
36- |> Array.unzip3
37-
38- if rows.Length > 0 then
3916 logger.debug (
4017 eventX " Initial size is {size}"
41- >> setField " size" ( sprintf " %A " rows .Length)
18+ >> setField " size" ( sprintf " %A " array .Length)
4219 )
4320
44- // logger.debug (
45- // eventX "Initial are {rows}, {cols}, {vals}"
46- // >> setField "rows" (sprintf "%A" rows)
47- // >> setField "cols" (sprintf "%A" cols)
48- // >> setField "vals" (sprintf "%A" vals)
49- // )
21+ let rows , cols , vals = Array.unzip3 array
5022
5123 use clRows = context.CreateClArray rows
5224 use clCols = context.CreateClArray cols
@@ -67,56 +39,46 @@ let makeTest (context: ClContext) (q: MailboxProcessor<_>) sort (filter: 'a -> b
6739
6840 rows, cols, vals
6941
70- // logger.debug (
71- // eventX "Actual are {actualRows}, {actualCols}, {actualVals}"
72- // >> setField "actualRows" (sprintf "%A" actualRows)
73- // >> setField "actualCols" (sprintf "%A" actualCols)
74- // >> setField "actualVals" (sprintf "%A" actualVals)
75- // )
76-
7742 let expectedRows , expectedCols , expectedVals =
7843 ( rows, cols, vals)
7944 |||> Array.zip3
8045 |> Array.sortBy ((<|||) projection)
8146 |> Array.unzip3
8247
8348 ( sprintf " Row arrays should be equal. Actual is \n %A , expected \n %A , input is \n %A " actualRows expectedRows rows)
84- |> Expect.sequenceEqual actualRows expectedRows
49+ |> compareArrays (=) actualRows expectedRows
8550
8651 ( sprintf
8752 " Column arrays should be equal. Actual is \n %A , expected \n %A , input is \n %A "
8853 actualCols
8954 expectedCols
9055 cols)
91- |> Expect.sequenceEqual actualCols expectedCols
56+ |> compareArrays (=) actualCols expectedCols
9257
9358 ( sprintf
9459 " Value arrays should be equal. Actual is \n %A , expected \n %A , input is \n %A "
9560 actualVals
9661 expectedVals
9762 vals)
98- |> Expect.sequenceEqual actualVals expectedVals
63+ |> compareArrays (=) actualVals expectedVals
9964
100- let testFixtures < 'a when 'a : equality > config wgSize context q filter =
65+ let testFixtures < 'a when 'a : equality > config wgSize context q =
10166 let sort : MailboxProcessor < _ > -> ClArray < int > -> ClArray < int > -> ClArray < 'a > -> unit =
10267 BitonicSort.sortKeyValuesInplace context wgSize
10368
104- makeTest context q sort filter
69+ makeTest context q sort
10570 |> testPropertyWithConfig config ( sprintf " Correctness on %A " typeof< 'a>)
10671
10772let tests =
108- match testContext with
109- | Some c ->
110- let context = c.ClContext
111- let config = defaultConfig
112-
113- let wgSize = 128
114- let q = c.Queue
115- q.Error.Add( fun e -> failwithf " %A " e)
116-
117- [ testFixtures< int> config wgSize context q ( fun _ -> true )
118- testFixtures< float> config wgSize context q ( System.Double.IsNaN >> not )
119- testFixtures< byte> config wgSize context q ( fun _ -> true )
120- testFixtures< bool> config wgSize context q ( fun _ -> true ) ]
121- | _ -> []
73+ let context = defaultContext.ClContext
74+ let config = { defaultConfig with endSize = 1000000 }
75+
76+ let wgSize = 32
77+ let q = defaultContext.Queue
78+ q.Error.Add( fun e -> failwithf " %A " e)
79+
80+ [ testFixtures< int> config wgSize context q
81+ testFixtures< float> config wgSize context q
82+ testFixtures< byte> config wgSize context q
83+ testFixtures< bool> config wgSize context q ]
12284 |> testList " Backend.Common.BitonicSort tests"
0 commit comments