cudaMemcpyFromSymbol()
以下に、カーネルから結果を取得するために使用する自己完結型の例を含めました。この例では、symbol パラメーター (呼び出しの 2 番目のパラメーター) を通常の変数として渡します。ただし、CUDAのドキュメントを理解しているので、パラメーターを文字列として渡します。つまり、次のとおりです。
cudaMemcpyFromSymbol(&out, "out_d", sizeof(out_d), 0, cudaMemcpyDeviceToHost);
(シンボル名を引用符で囲む) も機能するはずです。それは私にはうまくいきません。
シンボル名はいつ機能し、文字列としてのシンボル名はいつ機能しますか?
#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;
}