Building hipMAGMA 2.0.0

36 views
Skip to first unread message

Wileam Phan

unread,
Aug 16, 2020, 3:41:45 PM8/16/20
to MAGMA User
Hi,

I'm trying to build hipMAGMA 2.0.0 release version with ROCm 3.5.0. Compilation fails at building the testing executables with the following error:

testing_hip/testing_blas_z.cpp:109:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(ld*n), &c_neg_one, dA, 1, dB, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:126:13: error: no matching function for call to 'hipblasIzamax'
            hipblasIzamax( opts.handle, int(m), dA(0,j), 1, &i2 );
            ^~~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:282:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasIzamax(
                               ^
testing_hip/testing_blas_z.cpp:152:13: error: no matching function for call to 'hipblasZgemv'
            hipblasZgemv( opts.handle, hipblas_trans_const(trans[ia]),
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:1828:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 5th argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZgemv(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:158:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(size), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:182:13: error: no matching function for call to 'hipblasZhemv'
            hipblasZhemv( opts.handle, hipblas_uplo_const(uplo[iu]),
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:2302:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 4th argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZhemv(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:187:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(m), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:223:13: error: no matching function for call to 'hipblasZtrsv'
            hipblasZtrsv( opts.handle, hipblas_uplo_const(uplo[iu]), hipblas_trans_const(trans[it]),
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:4112:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex_ptr' (aka 'magmaDoubleComplex *') to 'const hipblasDoubleComplex *' for 6th argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZtrsv(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:228:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(m), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:258:13: error: no matching function for call to 'hipblasZgemm'
            hipblasZgemm( opts.handle, hipblas_trans_const(trans[ia]), hipblas_trans_const(trans[ib]),
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:5818:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 7th argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZgemm(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:263:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(ld*n), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:290:13: error: use of undeclared identifier 'hipblasZhemm'
            hipblasZhemm( opts.handle, hipblas_side_const(side[is]), hipblas_uplo_const(uplo[iu]),
            ^
testing_hip/testing_blas_z.cpp:295:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(ld*n), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:321:13: error: no matching function for call to 'hipblasZherk'
            hipblasZherk( opts.handle, hipblas_uplo_const(uplo[iu]), hipblas_trans_const(trans[it]),
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:4237:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex_ptr' (aka 'magmaDoubleComplex *') to 'const hipblasDoubleComplex *' for 7th argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZherk(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:326:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(ld*n), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:353:13: error: no matching function for call to 'hipblasZher2k'
            hipblasZher2k( opts.handle, hipblas_uplo_const(uplo[iu]), hipblas_trans_const(trans[it]),
            ^~~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:4419:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 6th argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZher2k(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:358:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(ld*n), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:395:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(ld*n), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:424:13: error: no matching function for call to 'hipblasZtrsm'
            hipblasZtrsm( opts.handle, hipblas_side_const(side[is]), hipblas_uplo_const(uplo[iu]),
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:5261:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 8th argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZtrsm(hipblasHandle_t             handle,
                               ^
testing_hip/testing_blas_z.cpp:430:13: error: no matching function for call to 'hipblasZaxpy'
            hipblasZaxpy( opts.handle, int(ld*n), &c_neg_one, dC1, 1, dC2, 1 );
            ^~~~~~~~~~~~
/opt/rocm/hip/../hipblas/include/hipblas.h:510:32: note: candidate function not viable: no known conversion from 'magmaDoubleComplex *' to 'const hipblasDoubleComplex *' for 3rd argument
HIPBLAS_EXPORT hipblasStatus_t hipblasZaxpy(hipblasHandle_t             handle,
                               ^
19 errors generated when compiling for gfx803.
make: *** [Makefile:780: testing_hip/testing_blas_z.o] Error 1


What manual adjustments do I need to perform on the source files to get past this error?

Thanks,
Wileam Y. Phan

Ahmad Abdelfattah

unread,
Aug 16, 2020, 3:56:54 PM8/16/20
to Wileam Phan, MAGMA User
For now, you might face some issues in compiling some of the testers. You can build the library without the testers using “make lib”, then cd to the testing directory and build individual testers like “make testing_dgemm”. 

Let us know if that works on your side. 

Ahmad


--
You received this message because you are subscribed to the Google Groups "MAGMA User" group.
To unsubscribe from this group and stop receiving emails from it, send an email to magma-user+...@icl.utk.edu.
To view this discussion on the web visit https://groups.google.com/a/icl.utk.edu/d/msgid/magma-user/2653479f-af71-49a5-9556-502b6104e25an%40icl.utk.edu.

Wileam Phan

unread,
Aug 27, 2020, 10:25:00 PM8/27/20
to MAGMA User, ah...@icl.utk.edu, MAGMA User, Wileam Phan
Hi Dr. Ahmad,

Sorry for not getting back to you sooner. I've manually built testing_hip/testing_*gemm and testing_*gemm_batched, since right now these are the classes of routines I'm using in my code.
It's interesting to note that AMD also cripples the double precision cores (~700 GFLOP/s) compared to the single precision cores (~6000-7000 GFLOP/s) for consumer grade hardware (RX Vega 64).
I can send you the full testing results, if you're interested.

Thanks,
Wileam Y. Phan

Ahmad Abdelfattah

unread,
Aug 28, 2020, 9:42:59 AM8/28/20
to Wileam Phan, MAGMA User
Most gaming cards from NVIDIA and AMD do not implement native double precision arithmetic, but rather emulate it by software. 

You need a high end compute card to get true DP performance (e.g. the Mi50 or the Mi60 for AMD).

Ahmad
Reply all
Reply to author
Forward
0 new messages