Hi all,
I'm currently testing MAGMA (v. 1.3 and v. 1.4.1) by running cgesv and
cgesv_gpu routines (available in testing directory) and I've some doubts
for MAGMA experts!!
D1)
In both versions, for cgesv code, it is possible to change the number of
GPUs by using "--ngpu x" and the env var MAGMA_NUM_GPUS.
Such option is not working for cgesv_gpu. Is there a way to choose the
number of GPUs for testing_cgesv_gpu?
The testing_cgesv_gpu code runs by default on one GPUs.
D2)
From the following results, could you explain me why I cannot see any CPU
usage? In both cases, CPU GFLOP/s and time are null:
Code: Select all
$ ./testing_cgesv_gpu --ngpu 1 -N 26000
MAGMA 1.4.1 , compiled for CUDA capability >= 3.0
device 0: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 1: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 2: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 3: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 4: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 5: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 6: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 7: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
Usage: ./testing_cgesv_gpu [options] [-h|--help]
N NRHS CPU GFlop/s (sec) GPU GFlop/s (sec) ||B - AX|| /N*||A||*||X||
================================================================================
26000 1 --- ( --- ) 1658.28 ( 28.27) 9.95e-11
Code: Select all
$ ./testing_cgesv --ngpu 1 -N 26000
MAGMA 1.4.1 , compiled for CUDA capability >= 3.0
device 0: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 1: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 2: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 3: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 4: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 5: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 6: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 7: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
Usage: ./testing_cgesv [options] [-h|--help]
ngpu 1
N NRHS CPU Gflop/s (sec) GPU GFlop/s (sec) ||B - AX|| / N*||A||*||X||
================================================================================
26000 1 --- ( --- ) 1380.40 ( 33.96) 9.95e-11
codes, testing_cgesv and testing_cgesv_gpu, and suggest me which one is
the best to evaluate the system performances?
I'm asking this information because I expect that cgesv performs
"something" on the host and then on the device, while cgesv_gpu performs
"something" just on the device.
D3)
How is the memory managed in MAGMA?
For example, the following case crashes (on 1, 2 and 3 GPUs):
Code: Select all
$ ./testing_cgesv --ngpu 1 -N 48000
MAGMA 1.4.1 , compiled for CUDA capability >= 3.0
device 0: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 1: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 2: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 3: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 4: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 5: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 6: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 7: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
Usage: ./testing_cgesv [options] [-h|--help]
ngpu 1
N NRHS CPU Gflop/s (sec) GPU GFlop/s (sec) ||B - AX|| / N*||A||*||X||
================================================================================
!!!! magma_malloc_cpu failed for: h_A
My question is:
a matrix size N=46.000, implies 2.116.000.000 matrix entries. Each entry
is a single complex (8 bytes), so in total the matrix should take around
15 Gb (46k*46k*8=16.928*10^9).
How is the matrix allocated if each GPU has around 5 Gb of memory?
Moreover, cgesv_gpu has, as maximum matrix size allowed, N=26000 (for higher values of N the code crashes).
Why such a big gap (46000 vs. 26000)?
D4)
By running MAGMA v1.3, cgesv code, I've the following failure before the result:
Code: Select all
$ export MAGMA_NUM_GPUS=8
$ ./testing_cgesv --ngpu 8 -N 46000
MAGMA 1.3.0
device 0: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 1: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 2: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 3: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 4: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 5: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 6: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
device 7: Tesla K20Xm, 732.0 MHz clock, 5759.6 MB memory, capability 3.5
Usage: ./testing_cgesv [options] [-h|--help]
N NRHS GPU GFlop/s (sec) ||B - AX|| / ||A||*||X||
===========================================================
CUBLAS error: memory mapping error (11) in magma_cgetrf2_mgpu at cgetrf2_mgpu.cpp:274
CUDA runtime error: unspecified launch failure (4) in magma_cgetrf2_mgpu at cgetrf2_mgpu.cpp:329
CUBLAS error: memory mapping error (11) in magma_cgetrf2_mgpu at cgetrf2_mgpu.cpp:376
CUDA runtime error: unspecified launch failure (4) in magma_cgetrf2_mgpu at cgetrf2_mgpu.cpp:337
** On entry to CTRSM parameter number 5 had an illegal value
** On entry to CGEMM parameter number 3 had an illegal value
CUDA runtime error: unspecified launch failure (4) in magma_cgetrf2_mgpu at cgetrf2_mgpu.cpp:337
[...]
CUDA runtime error: unspecified launch failure (4) in magma_cgetrf2_mgpu at cgetrf2_mgpu.cpp:337
** On entry to CTRSM parameter number 5 had an illegal value
** On entry to CGEMM parameter number 3 had an illegal value
** On entry to CTRSM parameter number 5 had an illegal value
** On entry to CGEMM parameter number 3 had an illegal value
CUDA runtime error: unspecified launch failure (4) in magma_cgetrf2_mgpu at cgetrf2_mgpu.cpp:251
CUBLAS error: memory mapping error (11) in magma_cgetrf2_mgpu at cgetrf2_mgpu.cpp:274
[...]
CUBLAS error: memory mapping error (11) in magmablas_cgetmatrix_transpose_mgpu at cgetmatrix_transpose_mgpu.cu:61
[...]
CUDA runtime error: unspecified launch failure (4) in magma_cgetrf_m at cgetrf_m.cpp:346
[...]
CUDA runtime error: unspecified launch failure (4) in magma_cgetrf_m at cgetrf_m.cpp:374
CUDA runtime error: unspecified launch failure (4) in magma_cgetrf_m at cgetrf_m.cpp:375
46000 1 12903.60 ( 20.12) -nan
Any help is very welcome.
Thanks a lot in advance, regards :)