Skip to content

Commit 7640fb0

Browse files
committed
Fix transpose on zero csr matrix
1 parent 0e930b1 commit 7640fb0

1 file changed

Lines changed: 24 additions & 15 deletions

File tree

src/GraphBLAS-sharp/Backend/CSRMatrix/Transpose.fs

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,30 @@ open Brahma.OpenCL
88

99
module internal rec Transpose =
1010
let transposeMatrix (matrix: CSRMatrix<'a>) = opencl {
11-
let! coo = csr2coo matrix
12-
let! packedIndices = pack coo.Columns coo.Rows
13-
14-
do! BitonicSort.sortKeyValuesInplace packedIndices coo.Values
15-
let! (rows, cols) = unpack packedIndices
16-
17-
let! compressedRows = compressRows matrix.ColumnCount rows
18-
19-
return {
20-
RowCount = matrix.ColumnCount
21-
ColumnCount = matrix.RowCount
22-
RowPointers = compressedRows
23-
ColumnIndices = cols
24-
Values = coo.Values
25-
}
11+
if matrix.Values.Length = 0 then
12+
return {
13+
RowCount = matrix.ColumnCount
14+
ColumnCount = matrix.RowCount
15+
RowPointers = [| 0; 0 |]
16+
ColumnIndices = [||]
17+
Values = [||]
18+
}
19+
else
20+
let! coo = csr2coo matrix
21+
let! packedIndices = pack coo.Columns coo.Rows
22+
23+
do! BitonicSort.sortKeyValuesInplace packedIndices coo.Values
24+
let! (rows, cols) = unpack packedIndices
25+
26+
let! compressedRows = compressRows matrix.ColumnCount rows
27+
28+
return {
29+
RowCount = matrix.ColumnCount
30+
ColumnCount = matrix.RowCount
31+
RowPointers = compressedRows
32+
ColumnIndices = cols
33+
Values = coo.Values
34+
}
2635
}
2736

2837
let private csr2coo (matrix: CSRMatrix<'a>) = opencl {

0 commit comments

Comments
 (0)