Skip to content

Commit 1858c02

Browse files
committed
refactor: ClArray.replicate
1 parent bdf260a commit 1858c02

3 files changed

Lines changed: 31 additions & 62 deletions

File tree

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,8 @@ let makeTest<'a when 'a: equality> copyFun (array: array<'a>) = // TODO()
3131
>> setField "actual" $"%A{actual}"
3232
)
3333

34-
let expected = array
35-
let actual = actual
36-
3734
"Array should be equals to original"
38-
|> Expect.sequenceEqual actual expected
35+
|> Expect.sequenceEqual actual array
3936

4037
let creatTest<'a when 'a: equality> =
4138
ClArray.copy context wgSize

tests/GraphBLAS-sharp.Tests/Common/Reduce.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ let context = Context.defaultContext.ClContext
1414
let config = Utils.defaultConfig
1515

1616
let wgSize = 32
17+
1718
let q = Context.defaultContext.Queue
1819

1920
let makeTest (reduce: MailboxProcessor<_> -> ClArray<'a> -> ClCell<'a>) plus zero (array: 'a []) =

tests/GraphBLAS-sharp.Tests/Common/Replicate.fs

Lines changed: 29 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -12,76 +12,47 @@ let logger = Log.create "Replicate.Tests"
1212

1313
let context = Context.defaultContext.ClContext
1414

15-
let testCases =
16-
let q = Context.defaultContext.Queue
17-
q.Error.Add(fun e -> failwithf "%A" e)
18-
19-
let getReplicateFun replicate =
20-
fun (array: array<_>) ->
21-
let wgSize =
22-
[| for i in 0 .. 5 -> pown 2 i |]
23-
|> Array.filter (fun i -> array.Length % i = 0)
24-
|> Array.max
15+
let q = Context.defaultContext.Queue
2516

26-
replicate wgSize q HostInterop
17+
let workGroupSize = 32
2718

28-
let makeTest getReplicateFun (array: array<'a>) filterFun i =
29-
if array.Length > 0 && i > 0 then
30-
use clArray = context.CreateClArray array
19+
let makeTest<'a when 'a: equality> replicateFun (array: array<'a>) i =
20+
if array.Length > 0 && i > 0 then
21+
use clArray = context.CreateClArray array
3122

32-
let replicate = getReplicateFun array
23+
let actual =
24+
use clActual: ClArray<'a> = replicateFun q HostInterop clArray i
3325

34-
let actual =
35-
use clActual: ClArray<'a> = replicate clArray i
26+
let actual = Array.zeroCreate clActual.Length
27+
q.PostAndReply(fun ch -> Msg.CreateToHostMsg(clActual, actual, ch))
3628

37-
let actual = Array.zeroCreate clActual.Length
38-
q.PostAndReply(fun ch -> Msg.CreateToHostMsg(clActual, actual, ch))
29+
logger.debug (
30+
eventX $"Actual is {actual}"
31+
>> setField "actual" $"%A{actual}"
32+
)
3933

40-
logger.debug (
41-
eventX $"Actual is {actual}"
42-
>> setField "actual" $"%A{actual}"
43-
)
34+
let expected =
35+
array |> Array.replicate i |> Array.concat
4436

45-
let expected =
46-
array
47-
|> Array.replicate i
48-
|> Array.concat
49-
|> filterFun
37+
$"Array should contains %i{i} copies of the original one"
38+
|> Expect.sequenceEqual actual expected
5039

51-
let actual = filterFun actual
40+
let createTest<'a when 'a: equality> =
41+
ClArray.replicate context workGroupSize
42+
|> makeTest<'a>
43+
|> testProperty $"Correctness test on random %A{typeof<'a>} arrays"
5244

53-
$"Array should contains %i{i} copies of the original one"
54-
|> Expect.sequenceEqual actual expected
55-
56-
[ testProperty "Correctness test on random int arrays"
57-
<| (let replicate = ClArray.replicate context
58-
let getReplicateFun = getReplicateFun replicate
59-
fun (array: array<int>) -> makeTest getReplicateFun array id)
60-
61-
testProperty "Correctness test on random bool arrays"
62-
<| (let replicate = ClArray.replicate context
63-
let getReplicateFun = getReplicateFun replicate
45+
let testCases =
46+
q.Error.Add(fun e -> failwithf "%A" e)
6447

65-
fun (array: array<bool>) -> makeTest getReplicateFun array id)
48+
[ createTest<int>
49+
createTest<bool>
6650

6751
if Utils.isFloat64Available context.ClDevice then
68-
testProperty "Correctness test on random float arrays"
69-
<| (let replicate = ClArray.replicate context
70-
let getReplicateFun = getReplicateFun replicate
71-
72-
fun (array: array<float>) -> makeTest getReplicateFun array (Array.filter System.Double.IsNormal))
73-
74-
testProperty "Correctness test on random float32 arrays"
75-
<| (let replicate = ClArray.replicate context
76-
let getReplicateFun = getReplicateFun replicate
77-
78-
fun (array: array<float32>) -> makeTest getReplicateFun array (Array.filter System.Single.IsNormal))
79-
80-
testProperty "Correctness test on random byte arrays"
81-
<| (let replicate = ClArray.replicate context
82-
let getReplicateFun = getReplicateFun replicate
52+
createTest<float>
8353

84-
fun (array: array<byte>) -> makeTest getReplicateFun array id) ]
54+
createTest<float32>
55+
createTest<byte> ]
8556

8657
let tests =
87-
testCases |> testList "Array.replicate tests"
58+
testCases |> testList "ClArray.replicate tests"

0 commit comments

Comments
 (0)