Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include "magma.h"
int main(int argc, char *argv[])
{
float *h_A;
magmaFloat_ptr d_A;
magma_int_t *ipiv;
magma_int_t M, N, n2, lda, ldda, info, min_mn;
magma_int_t status = 0;
/* Initialize */
magma_queue_t queue;
magma_device_t devices[MagmaMaxGPUs];
magma_int_t num = 0;
magma_int_t err;
magma_init();
err = magma_getdevices( devices, MagmaMaxGPUs, &num );
if ( err != 0 or num < 1 ) {
fprintf( stderr, "magma_getdevices failed: %d\n", (int) err );
exit(-1);
}
err = magma_queue_create( devices[0], &queue );
if ( err != 0 ) {
fprintf( stderr, "magma_queue_create failed: %d\n", (int) err );
exit(-1);
}
lda = M;
n2 = lda*N;
ldda = ((M+31)/32)*32;
//TESTING_MALLOC_DEV( d_A, float, ldda*N );
magma_malloc( &d_A, (ldda*N)*sizeof(float) );
//TESTING_MALLOC_CPU( h_A, float, n2 );
magma_malloc_cpu( (void**)&h_A, (n2)*sizeof(float) );
magma_ssetmatrix( M, N, h_A, lda, d_A, 0, ldda, queue );
magma_sgetrf_gpu( M, N, d_A, 0, ldda, ipiv, queue, &info );
magma_free_cpu(h_A);
magma_free(d_A);
magma_finalize();
return 0;
}