@@ -7,68 +7,69 @@ open GraphBLAS.FSharp.Backend.Common
77open Brahma.OpenCL
88
99module internal Mxv =
10+ ()
1011 // not finished
11- let pcsr ( matrix : CSRMatrix < 'a >) ( vector : BitmapVector < 'a >) mask ( semiring : ISemiring < 'a >) = opencl {
12- let ( ClosedBinaryOp plus ) = semiring.Plus
13- let ( ClosedBinaryOp times ) = semiring.Times
12+ // let pcsr (matrix: CSRMatrix<'a>) (vector: BitmapVector<'a>) mask (semiring: ISemiring<'a>) = opencl {
13+ // let (ClosedBinaryOp plus) = semiring.Plus
14+ // let (ClosedBinaryOp times) = semiring.Times
1415
15- let matrixLength = matrix.Values.Length
16+ // let matrixLength = matrix.Values.Length
1617
17- let kernel1 =
18- <@
19- fun ( ndRange : _1D )
20- ( matrixColumns : int [])
21- ( matrixValues : 'a [])
22- ( vectorBitmap : bool [])
23- ( vectorValues : 'a [])
24- ( intermediateArray : 'a []) ->
18+ // let kernel1 =
19+ // <@
20+ // fun (ndRange: _1D)
21+ // (matrixColumns: int[])
22+ // (matrixValues: 'a[])
23+ // (vectorBitmap: bool[])
24+ // (vectorValues: 'a[])
25+ // (intermediateArray: 'a[]) ->
2526
26- let i = ndRange.GlobalID0
27- if i < matrixLength && vectorBitmap.[ i] then
28- let value = matrixValues.[ i]
29- let column = matrixColumns.[ i]
30- intermediateArray.[ i] <- (% times) value vectorValues.[ column]
31- @>
27+ // let i = ndRange.GlobalID0
28+ // if i < matrixLength && vectorBitmap.[i] then
29+ // let value = matrixValues.[i]
30+ // let column = matrixColumns.[i]
31+ // intermediateArray.[i] <- (%times) value vectorValues.[column]
32+ // @>
3233
33- let kernel2 =
34- <@
35- fun ( ndRange : _1D )
36- ( intermediateArray : 'a [])
37- ( matrixPtr : int [])
38- ( outputVector : 'a []) ->
34+ // let kernel2 =
35+ // <@
36+ // fun (ndRange: _1D)
37+ // (intermediateArray: 'a[])
38+ // (matrixPtr: int[])
39+ // (outputVector: 'a[]) ->
3940
40- let gid = ndRange.GlobalID0
41- let lid = ndRange.LocalID0
41+ // let gid = ndRange.GlobalID0
42+ // let lid = ndRange.LocalID0
4243
43- let localPtr = localArray< int> ( Utils.workGroupSize + 1 )
44- localPtr.[ lid] <- matrixPtr.[ gid]
45- if lid = 0 then
46- localPtr.[ Utils.workGroupSize] <- matrixPtr.[ gid + Utils.workGroupSize]
47- barrier ()
48- @>
44+ // let localPtr = localArray<int> (Utils.workGroupSize + 1)
45+ // localPtr.[lid] <- matrixPtr.[gid]
46+ // if lid = 0 then
47+ // localPtr.[Utils.workGroupSize] <- matrixPtr.[gid + Utils.workGroupSize]
48+ // barrier ()
49+ // @>
4950
50- let intermediateArray = Array.zeroCreate< 'a> matrixLength
51- do ! RunCommand kernel1 <| fun kernelPrepare ->
52- let range = _ 1D( Utils.workSize matrixLength, Utils.workGroupSize)
53- kernelPrepare
54- range
55- matrix.ColumnIndices
56- matrix.Values
57- vector.Bitmap
58- vector.Values
59- intermediateArray
51+ // let intermediateArray = Array.zeroCreate<'a> matrixLength
52+ // do! RunCommand kernel1 <| fun kernelPrepare ->
53+ // let range = _1D(Utils.workSize matrixLength, Utils.workGroupSize)
54+ // kernelPrepare
55+ // range
56+ // matrix.ColumnIndices
57+ // matrix.Values
58+ // vector.Bitmap
59+ // vector.Values
60+ // intermediateArray
6061
61- let outputVector = Array.zeroCreate< 'a> matrix.RowCount
62- do ! RunCommand kernel2 <| fun kernelPrepare ->
63- let range = _ 1D( Utils.workSize matrixLength, Utils.workGroupSize)
64- kernelPrepare
65- range
66- intermediateArray
67- matrix.RowPointers
68- outputVector
62+ // let outputVector = Array.zeroCreate<'a> matrix.RowCount
63+ // do! RunCommand kernel2 <| fun kernelPrepare ->
64+ // let range = _1D(Utils.workSize matrixLength, Utils.workGroupSize)
65+ // kernelPrepare
66+ // range
67+ // intermediateArray
68+ // matrix.RowPointers
69+ // outputVector
6970
70- return {
71- Bitmap = vector.Bitmap
72- Values = outputVector
73- }
74- }
71+ // return {
72+ // Bitmap = vector.Bitmap
73+ // Values = outputVector
74+ // }
75+ // }
0 commit comments