About the execution devices

Open discussion for MAGMA

About the execution devices

Postby jgpallero » Tue Dec 31, 2013 12:56 pm


I'm a bit confused about the execution devices of the MAGMA functions. As it name says, the library is intended to be executed on CPU+GPU, but, it is possible to force one of them to the functions be executed or always is CPU+GPU? Inspecting, for example, the dgetrf.cpp file I can see calls to lapackf77_dgetrf routine fron the external LAPACK for CPU library, so I understand this function is enforced to use both CPU+GPU devices. But inspecting dgetrf_gpu.cpp file I can also see lapackf77_dgetrf calls, so I think this function also uses CPU+GPU. So I'm also confused about the _gpu interface. Ithought the _gpu interface were only for GPU computations, but I can see actually is also hybrid. Am I right?

Also can be seen some calls to magmablas_ interface. Are this functions simply wrappers to cublas functions or were coded? I'm again a bit confused because there exists magmablas_dgemm and magma_dgemm in the interface_cuda folder...

Posts: 29
Joined: Tue Nov 15, 2011 12:38 pm

Re: About the execution devices

Postby mgates3 » Wed Jan 01, 2014 2:25 am

Yes, both are hybrid. The CPU interface (magma_dgetrf) takes the matrix starting and ending in CPU memory. The GPU interface (magma_dgetrf_gpu) takes the matrix starting and ending in GPU memory.

The magma_{ dgemm, dtrsm, ... } BLAS calls are wrappers around cublas, clAmdBlas, or Intel's Xeon Phi MKL BLAS (depending on the version of MAGMA).

The magmablas_{ dgemm, dtrsm, ... } BLAS calls are implemented in MAGMA, in the magmablas directory (for the CUDA version of MAGMA). The magmablas gemm implementation has been incorporated into cublas gemm, so the cublas one should be used now, e.g., by the magma_*gemm wrapper.

Posts: 388
Joined: Fri Jan 06, 2012 2:13 pm

Return to User discussion

Who is online

Users browsing this forum: No registered users and 2 guests