Memory CUDA全局内存访问速度

Memory CUDA全局内存访问速度,memory,cuda,global,Memory,Cuda,Global,以下是简单的cuda代码。 我正在测试访问全局内存的时间。读对了 下面是内核函数(test1() 在此处输入代码 __全局无效测试1(整数*直接映射) { int指数=10; int index2; 对于(int j=0;j删除代码行时: direct_map[index] = -1; 您的内核没有做任何有用的事情。编译器可以识别这一点,并删除与内核启动相关的大部分代码。对内核代码的修改意味着内核不再影响任何全局状态,从编译器的角度来看,代码实际上是无用的 您可以通过转储编译器在每种情况

以下是简单的cuda代码。
我正在测试访问全局内存的时间。读对了

下面是内核函数(test1()

在此处输入代码
__全局无效测试1(整数*直接映射)
{  
int指数=10;
int index2;

对于(int j=0;j删除代码行时:

direct_map[index] = -1; 
您的内核没有做任何有用的事情。编译器可以识别这一点,并删除与内核启动相关的大部分代码。对内核代码的修改意味着内核不再影响任何全局状态,从编译器的角度来看,代码实际上是无用的

您可以通过转储编译器在每种情况下生成的汇编代码来验证这一点,例如使用
cuobjdump-sass myexecutable

任何时候,只要对代码做一个小的更改,并看到时间上的一个大的更改,您就应该怀疑您所做的更改允许编译器做出不同的优化决策

enter code here

__global__ void test2(int *direct_map)   
{  
    int index = 10;  

    for(int j=0; j<1024; j++)  
    {  
        direct_map[index] = -1;  
        index = j*683 + j/3 - 1;  
    }  
}
direct_map[index] = -1;