KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am using Cuda SDK 4.0 and am encountering an issue which has taken me 2 days to whittle down into the following code. #include <cuda.h> #include <cuda_runtime.h> void main (int argc, char ** argv) { int* test; cudaError_t err; err = cudaSetDevice( 1 ); err = cudaMallocHost(&test, 1024*sizeof(int)); err = cudaSetDevice( 0 ); err = cudaFreeHost(test); } This throws the following error when calling cudaFreeHost: First-chance exception at 0x000007fefd96aa7d in Test.exe: Microsoft C++ exception: cudaError_enum at memory location 0x0022f958.. The err value is cudaErrorInvalidValue The same error occurs for this variation: err = cudaSetDevice( 0 ); err = cudaMallocHost(&test, 1024*sizeof(int)); err = cudaSetDevice( 1 ); err = cudaFreeHost(test); The following variations dont throw the error: err = cudaSetDevice( 0 ); err = cudaMallocHost(&test, 1024*sizeof(int)); err = cudaSetDevice( 0 ); err = cudaFreeHost(test); and err = cudaSetDevice( 1 ); err = cudaMallocHost(&test, 1024*sizeof(int)); err = cudaSetDevice( 1 ); err = cudaFreeHost(test); I was under the impression you only needed to call cudaSetDevice if you want to allocate memory on a specific GPU. In the above example I am only allocating pinned memory on the CPU. Is this a bug or did I miss something in the manual?
Tags (comma-separated)
Save Edits
Cancel