1.最大化每个线程的计算量
2.最小化每个线程的内存读取速度
每个线程读取的数据量少
每个线程读取的速度快(本地内存 > 共享内存 > 全局内存 ,对于全局内存,我们还需要合并全局内存)
而对于全局内存,我们有以下情况,连续的是最好的,有规则的访问其次,随机访问最拉跨
3.避免线程发散
同一个线程块的线程执行不同内容的代码
导致发散的例子
kernel中做条件判断
循环长度不一
1.最大化每个线程的计算量
2.最小化每个线程的内存读取速度
每个线程读取的数据量少
每个线程读取的速度快(本地内存 > 共享内存 > 全局内存 ,对于全局内存,我们还需要合并全局内存)
而对于全局内存,我们有以下情况,连续的是最好的,有规则的访问其次,随机访问最拉跨
3.避免线程发散
同一个线程块的线程执行不同内容的代码
导致发散的例子
kernel中做条件判断
循环长度不一