【发布时间】:2015-02-18 03:40:05
【问题描述】:
假设我有一个包含 32 个线程的块,需要随机访问 1024 个元素的数组。我想通过最初将块从全局转移到共享来减少全局内存调用的数量。我有两个想法:
答:
my_kernel()
{
CopyFromGlobalToShared(1024 / 32 elements);
UseSharedMemory();
}
或乙:
my_kernel()
{
if (first thread in block)
{
CopyFromGlobalToShared(all elements);
}
UseSharedMemory();
}
哪个更好?还是有其他更好的方法?
【问题讨论】:
-
我想说第一个可能会更快,如果实施得当,原因很简单,所有其他线程都会等待第一个线程完成加载。