cudaMallocManaged()返回"操作不受支持"

时间:2014-05-12 02:59:20

标签: cuda

在调用operation not supported时,在CUDA 6.0中试用托管内存会给我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 \项目\ CPP \ test_cuda6 \ test_cuda6&gt;“中C:\程序   Files \ NVIDIA GPU Computing Toolkit \ 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 Computing Toolkit \ CUDA \ v6.0 \ include”-I“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v6.0 \包括“--keep-dir Release -maxrregcount = 0 --machine 32 --compile -cudart static -DWIN32 -DNDEBUG -D_CONSOLE -D_MBCS -Xcompiler”/ EHsc / W3   / nologo / O2 / Zi / MD“-o Release \ kernel.cu.obj   “C:\ RD \项目\ CPP \ test_cuda6 \ test_cuda6 \ kernel.cu”

如果我将cudaMallocManaged()替换为cudaMalloc(),则程序会正常运行。

有关如何让cudaMallocManaged()工作的任何想法?

1 个答案:

答案 0 :(得分:11)

  

尝试了32位调试和发布版本。

使用64位调试或发布版本。

来自the documentation

  

J.1.4。系统要求

     

统一内存有三个基本要求:

     

•具有SM架构3.0或更高版本的GPU(Kepler类或更新版)

     

•64位主机应用程序和操作系统,Android上除外

     

•Linux或Windows

64位主机应用程序意味着您无法编译32位调试或发布版本。