@@ -13,33 +13,51 @@ let logger = Log.create "ClArray.PrefixSum.Tests"
1313
1414let context = defaultContext.ClContext
1515
16- let config = Tests.Utils.defaultConfig
16+ let config =
17+ { Tests.Utils.defaultConfig with
18+ maxTest = 20
19+ startSize = 1
20+ endSize = 1000000 }
1721
1822let wgSize = 128
1923
2024let q = defaultContext.Queue
2125
22- let makeTest plus zero isEqual scan ( array : 'a []) =
26+ let makeTest plus zero isEqual scanInclude scanExclude ( array : 'a []) =
2327 if array.Length > 0 then
28+ // Exclude
29+ let actual , actualSum =
30+ let clArray = context.CreateClArray array
31+ let ( total : ClCell < _ >) = scanExclude q clArray
32+
33+ let actual = clArray.ToHostAndFree q
34+ let actualSum = total.ToHostAndFree q
35+
36+ actual, actualSum
37+
38+ let expected , expectedSum =
39+ array
40+ |> Array.mapFold
41+ ( fun s t ->
42+ let a = plus s t
43+ s, a)
44+ zero
2445
25- logger.debug (
26- eventX $" Array is %A {array}\n "
27- >> setField " array" ( sprintf " %A " array)
28- )
46+ " Arrays for exclude should be the same"
47+ |> Tests.Utils.compareArrays isEqual actual expected
48+
49+ " Total sums for exclude should be equal"
50+ |> Expect.equal actualSum expectedSum
2951
52+ // Include
3053 let actual , actualSum =
3154 let clArray = context.CreateClArray array
32- let ( total : ClCell < _ >) = scan q clArray
55+ let ( total : ClCell < _ >) = scanInclude q clArray zero
3356
3457 let actual = clArray.ToHostAndFree q
3558 let actualSum = total.ToHostAndFree q
3659 actual, actualSum
3760
38- logger.debug (
39- eventX " Actual is {actual}\n "
40- >> setField " actual" ( sprintf " %A " actual)
41- )
42-
4361 let expected , expectedSum =
4462 array
4563 |> Array.mapFold
@@ -48,20 +66,15 @@ let makeTest plus zero isEqual scan (array: 'a []) =
4866 s, a)
4967 zero
5068
51- logger.debug (
52- eventX " Expected is {expected}\n "
53- >> setField " expected" ( sprintf " %A " expected)
54- )
55-
56- " Total sums should be equal"
69+ " Total sums for include should be equal"
5770 |> Expect.equal actualSum expectedSum
5871
59- " Arrays should be the same"
72+ " Arrays for include should be the same"
6073 |> Tests.Utils.compareArrays isEqual actual expected
6174
6275let testFixtures plus plusQ zero isEqual name =
63- Common. PrefixSum.runExcludeInPlace plusQ zero context wgSize
64- |> makeTest plus zero isEqual
76+ ( PrefixSum.runIncludeInPlace plusQ context wgSize , PrefixSum.runExcludeInPlace plusQ zero context wgSize)
77+ || > makeTest plus zero isEqual
6578 |> testPropertyWithConfig config $" Correctness on %s {name}"
6679
6780let tests =
0 commit comments