11namespace GraphBLAS.FSharp.Benchmarks
22
33open GraphBLAS.FSharp
4- open GraphBLAS.FSharp .Algorithms
54open BenchmarkDotNet.Attributes
6- open BenchmarkDotNet.Configs
7- open BenchmarkDotNet.Columns
85open BenchmarkDotNet.Engines
96open System.IO
10- open System
117open MatrixBackend
128open GraphBLAS.FSharp .Predefined
139open MathNet.Numerics
1410open Brahma.FSharp .OpenCL .WorkflowBuilder .Basic
1511open Brahma.FSharp .OpenCL .WorkflowBuilder .Evaluation
16- open Brahma.FSharp .OpenCL .Extensions
1712open OpenCL.Net
1813
14+ module Float32Monoid =
15+ let add : Monoid < float32 > = {
16+ Zero = 0. f
17+ Append = BinaryOp <@ ( + ) @>
18+ }
19+
20+ module Float32Semiring =
21+ let addMult : Semiring < float32 > = {
22+ PlusMonoid = Float32Monoid.add
23+ Times = BinaryOp <@ ( * ) @>
24+ }
25+
1926type ClContext = ClContext of OpenCLEvaluationContext
2027with
2128 override this.ToString () =
3946
4047[<MinColumn; MaxColumn>]
4148[<Config( typeof< Config>) >]
42- [<SimpleJob( RunStrategy.ColdStart , targetCount= 1 ) >]
43- type EWiseAddBenchmarks () =
44- let mutable leftCOO = Unchecked.defaultof< Matrix< float >>
45- let mutable rightCOO = Unchecked.defaultof< Matrix< float >>
49+ [<SimpleJob( RunStrategy.Monitoring , targetCount= 3 ) >]
50+ type EWiseAddBenchmarks4Float32 () =
51+ let mutable leftCOO = Unchecked.defaultof< Matrix< float32 >>
52+ let mutable rightCOO = Unchecked.defaultof< Matrix< float32 >>
4653
47- let mutable leftCSR = Unchecked.defaultof< Matrix< float >>
48- let mutable rightCSR = Unchecked.defaultof< Matrix< float >>
54+ let mutable leftCSR = Unchecked.defaultof< Matrix< float32 >>
55+ let mutable rightCSR = Unchecked.defaultof< Matrix< float32 >>
4956
5057 let mutable leftMathNetSparse =
51- Unchecked.defaultof< LinearAlgebra.Matrix< float >>
58+ Unchecked.defaultof< LinearAlgebra.Matrix< float32 >>
5259
5360 let mutable rightMathNetSparse =
54- Unchecked.defaultof< LinearAlgebra.Matrix< float >>
61+ Unchecked.defaultof< LinearAlgebra.Matrix< float32 >>
5562
56- let mutable firstMatrix = Unchecked.defaultof< COOFormat< float >>
57- let mutable secondMatrix = Unchecked.defaultof< COOFormat< float >>
63+ let mutable firstMatrix = Unchecked.defaultof< COOFormat< float32 >>
64+ let mutable secondMatrix = Unchecked.defaultof< COOFormat< float32 >>
5865
5966 do
6067 Control.UseNativeMKL()
68+ Control.UseMultiThreading()
6169
6270 [<ParamsSource( " InputMatricesProvider" ) >]
6371 member val InputMatrix = Unchecked.defaultof< InputMatrixFormat> with get, set
6472
6573 [<GlobalSetup>]
6674 member this.FormInputData () =
67- let transposeCOO ( matrix : COOFormat < float >) =
75+ let transposeCOO ( matrix : COOFormat < float32 >) =
6876 ( matrix.Rows, matrix.Columns, matrix.Values)
6977 |||> Array.zip3
7078 |> Array.sortBy ( fun ( row , col , value ) -> row)
@@ -85,7 +93,7 @@ type EWiseAddBenchmarks() =
8593 [<IterationSetup( Target= " EWiseAdditionCOO" ) >]
8694 member this.BuildCOO () =
8795 leftCOO <-
88- Matrix.Build< float >(
96+ Matrix.Build< float32 >(
8997 firstMatrix.RowCount,
9098 firstMatrix.ColumnCount,
9199 firstMatrix.Rows,
@@ -95,7 +103,7 @@ type EWiseAddBenchmarks() =
95103 )
96104
97105 rightCOO <-
98- Matrix.Build< float >(
106+ Matrix.Build< float32 >(
99107 secondMatrix.RowCount,
100108 secondMatrix.ColumnCount,
101109 secondMatrix.Rows,
@@ -107,7 +115,7 @@ type EWiseAddBenchmarks() =
107115 [<IterationSetup( Target= " EWiseAdditionCSR" ) >]
108116 member this.BuildCSR () =
109117 leftCSR <-
110- Matrix.Build< float >(
118+ Matrix.Build< float32 >(
111119 firstMatrix.RowCount,
112120 firstMatrix.ColumnCount,
113121 firstMatrix.Rows,
@@ -117,7 +125,7 @@ type EWiseAddBenchmarks() =
117125 )
118126
119127 rightCSR <-
120- Matrix.Build< float >(
128+ Matrix.Build< float32 >(
121129 secondMatrix.RowCount,
122130 secondMatrix.ColumnCount,
123131 secondMatrix.Rows,
@@ -144,14 +152,14 @@ type EWiseAddBenchmarks() =
144152 [<ArgumentsSource( " AvaliableContextsProvider" ) >]
145153 member this.EWiseAdditionCOO ( clContext : ClContext ) =
146154 let ( ClContext context ) = clContext
147- leftCOO.EWiseAdd rightCOO None FloatSemiring .addMult
155+ leftCOO.EWiseAdd rightCOO None Float32Semiring .addMult
148156 |> context.RunSync
149157
150158 [<Benchmark>]
151159 [<ArgumentsSource( " AvaliableContextsProvider" ) >]
152160 member this.EWiseAdditionCSR ( clContext : ClContext ) =
153161 let ( ClContext context ) = clContext
154- leftCSR.EWiseAdd rightCOO None FloatSemiring .addMult
162+ leftCSR.EWiseAdd rightCOO None Float32Semiring .addMult
155163 |> context.RunSync
156164
157165 [<Benchmark( Baseline= true ) >]
@@ -162,6 +170,8 @@ type EWiseAddBenchmarks() =
162170 let matricesFilenames =
163171 seq {
164172 " arc130.mtx"
173+ " linux_call_graph.mtx"
174+ " webbase-1M.mtx"
165175 }
166176
167177 let getFullPathToMatrix filename =
@@ -187,7 +197,7 @@ type EWiseAddBenchmarks() =
187197 |> List.map
188198 ( fun _ ->
189199 streamReader.ReadLine() .Split( ' ' )
190- |> ( fun line -> int line.[ 0 ], int line.[ 1 ], float line.[ 2 ]))
200+ |> ( fun line -> int line.[ 0 ], int line.[ 1 ], float32 line.[ 2 ]))
191201 |> List.toArray
192202 |> Array.sortBy ( fun ( row , _ , _ ) -> row)
193203 |> Array.unzip3
@@ -219,7 +229,7 @@ type EWiseAddBenchmarks() =
219229 static member AvaliableContextsProvider =
220230 let mutable e = ErrorCode.Unknown
221231 Cl.GetPlatformIDs & e
222- |> Array.collect ( fun platform -> Cl.GetDeviceIDs( platform, DeviceType.Cpu , & e))
232+ |> Array.collect ( fun platform -> Cl.GetDeviceIDs( platform, DeviceType.All , & e))
223233 |> Seq.ofArray
224234 |> Seq.map
225235 ( fun device ->
0 commit comments