cudaMemcpyToSymbol vs. cudaMemcpy why is it still around (cudaMemcpyToSymbol)

后端 未结 1 1911
死守一世寂寞
死守一世寂寞 2020-12-08 22:58

As stated by other questions and according to the link, you can no longer use the symbol name for this function. Now that the feature is gone, when would ever want to use th

相关标签:
1条回答
  • 2020-12-08 23:49

    In short, because cudaMemcpy can't do the same thing as cudaMemcpyToSymbol without an additional API call. Consider a constant memory array:

    __constant__ float coeffs[8];
    

    To copy values to this array using cudaMemcpyToSymbol, just do

    cudaMemcpyToSymbol(coeffs, hostData, 8*sizeof(float));
    

    To do the same with cudaMemcpy requires this:

    float *dcoeffs;
    cudaGetSymbolAddress((void **)&dcoeffs, coeffs);
    cudaMemcpy(dcoeffs, hostData, 8*sizeof(float), cudaMemcpyHostToDevice);
    

    A direct call to cudaMemcpy is illegal without prior symbol lookup.

    [standard disclaimer: all code written in browser without access to documentation or compiler, use at own risk]

    0 讨论(0)
提交回复
热议问题