62
62
@test C1 ≈ h_C1
63
63
@test C2 ≈ h_C2
64
64
@test_throws ArgumentError mul! (dhA, dhA, dsA)
65
+ @test_throws DimensionMismatch CUBLAS. gemm! (' N' ,' N' ,one (elty),d_A,dsA,one (elty),d_C1)
65
66
@test_throws DimensionMismatch mul! (d_C1, d_A, dsA)
66
67
end
67
68
@testset " strided gemm!" begin
95
96
C1 = (α* A)* B + β* C1
96
97
# compare
97
98
@test C1 ≈ h_C1
99
+ d_Cbad = CUDA. zeros (elty, m+ 1 , n- 1 )
100
+ @test_throws DimensionMismatch CUBLAS. gemmEx! (' N' ,' N' ,α,d_A,d_B,β,d_Cbad)
98
101
end
99
102
end
100
103
@testset " gemm" begin
@@ -194,13 +197,17 @@ k = 13
194
197
bd_A = CuArray{elty, 2 }[]
195
198
bd_B = CuArray{elty, 2 }[]
196
199
bd_C = CuArray{elty, 2 }[]
200
+ bd_A_bad = CuArray{elty, 2 }[]
197
201
bd_bad = CuArray{elty, 2 }[]
198
202
for i in 1 : length (bA)
199
203
push! (bd_A,CuArray (bA[i]))
200
204
push! (bd_B,CuArray (bB[i]))
201
205
push! (bd_C,CuArray (bC[i]))
202
206
if i < length (bA) - 2
203
207
push! (bd_bad,CuArray (bC[i]))
208
+ push! (bd_A_bad,CuArray (bA[i]))
209
+ else
210
+ push! (bd_A_bad,CUDA. rand (elty, m+ 1 , k- 1 ))
204
211
end
205
212
end
206
213
@@ -214,6 +221,7 @@ k = 13
214
221
@test bC[i] ≈ h_C
215
222
end
216
223
@test_throws DimensionMismatch CUBLAS. gemm_batched! (' N' ,' N' ,alpha,bd_A,bd_bad,beta,bd_C)
224
+ @test_throws DimensionMismatch CUBLAS. gemm_batched! (' N' ,' N' ,alpha,bd_A_bad,bd_B,beta,bd_C)
217
225
end
218
226
219
227
@testset " gemm_batched" begin
@@ -224,6 +232,7 @@ k = 13
224
232
@test bC[i] ≈ h_C
225
233
end
226
234
@test_throws DimensionMismatch CUBLAS. gemm_batched (' N' ,' N' ,alpha,bd_A,bd_bad)
235
+ @test_throws DimensionMismatch CUBLAS. gemm_batched (' N' ,' N' ,alpha,bd_A_bad,bd_B)
227
236
end
228
237
229
238
@testset " gemmBatchedEx!" begin
@@ -236,6 +245,7 @@ k = 13
236
245
@test bC[i] ≈ h_C
237
246
end
238
247
@test_throws DimensionMismatch CUBLAS. gemmBatchedEx! (' N' ,' N' ,alpha,bd_A,bd_bad,beta,bd_C)
248
+ @test_throws DimensionMismatch CUBLAS. gemmBatchedEx! (' N' ,' N' ,alpha,bd_A_bad,bd_B,beta,bd_C)
239
249
end
240
250
241
251
nbatch = 10
@@ -311,6 +321,9 @@ k = 13
311
321
bd_A = [[CuArray (bA[i][j]) for j in 1 : group_sizes[i]] for i in 1 : num_groups]
312
322
bd_B = [[CuArray (bB[i][j]) for j in 1 : group_sizes[i]] for i in 1 : num_groups]
313
323
bd_C = [[CuArray (bC[i][j]) for j in 1 : group_sizes[i]] for i in 1 : num_groups]
324
+ bd_A_bad1 = [[CuArray (bA[i][j]) for j in 1 : group_sizes[i]] for i in 1 : num_groups- 1 ]
325
+ bd_A_bad2 = [[CuArray (bA[i][j]) for j in 1 : group_sizes[i]- 1 ] for i in 1 : num_groups]
326
+ bd_A_bad3 = [[CUDA. rand (elty, 3 * i+ 1 ,2 * i - 1 ) for j in 1 : group_sizes[i]] for i in 1 : num_groups]
314
327
@testset " gemm_grouped_batched!" begin
315
328
# C = (alpha*A)*B + beta*C
316
329
CUBLAS. gemm_grouped_batched! (transA,transB,alpha,bd_A,bd_B,beta,bd_C)
@@ -319,6 +332,9 @@ k = 13
319
332
h_C = Array (bd_C[i][j])
320
333
@test bC[i][j] ≈ h_C
321
334
end
335
+ @test_throws DimensionMismatch CUBLAS. gemm_grouped_batched! (transA,transB,alpha,bd_A_bad1,bd_B,beta,bd_C)
336
+ @test_throws DimensionMismatch CUBLAS. gemm_grouped_batched! (transA,transB,alpha,bd_A_bad2,bd_B,beta,bd_C)
337
+ @test_throws DimensionMismatch CUBLAS. gemm_grouped_batched! (transA,transB,alpha,bd_A_bad3,bd_B,beta,bd_C)
322
338
end
323
339
324
340
@testset " gemm_grouped_batched" begin
0 commit comments