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