3 import numpy.testing
as npt
13 seed = np.int32(time.perf_counter() * 1e3)
16 print(
"Test cublas 3")
17 print(
"precision: ", prec)
19 c = ch.context.get_instance()
34 matA = ch.obj_float(c, np.random.randn(sizem, sizek))
35 matAT = ch.obj_float(c, np.random.randn(sizek, sizem))
36 matB = ch.obj_float(c, np.random.randn(sizek, sizen))
37 matBT = ch.obj_float(c, np.random.randn(sizen, sizek))
38 matC = ch.obj_float(c, np.random.randn(sizem, sizen))
39 matC2 = ch.obj_float(c, np.random.randn(sizem, sizen))
40 matC3 = ch.obj_float(c, np.random.randn(sizem, sizen))
62 matA.gemm(matB,
'n',
'n', alpha, matC, beta)
63 matAT.gemm(matB,
't',
'n', alpha, matC2, beta)
64 matAT.gemm(matBT,
't',
't', alpha, matC3, beta)
65 matC4 = matA.gemm(matB,
'n',
'n', alpha)
66 matC5 = matAT.gemm(matB,
't',
'n', alpha)
67 matC6 = matAT.gemm(matBT,
't',
't', alpha)
69 C = alpha * A.dot(B) + beta * C
70 C2 = alpha * AT.T.dot(B) + beta * C2
71 C3 = alpha * AT.T.dot(BT.T) + beta * C3
73 C5 = alpha * AT.T.dot(B)
74 C6 = alpha * AT.T.dot(BT.T)
76 npt.assert_array_almost_equal(C, np.array(matC), decimal=dec - 1)
77 npt.assert_array_almost_equal(C2, np.array(matC2), decimal=dec - 1)
78 npt.assert_array_almost_equal(C3, np.array(matC3), decimal=dec - 1)
79 npt.assert_array_almost_equal(C4, np.array(matC4), decimal=dec - 1)
80 npt.assert_array_almost_equal(C5, np.array(matC5), decimal=dec - 1)
81 npt.assert_array_almost_equal(C6, np.array(matC6), decimal=dec - 1)
88 A = np.random.randn(sizek, sizek)
89 B = np.random.randn(sizek, sizen)
90 C = np.random.randn(sizek, sizen)
93 matA = ch.obj_float(c, A)
94 matB = ch.obj_float(c, B)
95 matC = ch.obj_float(c, C)
109 t1 = time.perf_counter()
110 matA.symm(matB, 1, matC, 1)
111 t2 = time.perf_counter()
113 t3 = time.perf_counter()
115 matC2 = matA.symm(matB)
120 print(
"execution time (s)")
121 print(
"python: ", t3 - t2)
122 print(
"carma : ", t2 - t1)
127 npt.assert_almost_equal(C, res, decimal=dec - 1)
128 npt.assert_almost_equal(C2, np.array(matC2), decimal=dec - 1)
149 matA = ch.obj_float(c, np.random.randn(sizek, sizek))
150 Vectx = ch.obj_float(c, np.random.randn(sizek))
158 t1 = time.perf_counter()
159 matC = matA.dgmm(Vectx)
160 t2 = time.perf_counter()
162 t3 = time.perf_counter()
166 print(
"execution time (s)")
167 print(
"python: ", t3 - t2)
168 print(
"carma : ", t2 - t1)
173 npt.assert_almost_equal(C, res, decimal=dec)
192 matA = ch.obj_float(c, np.random.randn(sizen, sizek))
193 matC = ch.obj_float(c, np.random.randn(sizen, sizen))
206 t1 = time.perf_counter()
207 matA.syrk(matC=matC, beta=1)
208 t2 = time.perf_counter()
210 t3 = time.perf_counter()
214 print(
"execution time (s)")
215 print(
"python: ", t3 - t2)
216 print(
"carma : ", t2 - t1)
222 C = np.triu(C).flatten()
223 res = np.triu(res).flatten()
224 npt.assert_almost_equal(C, res, decimal=dec - 1)
243 matA = ch.obj_float(c, np.random.randn(sizen, sizek))
244 matB = ch.obj_float(c, np.random.randn(sizen, sizek))
245 matC = ch.obj_float(c, np.random.randn(sizen, sizen))
261 t1 = time.perf_counter()
262 matA.syrkx(matB, alpha=1, matC=matC, beta=1)
263 t2 = time.perf_counter()
265 t3 = time.perf_counter()
269 print(
"execution time (s)")
270 print(
"python: ", t3 - t2)
271 print(
"carma : ", t2 - t1)
279 npt.assert_almost_equal(C, res, decimal=dec - 1)
299 matA = ch.obj_float(c, np.random.randn(sizem, sizen))
300 matB = ch.obj_float(c, np.random.randn(sizem, sizen))
309 t1 = time.perf_counter()
311 t2 = time.perf_counter()
312 matC = matA.geam(matB, beta=1)
313 t3 = time.perf_counter()
317 print(
"execution time (s)")
318 print(
"python: ", t3 - t2)
319 print(
"carma : ", t2 - t1)
323 npt.assert_array_almost_equal(C, np.array(matC), decimal=dec)
338 matA = ch.obj_double(c, np.random.randn(sizem, sizek))
339 matAT = ch.obj_double(c, np.random.randn(sizek, sizem))
340 matB = ch.obj_double(c, np.random.randn(sizek, sizen))
341 matBT = ch.obj_double(c, np.random.randn(sizen, sizek))
342 matC = ch.obj_double(c, np.random.randn(sizem, sizen))
343 matC2 = ch.obj_double(c, np.random.randn(sizem, sizen))
344 matC3 = ch.obj_double(c, np.random.randn(sizem, sizen))
366 matA.gemm(matB,
'n',
'n', alpha, matC, beta)
367 matAT.gemm(matB,
't',
'n', alpha, matC2, beta)
368 matAT.gemm(matBT,
't',
't', alpha, matC3, beta)
369 matC4 = matA.gemm(matB,
'n',
'n', alpha)
370 matC5 = matAT.gemm(matB,
't',
'n', alpha)
371 matC6 = matAT.gemm(matBT,
't',
't', alpha)
373 C = alpha * A.dot(B) + beta * C
374 C2 = alpha * AT.T.dot(B) + beta * C2
375 C3 = alpha * AT.T.dot(BT.T) + beta * C3
376 C4 = alpha * A.dot(B)
377 C5 = alpha * AT.T.dot(B)
378 C6 = alpha * AT.T.dot(BT.T)
380 npt.assert_array_almost_equal(C, np.array(matC), decimal=2 * dec - 1)
381 npt.assert_array_almost_equal(C2, np.array(matC2), decimal=2 * dec - 1)
382 npt.assert_array_almost_equal(C3, np.array(matC3), decimal=2 * dec - 1)
383 npt.assert_array_almost_equal(C4, np.array(matC4), decimal=2 * dec - 1)
384 npt.assert_array_almost_equal(C5, np.array(matC5), decimal=2 * dec - 1)
385 npt.assert_array_almost_equal(C6, np.array(matC6), decimal=2 * dec - 1)
392 A = np.random.randn(sizek, sizek)
393 B = np.random.randn(sizek, sizen)
394 C = np.random.randn(sizek, sizen)
397 matA = ch.obj_double(c, A)
398 matB = ch.obj_double(c, B)
399 matC = ch.obj_double(c, C)
413 t1 = time.perf_counter()
414 matA.symm(matB, 1, matC, 1)
415 t2 = time.perf_counter()
417 t3 = time.perf_counter()
419 matC2 = matA.symm(matB)
424 print(
"execution time (s)")
425 print(
"python: ", t3 - t2)
426 print(
"carma : ", t2 - t1)
431 npt.assert_almost_equal(C, res, decimal=2 * dec - 1)
432 npt.assert_almost_equal(C2, np.array(matC2), decimal=2 * dec - 1)
453 matA = ch.obj_double(c, np.random.randn(sizek, sizek))
454 Vectx = ch.obj_double(c, np.random.randn(sizek))
462 t1 = time.perf_counter()
463 matC = matA.dgmm(Vectx)
464 t2 = time.perf_counter()
466 t3 = time.perf_counter()
470 print(
"execution time (s)")
471 print(
"python: ", t3 - t2)
472 print(
"carma : ", t2 - t1)
477 npt.assert_almost_equal(C, res, decimal=2 * dec)
496 matA = ch.obj_double(c, np.random.randn(sizen, sizek))
497 matC = ch.obj_double(c, np.random.randn(sizen, sizen))
510 t1 = time.perf_counter()
511 matA.syrk(matC=matC, beta=1)
512 t2 = time.perf_counter()
514 t3 = time.perf_counter()
518 print(
"execution time (s)")
519 print(
"python: ", t3 - t2)
520 print(
"carma : ", t2 - t1)
526 C = np.triu(C).flatten()
527 res = np.triu(res).flatten()
528 npt.assert_almost_equal(C, res, decimal=2 * dec - 1)
547 matA = ch.obj_double(c, np.random.randn(sizen, sizek))
548 matB = ch.obj_double(c, np.random.randn(sizen, sizek))
549 matC = ch.obj_double(c, np.random.randn(sizen, sizen))
565 t1 = time.perf_counter()
566 matA.syrkx(matB, alpha=1, matC=matC, beta=1)
567 t2 = time.perf_counter()
569 t3 = time.perf_counter()
573 print(
"execution time (s)")
574 print(
"python: ", t3 - t2)
575 print(
"carma : ", t2 - t1)
583 npt.assert_almost_equal(C, res, decimal=2 * dec - 1)
603 matA = ch.obj_double(c, np.random.randn(sizem, sizen))
604 matB = ch.obj_double(c, np.random.randn(sizem, sizen))
613 t1 = time.perf_counter()
615 t2 = time.perf_counter()
616 matC = matA.geam(matB, beta=1)
617 t3 = time.perf_counter()
621 print(
"execution time (s)")
622 print(
"python: ", t3 - t2)
623 print(
"carma : ", t2 - t1)
627 npt.assert_array_almost_equal(C, np.array(matC), decimal=2 * dec)