Skip to content

Commit cb6b43c

Browse files
committed
Add bench datasets; change datatype to float32
1 parent 8719988 commit cb6b43c

5 files changed

Lines changed: 4314565 additions & 29 deletions

File tree

benchmarks/GraphBLAS-sharp.Benchmarks/BenchmarksEWiseAdd.fs

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
11
namespace GraphBLAS.FSharp.Benchmarks
22

33
open GraphBLAS.FSharp
4-
open GraphBLAS.FSharp.Algorithms
54
open BenchmarkDotNet.Attributes
6-
open BenchmarkDotNet.Configs
7-
open BenchmarkDotNet.Columns
85
open BenchmarkDotNet.Engines
96
open System.IO
10-
open System
117
open MatrixBackend
128
open GraphBLAS.FSharp.Predefined
139
open MathNet.Numerics
1410
open Brahma.FSharp.OpenCL.WorkflowBuilder.Basic
1511
open Brahma.FSharp.OpenCL.WorkflowBuilder.Evaluation
16-
open Brahma.FSharp.OpenCL.Extensions
1712
open 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+
1926
type ClContext = ClContext of OpenCLEvaluationContext
2027
with
2128
override this.ToString() =
@@ -39,32 +46,33 @@ with
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 ->

benchmarks/GraphBLAS-sharp.Benchmarks/Config.fs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ open GraphBLAS.FSharp
99

1010
type InputMatrixFormat = {
1111
MatrixName: string
12-
MatrixStructure: COOFormat<float>
12+
MatrixStructure: COOFormat<float32>
1313
}
1414
with
1515
override this.ToString() =
@@ -45,8 +45,11 @@ type TEPSColumn() =
4545
inputMatrix.MatrixStructure.ColumnCount,
4646
inputMatrix.MatrixStructure.Values.Length
4747
let (vertices, edges) = if nrows = ncols then (nrows, nnz) else (ncols, nrows)
48-
let meanTime = summary.[benchmarkCase].ResultStatistics.Mean
49-
sprintf "%f" <| float edges / (meanTime * 1e-6)
48+
if isNull summary.[benchmarkCase].ResultStatistics then
49+
"NA"
50+
else
51+
let meanTime = summary.[benchmarkCase].ResultStatistics.Mean
52+
sprintf "%f" <| float edges / (meanTime * 1e-6)
5053
member this.GetValue(summary: Summary, benchmarkCase: BenchmarkCase, style: SummaryStyle): string =
5154
(this :> IColumn).GetValue(summary, benchmarkCase)
5255
member this.Id: string = "TEPSColumn"
@@ -71,7 +74,7 @@ type Config() =
7174

7275
base.AddFilter(
7376
DisjunctionFilter(
74-
NameFilter(fun name -> name.Contains "MathNet") :> IFilter,
77+
// NameFilter(fun name -> name.Contains "MathNet") :> IFilter,
7578
NameFilter(fun name -> name.Contains "COO") :> IFilter
7679
)
7780
)

0 commit comments

Comments
 (0)