I want to use the ?syevd function. I read the example code in 'testing' and found that some arguments of ?syevd are the memory on host. So I need not to do the memory allocation and copy by myself. Am I right?

Hi,The interface to ?syevd is exactly as in LAPACK. The workspace only has to be allocated in pinned memory using cudaMallocHost (or the MAGMA TESTING_HOSTALLOC) as shown in tesing_?syevd. The user does not have to copy any data between the CPU and the GPU, and the user does not have to allocate memory on the GPU.Stan

CPU page-locked memory makes it possible to achieve higher communication bandwidth between the CPU and GPU. To quantify the difference on your system you can run the bandwidthTest program that comes with the CUDA SDK.Stan

I am using magma 1.0.0-rc5 on Windows 7 64 bit.When using the testing_dsyevd.cpp my system fails on the allocation for TESTING_HOSTALLOC for matrices with size 4000 and higher.I replaced that code with TESTING_MALLOC (twice in the code) and the allocation is now working and the test is running.

I understand that the difference is using memory without pagefaults or not, but can someone explain why it fails for HOSTALLOC and not for the regular MALLOC?Is it possible to change the computer setting such that it won't fail for HOSTALLOC?Is there a real advantage for using the non-pagefaults host memory for big matrices or the code copy the host memory only once so i shouldn't expect a difference? I did a test, with a regular MALLOC I get those results:Matrix size : CPU time : GPU time1024 4.95 3.032048 37.85 17.04 3072 125.11 55.01