вызов.

я есть некоторые функции, которые загружают переменную в постоянную память устройства и запускают функцию ядра. Я заметил, что первый раз, когда одна функция загружает переменную в постоянную память, занимает 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;
        }

Почему это происходит? Могу ли я избежать этого?

Ответы на вопрос(1)

Ваш ответ на вопрос