例如,如果我在m x n
矩阵上操作,我很可能需要传递m
和传递n
给我的内核。
如果我还需要知道总点数N = m*n
,我应该作为参数传递N
(并消耗带宽)还是在内核中为每个线程本地计算N
(并消耗大量重复操作的处理能力,即使N
只需要计算一次) ?
在这里,我说的是针对大型数据集的集合启动了 1000 次的内核,因此确实在努力提高性能。
Stride 是另一个例子,你在启动内核之前就知道 TBP 和 BPG,因此可以预先计算。
例如,如果我在m x n
矩阵上操作,我很可能需要传递m
和传递n
给我的内核。
如果我还需要知道总点数N = m*n
,我应该作为参数传递N
(并消耗带宽)还是在内核中为每个线程本地计算N
(并消耗大量重复操作的处理能力,即使N
只需要计算一次) ?
在这里,我说的是针对大型数据集的集合启动了 1000 次的内核,因此确实在努力提高性能。
Stride 是另一个例子,你在启动内核之前就知道 TBP 和 BPG,因此可以预先计算。