質問するログイン新規登録

回答編集履歴

2

追記

2020/06/25 05:17

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -11,4 +11,5 @@
11
11
  - 最後に結果をCPUに引き戻す
12
12
 
13
13
  ことが望まれますが、メモリ転送をPythonでどこまで制御できるかは僕はわからんですごめんなさい。
14
- ※ 僕はC++でベタ書きするのでメモリ転送のタイミングは僕次第
14
+ ※ 僕はC++でベタ書きするのでメモリ転送のタイミングは僕次第
15
+ ※ とはいえこのテのことを考慮してると(さくさく書けるってゆー)Pythonのウマミがなくなりますよねー

1

追記

2020/06/25 05:17

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -2,4 +2,13 @@
2
2
  > Maximum number of threads per block: 1024
3
3
 
4
4
  が示すとおり、blockあたりのthread数は最大1024です。
5
- また、threadの実行効率考慮するとblockあたりのthread数は2のベキ(1024, 512, 256...)が望まれます。
5
+ また、threadの実行効率考慮するとblockあたりのthread数は2のベキ(1024, 512, 256...)が望まれます。
6
+
7
+ CUDAを使った時パフォーマンスを落とす大きな要因はデバイス(GPU)とホスト(CPU)間のメモリ転送。
8
+ これを極力減らす(CPU/GPU間を行ったり来たりしない)、つまり
9
+ - 計算に必要な領域はまとめてGPUに転送しておき
10
+ - 一気にまとめて実行し
11
+ - 最後に結果をCPUに引き戻す
12
+
13
+ ことが望まれますが、メモリ転送をPythonでどこまで制御できるかは僕はわからんですごめんなさい。
14
+ ※ 僕はC++でベタ書きするのでメモリ転送のタイミングは僕次第