CUDAコンテキストを作成するにはどうすればよいですか? CUDAの最初の呼び出しは遅く、カーネルを起動する前にコンテキストを作成します。CUDAコンテキストを作成するには?
4
A
答えて
9
強制的にランタイムAPIコンテキストを確立する正規の方法は、cudaFree(0)
を呼び出すことです。複数のデバイスを使用している場合は、コンテキストを確立するデバイスのIDをcudaSetDevice()
に、コンテキストを確立するにはcudaFree(0)
を指定してください。
編集:CUDA 5.0の時点では、コンテキスト確立のヒューリスティックスが若干異なり、cudaSetDevice()
自体が呼び出されてデバイス上でコンテキストを確立するように見えることに注意してください。だから明示的なcudaFree(0)
コールはもはや必要ではありません(何も傷つけることはありません)。
2
ランタイムAPIを使用する:cudaDeviceSynchronize
、cudaDeviceGetLimit
、または実際にコンテキストにアクセスするものは動作するはずです。
ドライバーAPIを使用していないことは確かです。怠惰な初期化はしませんが、ドライバー呼び出しのメリットはcuCtxCreate
です。
関連する問題
- 1. 作業者pthreadにcudaコンテキストを渡す
- 2. CUDAストリームとコンテキスト
- 3. EF4のコンテキスト作成
- 4. OpenCLコンテキストを作成するためのGLXコンテキスト
- 5. android.content.Contextとandroid.app.Activityでコンテキストを作成するには?
- 6. QtでOpenGL 4.2のコンテキストを作成するには?
- 7. Qt 4でOpenGL 3コンテキストを作成するには?
- 8. 64ビットCUDAアプリケーションの作成方法は? (Win7 x64、CUDA 4、VS 2010 Express)
- 9. 推力ベクトル型で普通のCUDAカーネルを作成する
- 10. RSpecテストの共有サンプル内で共有サンプルを作成するために、コンテキスト内にコンテキストをネストする方法(すでに別のコンテキストにある)
- 11. OpenGLコンテキストを確実に作成していますか?
- 12. C++ OpenGLウィンドウとコンテキスト作成フレームワーク/ライブラリ
- 13. CUDAプログラミング:レガシーGPUをCUDA 7.5ツールキットで使用するには?
- 14. Cudaでカーネルごとにパラメータベクトルをローカルに作るには
- 15. Java - 複数のスレッドのログ記録コンテキストを作成する
- 16. CoreDataを再作成する際のコンテキストの問題
- 17. コンテキストに基づいてASP MVCビューを動的に作成
- 18. CUDAのアトミック操作
- 19. AJAXリクエストを作成するコンテキストでGETとPOSTの違いは何ですか?
- 20. ランダムに「同じDbCompiledModelを使用してコンテキストを作成する」... Entity Frameworkで
- 21. CUDAプログラミング - 共有メモリ構成
- 22. Cudaは原子的に操作を実行します
- 23. コンテキストの作成に失敗しました0x3005
- 24. CUDAアトミック操作のリスト
- 25. HTTPコンテキストを保持するASP.NET呼び出しでスレッドを作成します。
- 26. CUDA共有メモリのカーネルで実行時に配列を作成する方法は?
- 27. Cudaカーネル内で乱数を生成
- 28. CUDAによるレイトレーシング
- 29. Djangoレンダリングビューでコンテキストを使用して作成
- 30. Jetty 6:コンテキスト(NoInitialContextException)を作成できません
私はlibrairy openCVを使用しています。最初の呼び出しは遅いです。アプリケーションでデバイスを選択できますが、アプリケーションの起動時にCudaのコンテキストを初期化したいと思います。私はcudaDeviceSynchronizeを試みますが、うまくいきません – Arkerone
その場合、実際にコンテキストを作成してもよろしいですか?それはほとんどのハードウェアでかなり速いです。 OpenCVは(ここで推測すると)大きなmemcpyを実行している可能性があり、事前初期化されたコンテキストはそこでは役に立ちません。 – ChrisV
opencv FAQ: "これは初期化オーバーヘッドのためです。最初のGPU関数呼び出しでは、Cuda Runtime APIが暗黙的に初期化されます。また、ビデオカードの最初の使用時にGPUコードがコンパイルされます。 アプリケーションでGPUコードを1回実行することが重要な場合は、複数の実行にわたって永続的なコンパイルキャッシュを使用することができます。nvcc詳細についてはドキュメント(CUDA_DEVCODE_CACHE環境変数)を参照してください。 – Arkerone