相关疑难解决方法(0)

当我知道有足够的内存空间时,为什么cudaMalloc会给我一个错误?

我有一个特斯拉C2070应该有5636554752字节的内存.

但是,这给了我一个错误:

int *buf_d = NULL;

err = cudaMalloc((void **)&buf_d, 1000000000*sizeof(int));

if( err != cudaSuccess)
{
     printf("CUDA error: %s\n", cudaGetErrorString(err));
     return EXIT_ERROR;
}
Run Code Online (Sandbox Code Playgroud)

这怎么可能?这是否与最大内存间距有关?以下是GPU的规格:

Device 0: "Tesla C2070" 
CUDA Driver Version:    3.20 
CUDA Runtime Version:   3.20 
CUDA Capability Major/Minor version number: 2.0 
Total amount of global memory:  5636554752 bytes 
Multiprocessors x Cores/MP = Cores: 14 (MP) x 32 (Cores/MP) = 448 (Cores) 
Total amount of constant memory:    65536 bytes Total amount of shared memory per block:    49152 bytes Total number …
Run Code Online (Sandbox Code Playgroud)

memory cuda

5
推荐指数
1
解决办法
1万
查看次数

cuda异常后的内存数据状态

在CUDA应用程序抛出异常后,CUDA文档不清楚内存数据如何变化.

例如,内核启动(动态)遇到异常(例如Warp超出范围的地址),将停止当前的内核启动.在此之后,设备上的数据(例如__device__变量)是否仍然保留,或者它们是否与例外一起被删除?

一个具体的例子是这样的:

  1. CPU启动内核
  2. 内核将__device__ variableA的值更新为5,然后崩溃
  3. CPU memcpy从设备到主机的variableA的值,在这种情况下CPU获得的值是5,还是其他什么?

有人能说明这背后的理由吗?

cuda exception-handling cuda-gdb

2
推荐指数
1
解决办法
751
查看次数

标签 统计

cuda ×2

cuda-gdb ×1

exception-handling ×1

memory ×1