cuda 无效资源句柄

jmi*_*loy 5 cuda

这个错误是什么意思?我似乎找不到任何关于它的信息。它发生在 cudaEventRecord 上。

在项目头文件中:

cudaEvent_t cudaEventStart;
Run Code Online (Sandbox Code Playgroud)

在 .c 文件中:

cudaEventCreate(&cudaEventStart);
printf("create event: %d\n", (int) cudaEventStart);
Run Code Online (Sandbox Code Playgroud)

在我的一个 .cu 文件中:

printf("record event: %d\n", (int) cudaEventStart);
cudaEventRecord(cudaEventStart);
Run Code Online (Sandbox Code Playgroud)

相关输出显示呼叫的问题是什么。由于某种原因,cudaEventStart 在我的 cu 文件中不是有效的事件资源:

create event: 44199920
record event: 0
Run Code Online (Sandbox Code Playgroud)

细节

  • CUDA 3.2
  • GTX 480
  • 64位Win7

我正在将我的代码从 Linux 移植到 Windows。它在 linux 中的同一张卡上运行良好,并且只有一些更改。我定义roundf并添加了以下内容:

typedef size_t off_t;
#define strtof(str,n) (float)strtod(str,n)
#include <float.h>
#define isnan(n) _isnan(n)
#define strcasecmp _stricmp
#include <io.h>
#define read _read
Run Code Online (Sandbox Code Playgroud)

我不清楚为什么这些事情会影响 cuda 资源。也许我以某种方式错误地构建了项目......?

tal*_*ies 7

无效的资源句柄通常意味着尝试在未创建的上下文中使用某些内容(指针、符号、纹理、内核)。更具体的答案将需要更具体的问题,特别是您正在使用哪个 API 以及如何/是否在代码中的任何位置使用主机线程。