0

Ubuntu 12.10 64 ビットに cuda 5 をインストールしました。私は GTX 675M を持っているので、bumblebee を使用して cuda デバイスでアプリを実行しています。バンブルビー(optirun)でnsightを実行しています:

frederico@zeus:~$ optirun /usr/local/cuda/libnsight/nsight

そして、問題なく動作し、アプリケーションをコンパイルして実行できます。問題は、nsight で cuda-gdb を使用しようとすると、デバッグ ボタンをクリックすると次のエラーが発生することです。

No source available for "main() at 0x403c6f" 

しかし、コンソールで cuda-gdb を使用しようとすると、動作します:

frederico@zeus:~/Dropbox/coisas/projetos/delta_cuda$ optirun cuda-gdb bin/linux/release/gpu_md5 
NVIDIA (R) CUDA Debugger
5.0 release
Portions Copyright (C) 2007-2012 NVIDIA Corporation
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/frederico/Dropbox/coisas/projetos/delta_cuda/bin/linux/release/gpu_md5...done.
(cuda-gdb) run
Starting program: /home/frederico/Dropbox/coisas/projetos/delta_cuda/bin/linux/release/gpu_md5 
[Thread debugging using libthread_db enabled]
[New Thread 0x7ffff1dfe700 (LWP 10437)]
[New Thread 0x7ffff07f7700 (LWP 10438)]
[New Thread 0x7fffb07f6700 (LWP 10439)]
[New Thread 0x7fff6bfff700 (LWP 10440)]
[New Thread 0x7fff23fff700 (LWP 10441)]
[New Thread 0x7ffedbfff700 (LWP 10442)]
[New Thread 0x7ffe93fff700 (LWP 10443)]
[New Thread 0x7ffe4bfff700 (LWP 10444)]
[New Thread 0x7ffe03fff700 (LWP 10445)]
[Thread 0x7ffe03fff700 (LWP 10445) exited]
[Thread 0x7fffb07f6700 (LWP 10439) exited]
[Thread 0x7ffe4bfff700 (LWP 10444) exited]
[Thread 0x7fff23fff700 (LWP 10441) exited]
[Thread 0x7ffe93fff700 (LWP 10443) exited]
[Thread 0x7ffedbfff700 (LWP 10442) exited]
[Thread 0x7ffff07f7700 (LWP 10438) exited]
[Thread 0x7fff6bfff700 (LWP 10440) exited]
[Thread 0x7ffff1dfe700 (LWP 10437) exited]

Program exited with code 030.
(cuda-gdb) 

何が起こっている可能性がありますか?

4

1 に答える 1

1

アプリケーションが中断すると、そのメッセージが出力されます。これは、アプリケーションがデバッグ情報を使用してコンパイルされていないことを意味します。この場合、デバッガーは命令をソース行にマップできません。

コマンドライン cuda-gdb でこのメッセージを再現するには、ブレークポイントで一時停止する必要があります。たとえば、「run」を実行する前に「break main」を実行します。

更新 - 将来的に同様の問題を抱えている人のために

アプリケーションは次のように構築されました。

  1. CUDA カーネル コードは NVCC でコンパイルされ、デバッグ情報が含まれています。たとえば、NVCC 呼び出しは次のとおりです。nvcc -g -G -c mykernel.cu -o mykernel.o
  2. このオブジェクト ファイルは、デバッグ情報を生成せずに GCC によってコンパイルされた他のオブジェクト ファイルとリンクされていました - g++ mycpp1.cpp mycpp2.cpp mykernel.cu -o mycudaapplication. これにより、cuda-gdb がパスを適切に解決するには不十分な部分的なデバッグ情報が得られました。

Nsight Eclipse Edition はデフォルトで cuda-gdb ソース パス解決に依存して、CUDA アプリケーションのデバッグ時にエディターで開くファイルを見つけます。

于 2012-10-22T17:18:06.633 に答える