2012-01-27 18 views
2

私はマルチスレッドアプリケーションのプロファイルにCUDA Computeprof(CUDAプロファイラ)を使用しようとしています。マルチスレッドで動作しないCUDA computeprof

私はQtで実装された2つのスレッドを持っていますが、それぞれが異なるCUDAコンテキストを使用しています。私はCUDAドライバAPIを使用しています。プロファイラアプリケーションは、最初の(メイン)スレッドからのCUDA呼び出しのみを検出し、他のスレッドからの呼び出しを完全に無視します。

誰にも回避策や理由がありますか?

+1

ビジュアルプロファイラは、一度に1つのCUDAコンテキストのみをプロファイルできます。 – talonmies

+0

@talonmiesおそらくそれを答える? – Bart

+0

@Bart:私は個人的にテストしていない "コーナーケース"が1つあり、ブランコは答えを確認したようだから、コメントです。 – talonmies

答えて

1

私は通常、マルチスレッドアプリケーションをプロファイルするためにNvidia Parallel Nsightを使用します。しかし、私はMonteCarloMultiGPU SDK 3.2のサンプルでCUDAプロファイラをテストしましたが、実際には同じセッションのすべてのCUDAコンテキストをプロファイルします。私はCUDA 4.0に付属のCUDAプロファイラを使用しています。

+0

新しいmultigpu実装がCUDA> = 4.0で使用され、複数のコンテキストが1つのスレッドによって保持されている場合が考えられます。しかし、マルチスレッド化されたmultiGPUの場合は動作しません(少なくとも、複数のGPUを使用したpthreadsベースの線形代数コードではそうではありませんでした)。 – talonmies

+0

私はMonteCarloMultiGPUのCUDA 3.2バージョンをテストしました。 CUDAプロファイラで実行しているときの出力では、 "launching x threads"という出力を見ることができました。だから私はそれが複数のスレッドで動作すると思います。ビジュアルプロファイラはまだCUDA 4.0のものです – brano

関連する問題