#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;
}
我认为 cudaDeviceReset 的作用是 cudamemcpy。在这种情况下,我们没有数字结果。因此,我们无法使用 cudamemcpy。但是我们使用 cudaDeviceReset 从内核返回四个“Hello from GPU!”的结果。
这样对吗?
后来我用 cudaDeviceSynchronize() 替换了 cudaDeviceReset()。我看到了相同的结果,但我不知道它们之间的区别。
cudaDeviceReset()
对于像cuda-memcheck
这样的工具是必需的,因此在程序结尾包含它是一个好习惯。 - MikhailcudaDeviceReset
,就不必使用cudaFree
了? - MatancudaFree
以及用于什么目的。我们不太可能在评论中解决这个问题。 - Robert Crovella