这是我第一次在这里提问,所以提前非常感谢,请原谅我的无知。而且我刚刚开始进行 CUDA 编程。
基本上,我有一堆点,我想计算所有成对的距离。目前我的内核函数只保留一个点,并迭代地读取所有其他点(从全局内存),并进行计算。以下是我的一些困惑:
我正在使用具有 448 个内核的 Tesla M2050。但是我当前的并行版本(内核<<<128,16,16>>>)实现了更高的并行度(比内核<<<1,1,1>>>快约600倍)。可能是由于多线程问题或管道问题,还是它们实际上表示同一件事?
我想进一步提高性能。所以我想使用共享内存来为每个多处理块保存一些输入点。但新代码同样快。可能的原因是什么?这可能与我设置的线程过多有关吗?
或者,是因为我在代码中有一个 if 语句吗?问题是,我只考虑和计算短距离,所以我有一个类似的声明(如果 dist < 200)。我应该为这个担心多少?
一百万谢谢!垃圾桶