2016-07-31 6 views
-1

私はhelper_cuda.hを含んでおり、私のコードではすべてのCUDA呼び出しでcheckCudaErrorsマクロを使用しています。checkCudaErrorsがエラー情報を表示しない

checkCudaErrors(cudaMalloc(&GPUCameraData, sizeof(float) /*<-- Should be HCameraData */)); 
checkCudaErrors(cudaMemcpy(GPUCameraData, CPUCameraData, sizeof(HCameraData) 
                 , cudaMemcpyHostToDevice)); 

アプリケーションはエラーコード1で終了しますが、情報は出力されません。最初の行を折って2行目に入ると、_cudaGetErrorEnum()helper_cuda.hには"cudaErrorInvalidValue"が返されますが、出力には情報は表示されません。

私が使用する開発環境はVisual Studio 2013で、これをデバッグモードとリリースモードの両方でテストしました。

注:私はOpenGLとglGetErrorで同じ問題があります。まるで自分のファイル構造の中に直接ないコードからのfprintf(stderr, ...);呼び出しが何も印刷しないように見えます。

+1

プログラムをコマンドラインまたはVS内で実行していますか? VS内からプログラムを実行している場合は、コマンドラインから実行してみてください。 VS内にはないがエラー出力が発生した場合は、VSの設定を検査する必要があります([stderrパイプがどこにルーティングされているかを把握する](http://stackoverflow.com/questions/2683249/redirect- stdout-and-stderr-to-the-output-debug-console-of-microsoft-visual-studi)) –

+0

@RobertCrovella stderrパイプをエラーログテキストファイルにルーティングし、エラーメッセージがここに正しく出力されるようになりました。私はそれらをVS IDEの出力ログにルーティングする方法を理解しようとします。あなたの提案を答えとして追加してください。 – henrikdahlberg

答えて

0

デフォルトのC++アプリケーション(あなたのケースではCUDAとOpenGLの廃止)以外のタイプのアプリケーションを作成している可能性があります。つまり、このコードをライブラリにコンパイルしていて、または何らかの種類のリンクの問題(どのタイプのプロジェクトがありますか...必要な情報!)。 "checkCudaErrors"の中で "fprintf"コマンドではなく "mexPrintf"コマンドで印刷するMatlab-Mexファイルにcudaコードをコンパイルしたときも同じ問題がありました。 helper_cuda.hの中のprintコマンドをfprintfからコマンドからの情報をあなたのプログラムから呼び出すと変更することをテストするかもしれません。

関連する問題