私はOpen Fl Flockingを書くと私は奇妙な問題があります。カーネル実行の前に、clEnqueueReadBufferはgpu memからプログラムmem 20000配列floatへの読み込みに非常に高速ですが、カーネルが実行した後、渡された配列上で何らかの操作を行った後、最後にreadbufferが長すぎます(〜150 ms)。どうして?どちらの場合も、配列はデータで埋められました。私のカーネルはどうしたのでしょうか? (渡された配列は__globalです)。Open CL clEnqueueReadBuffer実行時間
1
A
答えて
1
clEnqueueNDRangeKernel
は、実際にカーネルを起動しないので、それらを「エンキュー」します。 OpenCLの実装は、カーネルが適切に見えるときにいつでもカーネルを開始することができます(この場合、結果を知るためにカーネルを実行する必要があるので、結果を読むように頼んだとき)。
しかし、実装では強制的にカーネルを開始することができます。clFinish
。
実際には、カーネルが実行されるまでに150msの遅延があります。
clFinish
を実行と2回目の読み込みの間に呼び出すと、動作します。
関連する問題
- 1. Oracle Open Cursor実行時間
- 2. Open CL with AMD
- 3. TextRank実行時間
- 4. FlexUnit実行時間
- 5. Python:Thread実行時間
- 6. 実行時間viewcontroller
- 7. Virtuoso SPARQL実行時間
- 8. Movement EquationDeltaHeight =(Sin(実行時間+ DeltaTime) - Sin(実行時間));
- 9. Curl/php:実行時間?
- 10. Powershell systeminfo実行時間
- 11. 加算値 - 実行時間
- 12. 実行時間PHP対MySQL
- 13. PHP「最大実行時間」
カーネルが実行される前にgpuメモリがどのようにデータで満たされていましたか? – ardiyu07