CUDAの最適なThread数

CUDAのプログラムではBlock内のThread数は多くすると必ずしも速くなるとは限らない。
Occupancyとかの関係でThread数を変えていくと突然速くなるポイントがあったりする。

Thread数を減らしても同時にSMに入るBlock数が増えてOccupancyが上がれば速度が上がる・・事もある。

最速のThread数を求めるためには、Thread数を変えながらプロファイルを取っていくしかないのかな?
動的にベストなThread数を求められればいいんだけど。
Shared Memoryの使用量、Kernelの利用Register数とかが複雑に絡むし、同じOccupancyになるように
Thread数を調整しても速度に差がついたりするから難しいだろうな。

とりあえずOccupancyが最大になる個所を動的に求める方法を考えてみるかな。