|
1 | 1 | namespace GraphBLAS.FSharp |
2 | 2 |
|
3 | 3 | open Brahma.FSharp.OpenCL.WorkflowBuilder.Basic |
4 | | -open Brahma.FSharp.OpenCL.WorkflowBuilder.Evaluation |
5 | 4 | open GraphBLAS.FSharp.Backend |
6 | 5 |
|
7 | 6 | type MatrixTuples<'a> = |
@@ -56,50 +55,124 @@ module Matrix = |
56 | 55 | let resize (rowCount: int) (columnCount: int) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
57 | 56 | let nnz (matrix: Matrix<'a>) : GraphblasEvaluation<int> = failwith "Not Implemented yet" |
58 | 57 | let tuples (matrix: Matrix<'a>) : GraphblasEvaluation<MatrixTuples<'a>> = failwith "Not Implemented yet" |
59 | | - let mask (matrix: Matrix<'a>) : GraphblasEvaluation<Mask2D option> = failwith "Not Implemented yet" |
60 | | - let complemented (matrix: Matrix<'a>) : GraphblasEvaluation<Mask2D option> = failwith "Not Implemented yet" |
| 58 | + let mask (matrix: Matrix<'a>) : GraphblasEvaluation<Mask2D> = failwith "Not Implemented yet" |
| 59 | + let complemented (matrix: Matrix<'a>) : GraphblasEvaluation<Mask2D> = failwith "Not Implemented yet" |
61 | 60 | let synchronize (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = failwith "Not Implemented yet" |
62 | 61 |
|
63 | 62 | (* |
64 | 63 | assignment, extraction and filling |
65 | 64 | *) |
66 | 65 |
|
67 | | - let extractSubMatrix (mask: Mask2D option) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
68 | | - let extractSubRow (rowIdx: int) (mask: Mask2D option) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
69 | | - let extractSubCol (colIdx: int) (mask: Mask2D option) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
70 | | - let extractElement (rowIdx: int) (colIdx: int) (matrix: Matrix<'a>) : GraphblasEvaluation<Scalar<'a>> = failwith "Not Implemented yet" |
71 | | - let assignSubMatrix (mask: Mask2D option) (source: Matrix<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = failwith "Not Implemented yet" |
72 | | - let assignSubRow (rowIdx: int) (mask: Mask2D option) (source: Vector<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = failwith "Not Implemented yet" |
73 | | - let assignSubCol (colIdx: int) (mask: Mask2D option) (source: Vector<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = failwith "Not Implemented yet" |
74 | | - let assignElement (rowIdx: int) (colIdx: int) (source: Scalar<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = failwith "Not Implemented yet" |
75 | | - let fillSubMatrix (mask: Mask2D option) (filler: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = failwith "Not Implemented yet" |
76 | | - let fillSubRow (rowIdx: int) (mask: Mask2D option) (filler: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = failwith "Not Implemented yet" |
77 | | - let fillSubCol (colIdx: int) (mask: Mask2D option) (filler: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = failwith "Not Implemented yet" |
| 66 | + /// mat.[mask] |
| 67 | + let extractSubMatrix (mask: Mask2D option) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = |
| 68 | + failwith "Not Implemented yet" |
| 69 | + |
| 70 | + /// mat.[rowIdx. *] |
| 71 | + let extractRow (rowIdx: int) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = |
| 72 | + failwith "Not Implemented yet" |
| 73 | + |
| 74 | + /// mat.[rowIdx, mask] |
| 75 | + let extractSubRow (rowIdx: int) (mask: Mask2D) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = |
| 76 | + failwith "Not Implemented yet" |
| 77 | + |
| 78 | + /// mat.[*, colIdx] |
| 79 | + let extractCol (colIdx: int) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = |
| 80 | + failwith "Not Implemented yet" |
| 81 | + |
| 82 | + /// mat.[mask. colIdx] |
| 83 | + let extractSubCol (colIdx: int) (mask: Mask2D) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = |
| 84 | + failwith "Not Implemented yet" |
| 85 | + |
| 86 | + /// mat.[rowIdx, colIdx] |
| 87 | + let extractValue (rowIdx: int) (colIdx: int) (matrix: Matrix<'a>) : GraphblasEvaluation<Scalar<'a>> = |
| 88 | + failwith "Not Implemented yet" |
| 89 | + |
| 90 | + /// t <- s |
| 91 | + let assignMatrix (source: Matrix<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 92 | + failwith "Not Implemented yet" |
| 93 | + |
| 94 | + /// t.[mask] <- s |
| 95 | + let assignSubMatrix (mask: Mask2D) (source: Matrix<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 96 | + failwith "Not Implemented yet" |
| 97 | + |
| 98 | + /// t.[rowIdx, *] <- s |
| 99 | + let assignRow (rowIdx: int) (source: Vector<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 100 | + failwith "Not Implemented yet" |
| 101 | + |
| 102 | + /// t.[rowIdx, mask] <- s |
| 103 | + let assignSubRow (rowIdx: int) (mask: Mask1D) (source: Vector<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 104 | + failwith "Not Implemented yet" |
| 105 | + |
| 106 | + /// t.[*, colIdx] <- s |
| 107 | + let assignCol (colIdx: int) (source: Vector<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 108 | + failwith "Not Implemented yet" |
| 109 | + |
| 110 | + /// t.[mask, colIdx] <- s |
| 111 | + let assignSubCol (colIdx: int) (mask: Mask1D) (source: Vector<'a>) (target: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 112 | + failwith "Not Implemented yet" |
| 113 | + |
| 114 | + /// mat.[i, j] <- value |
| 115 | + let assignValue (rowIdx: int) (colIdx: int) (value: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 116 | + failwith "Not Implemented yet" |
| 117 | + |
| 118 | + /// mat.[*, *] <- value |
| 119 | + let fillMatrix (value: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 120 | + failwith "Not Implemented yet" |
| 121 | + |
| 122 | + /// mat.[mask] <- value |
| 123 | + let fillSubMatrix (mask: Mask2D) (value: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 124 | + failwith "Not Implemented yet" |
| 125 | + |
| 126 | + /// mat.[rowIdx, *] <- value |
| 127 | + let fillRow (rowIdx: int) (value: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 128 | + failwith "Not Implemented yet" |
| 129 | + |
| 130 | + /// mat.[rowIdx, mask] <- value |
| 131 | + let fillSubRow (rowIdx: int) (mask: Mask1D) (value: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 132 | + failwith "Not Implemented yet" |
| 133 | + |
| 134 | + /// mat.[*, colIdx] <- value |
| 135 | + let fillCol (colIdx: int) (value: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 136 | + failwith "Not Implemented yet" |
| 137 | + |
| 138 | + /// mat.[mask, colIdx] <- value |
| 139 | + let fillSubCol (colIdx: int) (mask: Mask1D) (value: Scalar<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<unit> = |
| 140 | + failwith "Not Implemented yet" |
78 | 141 |
|
79 | 142 | (* |
80 | 143 | operations |
81 | 144 | *) |
82 | 145 |
|
83 | | - let mxm (semiring: ISemiring<'a>) (mask: Mask2D option) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
84 | | - let mxv (semiring: ISemiring<'a>) (mask: Mask1D option) (matrix: Matrix<'a>) (vector: Vector<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
| 146 | + let mxm (semiring: ISemiring<'a>) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 147 | + let mxv (semiring: ISemiring<'a>) (matrix: Matrix<'a>) (vector: Vector<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
85 | 148 |
|
86 | | - let eWiseAdd (semiring: ISemiring<'a>) (mask: Mask2D option) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = |
| 149 | + let eWiseAdd (semiring: ISemiring<'a>) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = |
87 | 150 | let operationResult = |
88 | 151 | match leftMatrix, rightMatrix with |
89 | 152 | | MatrixCOO left, MatrixCOO right -> |
90 | 153 | opencl { |
91 | | - let! result = COOMatrix.EWiseAdd.run left right mask semiring |
| 154 | + let! result = COOMatrix.EWiseAdd.run left right None semiring |
92 | 155 | return MatrixCOO result |
93 | 156 | } |
94 | 157 | | _ -> failwith "Not Implemented" |
95 | 158 |
|
96 | 159 | graphblas { return! EvalGB.fromCl operationResult } |
97 | 160 |
|
98 | | - let eWiseMult (semiring: ISemiring<'a>) (mask: Mask2D option) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
99 | | - let apply (mapper: UnaryOp<'a, 'b>) (mask: Mask2D option) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'b>> = failwith "Not Implemented yet" |
100 | | - let prune (predicate: UnaryOp<'a, bool>) (mask: Mask2D option) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
101 | | - let reduceRows (monoid: IMonoid<'a>) (mask: Mask1D) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
102 | | - let reduceCols (monoid: IMonoid<'a>) (mask: Mask1D) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
| 161 | + let eWiseMult (semiring: ISemiring<'a>) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 162 | + let apply (mapper: UnaryOp<'a, 'b>) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'b>> = failwith "Not Implemented yet" |
| 163 | + let prune (predicate: UnaryOp<'a, bool>) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 164 | + let reduceRows (monoid: IMonoid<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
| 165 | + let reduceCols (monoid: IMonoid<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
103 | 166 | let reduce (monoid: IMonoid<'a>) (matrix: Matrix<'a>) : GraphblasEvaluation<Scalar<'a>> = failwith "Not Implemented yet" |
104 | 167 | let transpose (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'b>> = failwith "Not Implemented yet" |
105 | | - let kronecker (semiring: ISemiring<'a>) (mask: Mask2D option) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 168 | + let kronecker (semiring: ISemiring<'a>) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 169 | + |
| 170 | + let mxmWithMask (semiring: ISemiring<'a>) (mask: Mask2D) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 171 | + let mxvWithMask (semiring: ISemiring<'a>) (mask: Mask1D) (matrix: Matrix<'a>) (vector: Vector<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
| 172 | + let eWiseAddWithMask (semiring: ISemiring<'a>) (mask: Mask2D) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 173 | + let eWiseMultWithMask (semiring: ISemiring<'a>) (mask: Mask2D) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 174 | + let applyWithMask (mapper: UnaryOp<'a, 'b>) (mask: Mask2D) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'b>> = failwith "Not Implemented yet" |
| 175 | + let pruneWithMask (predicate: UnaryOp<'a, bool>) (mask: Mask2D) (matrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
| 176 | + let reduceRowsWithMask (monoid: IMonoid<'a>) (mask: Mask1D) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
| 177 | + let reduceColsWithMask (monoid: IMonoid<'a>) (mask: Mask1D) (matrix: Matrix<'a>) : GraphblasEvaluation<Vector<'a>> = failwith "Not Implemented yet" |
| 178 | + let kroneckerWithMask (semiring: ISemiring<'a>) (mask: Mask2D) (leftMatrix: Matrix<'a>) (rightMatrix: Matrix<'a>) : GraphblasEvaluation<Matrix<'a>> = failwith "Not Implemented yet" |
0 commit comments