2017-09-15 30 views
0

2つの非デフォルトストリームの2つのホストスレッドからカーネルを発行するために、スレッドごとに--defaultストリームを使用しています。 cudnn apiを呼び出すとデフォルトのスレッドでそのapiが実行されるため、両方のスレッドでcudnnを使用するまでは、すべて正常に動作します。スレッドごとのCUDAストリームとライブラリの動作

私は、cudnn api呼び出しを行ったホストスレッドに関連付けられたストリームで各cudnn apiを実行したいと思います。私はcudnnSetStream()を使用して非デフォルトストリームを設定することができますが、cudnnSetStream()に渡すためにホストスレッドに関連付けられたストリームを取得する必要があります。

cudnn apiを呼び出す現在のホストスレッドに関連するストリームをホスト側で取得するにはどうすればよいですか。

EDIT:Cとubuntuを使用しています。

ありがとうございます。

+0

@Olaf ...あなたはcudaがCプログラミング言語を使用しているとは思わないので、Cタグを削除して投票しましたか? :) – user1934513

+0

@RobertCrovellaあなたの提案cudnnSetStream(cudaStreamPerThread);素晴らしい仕事をした。ありがとう – user1934513

+0

CUDAは明らかにCではありません!タグをスパムしないでください。あなたが 'nvcc'を参照する回答を受け入れるにつれて、Cを使わないことは明らかです。それが間違っていれば、答えは間違っています。あなたは" Cを使っています " *標準C **コード!同様の構文を使用しても、あなたがdo.Read [ask]を意味するわけではありません。 – Olaf

答えて

2

一般に、コンパイル済みライブラリは、コンパイル済みライブラリを呼び出す独自のコードをコンパイルするときにnvccに渡す--default-stream per-threadを選択しません。この場合、ヌルストリームを設定するだけではありません。

この場合、ライブラリーにデフォルトストリームを使用するには、ライブラリにストリーム設定機能があると仮定して、cudaStreamPerThreadストリームハンドル(here)を使用する必要があります。

ような何か:

cudnnSetStream(handle, cudaStreamPerThread); 

か:

​​3210

か:

nppSetStream(cudaStreamPerThread) 

これもCUFFTとストリーム設定機能を持っている他のライブラリについても同様に動作するはずです。

関連する問題