Skip to content

Commit 2e0693a

Browse files
authored
[mlir][sparse][gpu] migration to sparse_tensor.print (#83510)
Continuous efforts #83357 for our sparse CUDA tests
1 parent 87e7140 commit 2e0693a

File tree

4 files changed

+43
-55
lines changed

4 files changed

+43
-55
lines changed

mlir/test/Integration/Dialect/SparseTensor/GPU/CUDA/sparse-gemm-lib.mlir

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -62,23 +62,15 @@ module {
6262
tensor<8x8xf32, #CSR>) -> tensor<8x8xf32, #CSR>
6363

6464
//
65-
// Verify computed result (expected output, with only 20 nonzeros).
65+
// Verify computed result.
6666
//
67-
// CHECK: ( ( 1, 39, 52, 0, 0, 0, 45, 51 ),
68-
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0 ),
69-
// CHECK-SAME: ( 0, 0, 16, 0, 0, 0, 0, 0 ),
70-
// CHECK-SAME: ( 0, 0, 0, 25, 0, 0, 0, 0 ),
71-
// CHECK-SAME: ( 0, 0, 0, 0, 36, 0, 0, 0 ),
72-
// CHECK-SAME: ( 0, 117, 158, 0, 0, 0, 135, 144 ),
73-
// CHECK-SAME: ( 0, 156, 318, 0, 0, 0, 301, 324 ),
74-
// CHECK-SAME: ( 0, 208, 430, 0, 0, 0, 405, 436 ) )
75-
// CHECK-NEXT: 20
76-
%d = sparse_tensor.convert %Ccsr : tensor<8x8xf32, #CSR> to tensor<8x8xf32>
77-
%v = vector.transfer_read %d[%c0, %c0], %f0: tensor<8x8xf32>, vector<8x8xf32>
78-
vector.print %v : vector<8x8xf32>
79-
%nnz = sparse_tensor.number_of_entries %Ccsr : tensor<8x8xf32, #CSR>
80-
%x = sparse_tensor.number_of_entries %Ccsr : tensor<8x8xf32, #CSR>
81-
vector.print %nnz : index
67+
// CHECK: ---- Sparse Tensor ----
68+
// CHECK-NEXT: nse = 20
69+
// CHECK-NEXT: pos[1] : ( 0, 5, 5, 6, 7, 8, 12, 16, 20,
70+
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 6, 7, 2, 3, 4, 1, 2, 6, 7, 1, 2, 6, 7, 1, 2, 6, 7,
71+
// CHECK-NEXT: values : ( 1, 39, 52, 45, 51, 16, 25, 36, 117, 158, 135, 144, 156, 318, 301, 324, 208, 430, 405, 436,
72+
// CHECK-NEXT: ----
73+
sparse_tensor.print %Ccsr : tensor<8x8xf32, #CSR>
8274

8375
llvm.call @mgpuDestroySparseEnv(): () -> ()
8476
return

mlir/test/Integration/Dialect/SparseTensor/GPU/CUDA/sparse-matmul-lib.mlir

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -66,32 +66,16 @@ module {
6666
return %D: tensor<8x8xf32>
6767
}
6868

69+
// Helper to dump dense tensor as series of vectors.
6970
func.func @dump(%mat: tensor<8x8xf32>) {
7071
%f0 = arith.constant 0.0 : f32
7172
%c0 = arith.constant 0 : index
7273
%c1 = arith.constant 1 : index
73-
%c2 = arith.constant 2 : index
74-
%c3 = arith.constant 3 : index
75-
%c4 = arith.constant 4 : index
76-
%c5 = arith.constant 5 : index
77-
%c6 = arith.constant 6 : index
78-
%c7 = arith.constant 7 : index
79-
%r0 = vector.transfer_read %mat[%c0,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
80-
vector.print %r0 : vector<8xf32>
81-
%r1 = vector.transfer_read %mat[%c1,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
82-
vector.print %r1 : vector<8xf32>
83-
%r2 = vector.transfer_read %mat[%c2,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
84-
vector.print %r2 : vector<8xf32>
85-
%r3 = vector.transfer_read %mat[%c3,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
86-
vector.print %r3 : vector<8xf32>
87-
%r4 = vector.transfer_read %mat[%c4,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
88-
vector.print %r4 : vector<8xf32>
89-
%r5 = vector.transfer_read %mat[%c5,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
90-
vector.print %r5 : vector<8xf32>
91-
%r6 = vector.transfer_read %mat[%c6,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
92-
vector.print %r6 : vector<8xf32>
93-
%r7 = vector.transfer_read %mat[%c7,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
94-
vector.print %r7 : vector<8xf32>
74+
%c8 = arith.constant 8 : index
75+
scf.for %i = %c0 to %c8 step %c1 {
76+
%v = vector.transfer_read %mat[%i,%c0], %f0 : tensor<8x8xf32>, vector<8xf32>
77+
vector.print %v : vector<8xf32>
78+
}
9579
return
9680
}
9781

mlir/test/Integration/Dialect/SparseTensor/GPU/CUDA/sparse-sampled-matmul-lib.mlir

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,13 @@ module {
113113
//
114114
// Print the result for verification.
115115
//
116-
// CHECK: ( 11, 41.4, 42, 102.5, 93, 44.1, 164, 105.2, 255 )
117-
//
118-
%vm = sparse_tensor.values %0 : tensor<?x?xf32, #CSR> to memref<?xf32>
119-
%vv = vector.transfer_read %vm[%c0], %d0 : memref<?xf32>, vector<9xf32>
120-
vector.print %vv : vector<9xf32>
116+
// CHECK: ---- Sparse Tensor ----
117+
// CHECK-NEXT: nse = 9
118+
// CHECK-NEXT: pos[1] : ( 0, 2, 4, 5, 7, 9,
119+
// CHECK-NEXT: crd[1] : ( 0, 3, 1, 4, 2, 0, 3, 1, 4,
120+
// CHECK-NEXT: values : ( 11, 41.4, 42, 102.5, 93, 44.1, 164, 105.2, 255,
121+
// CHECK-NEXT: ----
122+
sparse_tensor.print %0 : tensor<?x?xf32, #CSR>
121123

122124
// Create a much sparser sampling matrix.
123125
%t = arith.constant sparse<[[0,0], [0,1], [1,0], [3,4], [7,7]],
@@ -137,11 +139,14 @@ module {
137139
//
138140
// Print the result for verification.
139141
//
140-
// CHECK: ( ( 17, 18, 0, 0, 0, 0, 0, 0 ), ( 19, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 20, 0, 0, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 21 ) )
142+
// CHECK: ---- Sparse Tensor ----
143+
// CHECK-NEXT: nse = 5
144+
// CHECK-NEXT: pos[1] : ( 0, 2, 3, 3, 4, 4, 4, 4, 5,
145+
// CHECK-NEXT: crd[1] : ( 0, 1, 0, 4, 7,
146+
// CHECK-NEXT: values : ( 17, 18, 19, 20, 21,
147+
// CHECK-NEXT: ----
141148
//
142-
%d = sparse_tensor.convert %1 : tensor<?x?xf32, #CSR> to tensor<?x?xf32>
143-
%mm = vector.transfer_read %d[%c0, %c0], %d0 : tensor<?x?xf32>, vector<8x8xf32>
144-
vector.print %mm : vector<8x8xf32>
149+
sparse_tensor.print %1 : tensor<?x?xf32, #CSR>
145150

146151
// Release the resources.
147152
bufferization.dealloc_tensor %0 : tensor<?x?xf32, #CSR>

mlir/test/Integration/Dialect/SparseTensor/GPU/CUDA/sparse-sddmm-lib.mlir

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,22 @@ module {
166166
// the result (which is why the block sparse version has actual results
167167
// in the original zero positions).
168168
//
169-
// CHECK: ( 5, 10, 24, 19, 53, 42, 55, 56 )
170-
// CHECK-NEXT: ( 5, 10, 8, 19, 24, 24, 40, 53, 42, 55, 56, 64 )
169+
// CHECK: ---- Sparse Tensor ----
170+
// CHECK-NEXT: nse = 8
171+
// CHECK-NEXT: pos[1] : ( 0, 3, 5, 7, 8,
172+
// CHECK-NEXT: crd[1] : ( 0, 1, 4, 1, 5, 2, 3, 2,
173+
// CHECK-NEXT: values : ( 5, 10, 24, 19, 53, 42, 55, 56,
174+
// CHECK-NEXT: ----
171175
//
172-
%v0 = sparse_tensor.values %0 : tensor<?x?xf32, #CSR> to memref<?xf32>
173-
%vv0 = vector.transfer_read %v0[%c0], %d0 : memref<?xf32>, vector<8xf32>
174-
vector.print %vv0 : vector<8xf32>
175-
%v1 = sparse_tensor.values %1 : tensor<?x?xf32, #BSR> to memref<?xf32>
176-
%vv1 = vector.transfer_read %v1[%c0], %d0 : memref<?xf32>, vector<12xf32>
177-
vector.print %vv1 : vector<12xf32>
176+
// CHECK: ---- Sparse Tensor ----
177+
// CHECK-NEXT: nse = 12
178+
// CHECK-NEXT: pos[1] : ( 0, 2, 3,
179+
// CHECK-NEXT: crd[1] : ( 0, 2, 1,
180+
// CHECK-NEXT: values : ( 5, 10, 8, 19, 24, 24, 40, 53, 42, 55, 56, 64,
181+
// CHECK-NEXT: ----
182+
//
183+
sparse_tensor.print %0 : tensor<?x?xf32, #CSR>
184+
sparse_tensor.print %1 : tensor<?x?xf32, #BSR>
178185

179186
// Release the resources.
180187
bufferization.dealloc_tensor %0 : tensor<?x?xf32, #CSR>

0 commit comments

Comments
 (0)