2017-03-16 5 views
-3

最近Visual Studio 2015でCUDA 8.0を使用するアプリケーションを構築し始めました。動的並列処理を使用する必要があるため、コード生成をcompute_35、sm_35をcompute_20、sm_20(defualt)に変更する必要がありました。私はそれを変更して以来、カーネル内でprintf()を呼び出すと何も印刷されません。 動的パラレル化を使用してカーネル内部から何かを印刷する方法をご存じですか?CUDAカーネル内でprintfを使用できません

おそらく私のグラフィックカードは、のGeForce GTX 760

+4

これは、カーネルの 'printf'や動的パラレル化(DP)と' printf'では問題ありません。ほとんどの場合、コードにエラーがあり、カーネルが正常に実行されない可能性があります。あなたがcudaコードに問題があるときはいつでも、[適切なCUDAエラーチェック](http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for -errors-the-cuda-runtime-api)を実行し、 'cuda-memcheck'でコードを実行してください。エラーチェック方法は、親カーネルコードの中からDPケースの子起動カーネルにも使用できます。 –

答えて

3

あなたのGeForce GTX 760 is of compute capability 3.0とダイナミック並列処理をサポートしていないであることを言及する価値があります。

バーチャルcompute_35アーキテクチャ用にコンパイルすると、仮想アーキテクチャがデバイスの計算能力以下である必要があるため、カーネルがまったく実行できなくなります。したがって、カーネル内のprintf()からの出力は表示されません。

Robert Crovellaが上記のように述べているように、適切なエラーチェックをすればこのことに気付いたでしょう。

+0

ありがとうございました。私はCUDAを初めて使っているので、私はこれらのことすべてを知らなかった。 – hegendroffer

関連する問題