在 CUDA 6.0 中尝试托管内存给了我operation not supported
打电话时cudaMallocManaged()
.
#include "cuda_runtime.h"
#include <stdio.h>
#define CHECK(r) {_check((r), __LINE__);}
void _check(cudaError_t r, int line) {
if (r != cudaSuccess) {
printf("CUDA error on line %d: %s\n", line, cudaGetErrorString(r), line);
exit(0);
}
}
int main()
{
int *c;
CHECK(cudaMallocManaged(&c, sizeof(int)));
*c = 0;
return 0;
}
GeForce GTX 750 Ti (Maxwell),使用compute_50、sm_50 使用 CUDA 6.0 进行编译。 Windows 7 64 位。使用驱动程序 335.23 (whql) 和 337.50 (beta) 进行测试。 Visual Studio 2012。尝试了 32 位调试和发布版本。
C:\rd\projects\cpp\test_cuda6\test_cuda6>"C:\Program
文件\NVIDIA GPU计算工具包\CUDA\v6.0\bin\nvcc.exe”
-gencode=arch=compute_50,code=\"sm_50,compute_50\" --use-local-env --cl-version 2012 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin" -I\C\common\inc -I"C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v6.0\include" -I"C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v6.0\包括“--keep-dir发布-maxrregcount = 0 --machine 32 --compile -cudart静态-DWIN32 -DNDEBUG -D_CONSOLE -D_MBCS -Xcompiler“/ EHsc / W3
/nologo /O2 /Zi /MD " -o Release\kernel.cu.obj
“C:\rd\projects\cpp\test_cuda6\test_cuda6\kernel.cu”
如果我替换,程序运行不会出错cudaMallocManaged()
with cudaMalloc()
.
关于如何获得的任何想法cudaMallocManaged()
在职的?
尝试过 32 位调试和发布版本。
使用 64 位调试或发布版本。
From 文档 http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-requirements:
J.1.4。系统要求
统一内存有三个基本要求:
•具有 SM 架构 3.0 或更高版本的 GPU(Kepler 级或更高版本)
• 64 位主机应用程序和操作系统(Android 除外)
•Linux或Windows
64 位主机应用程序意味着您无法编译 32 位调试或发布版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)