下面,我已经包含了一个自包含的示例,用于cudaMemcpyFromSymbol()从内核中检索结果.该示例将symbol参数(调用中的第二个参数)作为常规变量传递.但是,据我了解CUDA文档,将参数作为字符串传递,即:
cudaMemcpyFromSymbol(&out, "out_d", sizeof(out_d), 0, cudaMemcpyDeviceToHost);
Run Code Online (Sandbox Code Playgroud)
(带符号名称的引号),也应该有效.这对我不起作用.
符号名称何时起作用以及符号名称何时起作用?
#include "cuda_runtime.h"
#include <stdio.h>
__device__ int out_d;
__global__ void test() {
out_d = 123;
}
int main() {
test<<<1,1>>>();
int out;
cudaMemcpyFromSymbol(&out, out_d, sizeof(out_d), 0, cudaMemcpyDeviceToHost);
printf("%d\n", out);
return 0;
}
Run Code Online (Sandbox Code Playgroud)