相关疑难解决方法(0)

cudaDeviceReset()在Cuda中的作用是什么?

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
__global__ void funct(void){
      printf("Hello from GPU!\n");
}

int main(void){
         funct << < 2, 4 >> >();

for (int i = 0; i < 10; i++){
    cudaDeviceReset();
    //cudaDeviceSynchronize();
    printf("Hello, World from CPU!\n");

    }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为cudaDeviceReset的作用是cudamemcpy.这种情况我们没有数字的结果.所以我们无法使用cudamemcpy.但我们使用cudaDeviceReset返回四个"来自GPU的Hello!" 来自内核的结果.

是对的吗?

我用cudaDeviceSynchronize()替换了cudaDeviceRest().我看到了同样的结果.但我不知道他们之间的区别.

cuda

8
推荐指数
1
解决办法
6446
查看次数

是否有可能杀死正在运行的CUDA内核?

让我们说我有很多CUDA内核,我可以要求GPU执行。无论如何,我都不想修改内核代码(包括一个陷阱)。

有没有办法杀死这样一个正在运行的内核?

我打算自动生成内核(遗传编程)。这些内核可能具有需要很长时间才能完成的行为。如果我可以在内核运行时杀死它,那么我可以维护一个计时器并根据需要杀死它。

cuda gpgpu nvidia

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

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
查看次数

如何使用Driver API将Cuda错误重置为成功?

我有一个内核,可能asm("trap;")在内核内部调用。但是,发生这种情况时,CUDA错误代码设置为启动失败,我无法重置它。

在CUDA Runtime API中,我们可以cudaGetLastError用来获取最后一个错误,同时将其重置为cudaSuccess

是否可以使用Driver API做到这一点?

cuda

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

标签 统计

cuda ×4

cuda-gdb ×1

exception-handling ×1

gpgpu ×1

nvidia ×1