1. 若 kernel 執行後直接馬上結束、記憶體存取錯誤或跑出來的值不對,可能是 kernel 有寫錯,也可能是 global memory 使用太多而爆掉。而 global memory 使用太多時,編譯器不一定會挑出錯誤。
2. kernel 中宣告太多變數,使用的 register 量可能過多,造成每次跑的 thread 個數較少(資源不夠的關係)。
3. 如果有 if ... else ... 或其他分支,造成每個 thread 的執行時間長短不一,必須同步?
1. 若 kernel 執行後直接馬上結束、記憶體存取錯誤或跑出來的值不對,可能是 kernel 有寫錯,也可能是 global memory 使用太多而爆掉。而 global memory 使用太多時,編譯器不一定會挑出錯誤。
2. kernel 中宣告太多變數,使用的 register 量可能過多,造成每次跑的 thread 個數較少(資源不夠的關係)。
3. 如果有 if ... else ... 或其他分支,造成每個 thread 的執行時間長短不一,必須同步?