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