MAGMA 1.0 -- LAPACK for GPUs -- is now released

MAGMA 1.0 RC1 is now available. This release includes the MAGMA sources! MAGMA 1.0 RC1 is intended for a single CUDA enabled NVIDIA GPU. It extends version 0.2 by adding support for the Fermi GPUs (see the sample performances for LU, QR, and Cholesky).

Included are routines for the following algorithms:

    LU, QR, and Cholesky factorizations in both real and complex arithmetic (single and double);

    Linear solvers based on LU, QR, and Cholesky in both real and complex arithmetic (single and double);

    Mixed-precision iterative refinement solvers based on LU, QR, and Cholesky in both real and complex arithmetic;

    MAGMA BLAS in real arithmetic (single and double), including gemm, gemv, symv, and trsm.

See the MAGMA homepage for a download link.

Excellent news! The sources are particularly welcome. Thanks to Stan and all his colleagues at UTK for opening the source of this incredibly useful and high quality library.

Is there any updated documentation for 1.0 version?

Any plans for a win32/64 version of Magma??

Considering that the distributed file contains the sources, you might conceivably build the library yourself.

Not yet. We are preparing one that will be available with the final release.

Yes, definitely. We plan to release a port in February, 2011.

It will be excellent if somebody contributes the port, otherwise we will do it for a February release.

Stanimire >>
Thx. for the work you are doing in this lib. We are working natively with Cuda, but are looking at libs. that could save us time and money.

Does Magma functions support LU, QR, and Cholesky factorizations in a multiple GPU sort of way? I know this is not as trivial as a Monte-carlo simulation but still. And if so, do you have any performance papers on this?
Is this a priority of yours for this lib?

Reason for my question is that you on the Magma website state that the release is intended for a single CUDA enabled NVIDIA GPU. But I also read an interesting PDF called “QR Factorization on a Multicore Node Enhanced with Multiple GPU Accelerators”

And since this was on the Magma site as well, it made me wonder :smile:

Thank you for your interest in the library. I hope you find it useful for your applications.

The MAGMA 1.0 release provides LAPACK functionality for a single GPU. After this basic version, our highest priority will be to release software for multiGPUs. Here are links to three papers for the LU, QR, and Cholesky factorizations using multiple GPUs:

LU Factorization for Accelerator-based Systems

QR Factorization on a Multicore Node Enhanced with Multiple GPU Accelerators

A Scalable High Performant Cholesky Factorization for Multicore with GPU Accelerators

A fast technical question on Magma compilation, if I may:

I’m working on 32-bit Vista, using Notepad++ and the DOS window to write programs and execute them. I added my #include files as necessary, then ran the eigenvalue solver “zgeqrf.cu”

It gave me 11 errors, asking for .lib links like “cublas,” “magma_z,” etc.

When I added the syntax “-lcublas” in the command line, the errors related to CUBLAS went away. I’m now down to 7 errors.

As far as I know, “-lcublas” links my program to the CUBLAS library. If that’s true, I have a problem; there’s no MAGMA library that I know of. So for the remaining 7 errors, should I link .h files, or is there something else wrong?

For reference, I’ve added the 7 errors I got:

tmpfxt_00000a7c_00000000-14_zgeqrf.obj : error LNK2019: unresolved external symbol _zq_to_panel referenced in function _magma_zgeqrf

tmpfxt_00000a7c_00000000-14_zgeqrf.obj : error LNK2019: unresolved external symbol _zpanel_to_q referenced in function _magma_zgeqrf

tmpfxt_00000a7c_00000000-14_zgeqrf.obj : error LNK2019: unresolved external symbol _lapackf77_zlarft referenced in function _magma_zgeqrf

tmpfxt_00000a7c_00000000-14_zgeqrf.obj : error LNK2019: unresolved external symbol _lapackf77_zgeqrf referenced in function _magma_zgeqrf

tmpfxt_00000a7c_00000000-14_zgeqrf.obj : error LNK2019: unresolved external symbol _magma_zlarfb_gpu referenced in function _magma_zgeqrf

tmpfxt_00000a7c_00000000-14_zgeqrf.obj : error LNK2019: unresolved external symbol _magma_get_zgeqrf_nb referenced in function _magma_zgeqrf

Thanks in advance for any replies.

hi

Does this still hold, or are there considerable delays.?

hii iam trying to write a kernel for kmeans can any one help me out,

i am confused regarding passing the array of structures to gpu

typedef struct {
double p[2];
double distance[500];
}Point;

Point all_data[1000];

this is how i am passing the array of structures
for( unsigned int i = 0; i < Psize; i++)
for( unsigned int j = 0; j < NA; j++)
{
h_idata[i][j]=all_data[i].p[j];//host data points
}

for( unsigned int i = 0; i < K; i++)
       for( unsigned int j = 0; j < NA; j++)
      {
                  h_idata2[i][j]=pop.clu_cent[i].p[j];//cluster centres
          }  

double* d_idata;
double* d_idata2;

CUDA_SAFE_CALL( cudaMalloc( (void**) &d_idata, m1));//allocating memory

CUDA_SAFE_CALL( cudaMemcpy( d_idata, h_idata, m1,cudaMemcpyHostToDevice) );//points copying

CUDA_SAFE_CALL( cudaMalloc( (void**) &d_data2, m2));//allocating memory

CUDA_SAFE_CALL( cudaMemcpy( d_idata2, h_idata2, m2,cudaMemcpyHostToDevice) );//clusters copying

float *d_odata;//output data declaration

CUDA_SAFE_CALL( cudaMalloc( (void**) &d_odata, m3));

can any one help me out. on this issue

I have much of the same messages. Did you ever find a solution?

1>spotrf_gpu.obj : error LNK2019: unresolved external symbol _magmablas_strsm referenced in function _magma_spotrf_gpu

1>spotrf_gpu.obj : error LNK2019: unresolved external symbol _magmablas_sgemm referenced in function _magma_spotrf_gpu

1>spotrf_gpu.obj : error LNK2019: unresolved external symbol _lapackf77_spotrf referenced in function _magma_spotrf_gpu

1>spotrf_gpu.obj : error LNK2019: unresolved external symbol _magma_get_spotrf_nb referenced in function _magma_spotrf_gpu

1>spotrf_gpu.obj : error LNK2019: unresolved external symbol _lapackf77_lsame referenced in function _magma_spotrf_gpu

1>LIBCMTD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

1>…/…/bin/win32/Debug/spotrf_gpu.exe : fatal error LNK1120: 6 unresolved externals