CuPyで配列を部分配列に切り分けて結合してから平均

  • メモ.後でちゃんと書く
  • 結論:次が最速
cupy.mean(cupy.stack(cupy.split(data, split_size)), axis=axis)
  • ダメなケース:cupy.split(data, split_size)がリストで返ってくるからといって,cupy.array()でcupy配列にしてから平均を取ろうとすると,GPUとの無駄な通信が発生して,実行速度が遅くなる.GPU・CPU間の通信は極力減らすのが鉄則.
cupy.mean(cupy.array(cupy.split(data, split_size), dtype='f'), axis=axis) # かなり遅い
cupy.array(numpy.mean(numpy.split(cupy.asnumpy(data), split_size), axis=axis), dtype='f') #少しマシになったけどまだ遅い