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