我在 matlab 中使用 cuda\jacket 遇到了一个非常缓慢的 if 语句响应。(对于找到局部最大值的相同代码,使用简单的 for 循环和 if 条件,5 秒对 0.02 秒)
作为 GPU 编程的新手,我去阅读,当我看到以前的matlab if 语句与 CUDA SO 讨论时,我觉得缺少了一些东西。您无需使用 cuda 即可知道对代码进行矢量化会更好。但是,在某些情况下,无论如何您都需要使用 if 语句。例如,我想找出 2D 图像的像素(比如 m(a,b))是否是其 8 个最近邻居的局部最大值。在 matlab 中,一种简单的方法是在 if 语句上使用 8 个逻辑条件:
如果 m(a,b)>m(a-1,b-1) & m(a,b)>(a,b-1) & m(a,b)>(a+1,b-1) & ... 等所有最近的邻居
如果您知道如何解决(或矢量化)这个问题,我将不胜感激......