我已经使用posix_memalign
. 调用posix_memalign
不会返回任何错误。但是,使用此指针作为参数cudaHostRegister
会给我一个“无效参数”错误。可能是什么问题?
- CUDA API 版本:4.0
- gcc 版本:4.4.5
- GPU计算能力:2.0
内存分配在应用程序代码中完成,并将指针传递给库例程。
应用程序代码片段:
if(posix_memalign((void **)&h_A, getpagesize(), n * n * sizeof(float))) {
printf("Error allocating aligned memory for A\n");
return 1;
}
共享库代码片段:
if((ret = cudaSetDeviceFlags(cudaDeviceMapHost)) != cudaSuccess) {
fprintf(stderr, "Error setting device flag: %s\n",
cudaGetErrorString(ret));
return NULL;
}
if((ret = cudaHostRegister(h_A, n2 * sizeof(float),
cudaHostRegisterMapped)) != cudaSuccess) {
fprintf(stderr, "Error registering page-locked memory for A: %s\n",
cudaGetErrorString(ret));
return NULL;
}