Skip to content

Commit d0bfc64

Browse files
committed
Optimized element-wise addition for matrices
1 parent 7f53f84 commit d0bfc64

7 files changed

Lines changed: 4314619 additions & 35 deletions

File tree

benchmarks/GraphBLAS-sharp.Benchmarks/BenchmarksEWiseAdd.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ type EWiseAddBenchmarks() =
5151
let transposeCOO (matrix: COOFormat<float32>) =
5252
(matrix.Rows, matrix.Columns, matrix.Values)
5353
|||> Array.zip3
54-
|> Array.sortBy (fun (row, col, value) -> row)
54+
|> Array.sortBy (fun (row, col, value) -> col, row)
5555
|> Array.unzip3
5656
|>
5757
fun (rows, cols, values) ->

benchmarks/GraphBLAS-sharp.Benchmarks/Utils.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ module GraphReader =
2323
streamReader.ReadLine().Split(' ')
2424
|> (fun line -> int line.[0], int line.[1], float32 line.[2]))
2525
|> List.toArray
26-
|> Array.sortBy (fun (row, _, _) -> row)
26+
|> Array.sortBy (fun (row, col, _) -> row, col)
2727
|> Array.unzip3
2828
|>
2929
fun (rows, cols, values) ->

src/App/Program.fs

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ let main argv =
2323
// let m = n - 1
2424
// m - m % workGroupSize + workGroupSize
2525

26-
// let arr = [|5;4;3;2;1|]
26+
// let arr = Array.init 1000000 (fun _ -> 1)
2727
// let arrLength = arr.Length
28-
// let arr2 = [|6;7;8;9;10|]
28+
// let arr2 = Array.copy arr
2929
// let command =
3030
// <@
3131
// fun (ndRange: _1D)
@@ -44,16 +44,6 @@ let main argv =
4444
// ndRange
4545
// arr
4646
// arr2
47-
// let wf =
48-
// opencl {
49-
// do! RunCommand command binder
50-
// let! _ = ToHost arr
51-
// let! _ = ToHost arr2
52-
// ()
53-
// }
54-
// oclContext.RunSync wf |> ignore
55-
// for i in 0 .. arr.Length - 1 do
56-
// printfn "%i, %i" arr.[i] arr2.[i]
5747

5848
let readMatrix (fileName: string) =
5949
use streamReader = new StreamReader(fileName)
@@ -99,10 +89,10 @@ let main argv =
9989
// COOMatrix<float>(100, 100,
10090
// [|0;0;2|], [|0;1;2|], [|-1.1;5.72;-6.0|])
10191

102-
let rows, cols, values, nrows, ncols = readMatrix "matrix.mtx"
92+
let rows, cols, values, nrows, ncols = readMatrix "webbase-1M.mtx"
10393
let leftMatrix = COOMatrix<float>(nrows, ncols, rows, cols, values)
10494

105-
let rows, cols, values, nrows, ncols = readMatrix "matrix2.mtx"
95+
//let rows, cols, values, nrows, ncols = readMatrix "webbase-1M.mtx"
10696
let rightMatrix = COOMatrix<float>(nrows, ncols, rows, cols, values)
10797

10898
let workflow =
@@ -113,17 +103,17 @@ let main argv =
113103

114104
let resultMatrix : COOMatrix<float> = downcast oclContext.RunSync workflow
115105

116-
let rows = resultMatrix.Rows
117-
let columns = resultMatrix.Columns
118-
let values = resultMatrix.Values
106+
// let rows = resultMatrix.Rows
107+
// let columns = resultMatrix.Columns
108+
// let values = resultMatrix.Values
119109

120110
// for i in 0 .. values.Length - 1 do
121111
// printfn "(%i, %i, %A)" rows.[i] columns.[i] values.[i]
122112

123-
for i in 0 .. values.Length / 2 - 1 do
124-
printfn "(%i, %i, %A)" rows.[i] columns.[i] values.[i]
125-
printfn "========================================"
126-
for i in values.Length / 2 .. values.Length - 1 do
127-
printfn "(%i, %i, %A)" rows.[i] columns.[i] values.[i]
113+
// for i in 0 .. values.Length / 2 - 1 do
114+
// printfn "(%i, %i, %A)" rows.[i] columns.[i] values.[i]
115+
// printfn "========================================"
116+
// for i in values.Length / 2 .. values.Length - 1 do
117+
// printfn "(%i, %i, %A)" rows.[i] columns.[i] values.[i]
128118

129119
0

0 commit comments

Comments
 (0)