Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CUDAMEMCPITOSYMBOL性能_Cuda_Gpu_Gpu Constant Memory - Fatal编程技术网

CUDAMEMCPITOSYMBOL性能

CUDAMEMCPITOSYMBOL性能,cuda,gpu,gpu-constant-memory,Cuda,Gpu,Gpu Constant Memory,我有一些函数可以在恒定的设备内存中加载一个变量并启动一个内核函数。 我注意到,第一次一个函数在常量内存中加载一个变量需要0.6秒,但在常量内存中的下一次加载非常快,需要0.0008秒。 无论哪一个函数主要是第一个函数,这种行为都会发生。 下面是一个示例代码: __constant__ double res1; __global__kernel1(...) {...} void function1() { double r

我有一些函数可以在恒定的设备内存中加载一个变量并启动一个内核函数。 我注意到,第一次一个函数在常量内存中加载一个变量需要0.6秒,但在常量内存中的下一次加载非常快,需要0.0008秒。 无论哪一个函数主要是第一个函数,这种行为都会发生。 下面是一个示例代码:

        __constant__ double res1;

        __global__kernel1(...) {...}

        void function1() {
            double resHost = 255 / ((double) size);
            CUDA_CHECK_RETURN(cudaMemcpyToSymbol(res1, &resHost, sizeof(double)));


            //prepare and launch kernel
        }

        __constant__ double res2;

        __global__kernel2(...) {...}

        void function2() {
            double resHost = 255 / ((double) size);
            CUDA_CHECK_RETURN(cudaMemcpyToSymbol(res2, &resHost, sizeof(double)));


            //prepare and launch kernel
        }

        int main(){
            function1(); //takes 0.6 seconds for loading
            function2(); // takes 0.0008 seconds for loading
            function1(); //takes 0.0008 seconds for loading

            return 0;
        }
为什么会这样?我可以避免吗

为什么会这样

惰性运行时API上下文的建立和设置

我可以避免吗

不需要。第一个需要上下文的运行时API调用将导致严重的安装延迟,在您的情况下,这是第一个cudaMemcpyToSymbol调用

为什么会这样

惰性运行时API上下文的建立和设置

我可以避免吗

不需要。第一个需要上下文的运行时API调用将导致严重的安装延迟,在您的情况下,这是第一个cudaMemcpyToSymbol调用