- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have installed MPICH2 compiled for "ifort". Now i compiled my code using this "mpif90" command. but when i try to oen the executable "a.out" in idb it gives following error:
(idb)
Error: could not start debuggee
Could not start process for current_dir/a.out
No image loaded ... Recovering ...
Any idea why this is happening? Any suggetions??
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
at first glance it looks as though the debugger does not know which node to look for the debuggee at. Thus the issue most likely may be in your MPI debug setup
Let me paste in an excerpt from our documentation that may help.
If that doesn't help please provide me with the detailed exact steps you are taking to start your MPI debug session.
MPI Cluster Support
The Intel IDB supports debugging of message passing interface (MPI) applications launched by
mpirun, an MPI launcher from mpich, a public domain implementation of MPI
mpiexec, an MPI launcher from Intel MPI 3.0 and later
prun, a parallel launcher of Resource Management System (RMS) from Quadrics
NOTE: MPI DEBUG SUPPORT CURRENTLY NOT GUI ASSISTED
MPI debug support is currently not directly assisted by the Intel Debugger Graphical User Interface. Please use either the command line version of IDB called iidb, or initiate the debugger connection to the MPI node from the debugger command window inside the Intel Debugger GUI.
To start your parallel application under debugger control, you need to have the environment variable IDB_HOME set to the directory that your debugger is in.
When debugging an application launched by mpich, issue the following command at the shell:
% mpirun -dbg=idbc -np N [other mpich options] application [application arguments] [-idb idb options]
where N represents number of processes and application is the name of the MPP program you would like to debug.
The debugger is now capable of debugging an MPI job that uses the MPICH or the Intel MPI 3.0 libraries. In addition, it is capable of attaching to an existing MPI job that uses MPICH.
NOTE: USE CORRECT MPIRUN_DBG SCRIPT
You need to copy the mpirun_dbg.idb script that comes with the debugger's package to the bin directory of your MPICH installation. Also note that the GDB compatibility mode is now available for debugging the MPI applications.
When debugging an application launched from the Intel MPI 3.0 and later libraries, issue the following command:
% mpiexec -idb -n
where N represents number of processes and application is the name of the program you would like to debug.
To attach to an existing MPI job that uses mpich, issue the following command:
% iidb -pid launcher pid -parallelattach application
where the launcher pid is the ID of the launcher process that spawned all the processes in the job and the application is the name of the launcher executable. To find the ID of this process, use the command "ps -xf". For example:
$ ps -ax | grep cpi | grep p4pg
1488 pts/38 S 0:00 /users/user_name/mpich-1.2.7p1/examples/basic/cpi -p4pg /users/user_name/mpich-1.2.7p1/mpich1_starters/PI1362 -p4wd /users/user_name/mpich-1.2.7p1/mpich1_starters
1489 pts/38 S 0:00 /users/user_name/mpich-1.2.7p1/examples/basic/cpi -p4pg /users/user_name/mpich-1.2.7p1/mpich1_starters/PI1362 -p4wd /users/user_name/mpich-1.2.7p1/mpich1_starters
To attach to the process, use the ID with the lesser value:
$ iidb -pid 1488 -parallelattach cpi
Intel Debugger for IA-32 -based Applications, Version X, Build XXX
Reading symbolic information from /nfs/isv/home/user_name/mpich-1.2.7p1/examples/basic/cpi...done
Attached to process id 1488 ....
stopped at [
(idb)
[0:3] Intel Debugger for IA-32 -based Applications, Version X, Build XXX
[0:3] Reading symbolic information from /nfs/isv/home/user_name/mpich-1.2.7p1/examples/basic/cpi...done
%1 [0:3] Attached to process id [1488;1544] ....
(idb)
[0:3] stopped at [int main(int, char**):29 0x08049d64]
[0:3] 29 sleep (1);
(idb) w
(idb)
[0:3] 24 MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
[0:3] 25 MPI_Comm_rank(MPI_COMM_WORLD,&myid);
[0:3] 26 MPI_Get_processor_name(processor_name,&namelen);
[0:3] 27
[0:3] 28 while (!stop) {
[0:3] > 29 sleep (1);
[0:3] 30 }
[0:3] 31
[0:3] 32 fprintf(stderr,"Process %d on %s\n",
[0:3] 33 myid, processor_name);
(idb) assign stop=1
(idb)
(idb) n
(idb)
[0:3] stopped at [int main(int, char**):28 0x08049d52]
[0:3] 28 while (!stop) {
(idb)
(idb)
[0:3] stopped at [int main(int, char**):28 0x08049d58]
[0:3] 28 while (!stop) {
(idb)
(idb)
[0:3] stopped at [int main(int, char**):32 0x08049d69]
[0:3] 32 fprintf(stderr,"Process %d on %s\n",
(idb)
For a list of issues with MPI support, see the "Known Limitations" section in the Release Notes.
When the debugger starts your parallel application, it detects and attaches to all of your application's processes. At this point, your application stops before executing any user code and the debugger displays a prompt.
You can now set any necessary breakpoints and use the continue command to continue the execution of your application.
When debugging an application launched by prun, issue the following command at the shell, where n is the number of processes and N is the number of nodes running the processes.
% $IDB_HOME/idb [idb options] -parallel `which prun` -n n -N N [other prun options] application [application arguments]
To start your parallel application under debugger control, you need to have the environment variable IDB_HOME set to the directory that your debugger is in. When debugging an application launched by mpich, issue the following command at the shell, where N represents number of processes and application is the name of the MPP program you would like to debug:
% mpirun -dbg=idb -np N [other mpich options] application [application arguments] [-idb idb options]
Make sure that there is a file called mpirun_dbg.idb in the directory in which mpirun is located. Also note that the Intel IDB option -gdb is not yet supported under parallel debugging session.
When the debugger starts your parallel application, it detects and attaches to all of your application's processes. At this point, your application stops before executing any user code and the debugger displays a prompt.
You can now set any necessary breakpoints and use the continue command to continue the execution of your application.
When debugging an application launched by prun, issue the following command at the shellcommand prompt, where n is the number of processes and N is the number of nodes running the processes.
% $IDB_HOME/iidb [idb options] -parallel `which prun` -n n -N N [other prun options] application [application arguments]
Thanks, Rob
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
at first glance it looks as though the debugger does not know which node to look for the debuggee at. Thus the issue most likely may be in your MPI debug setup
Let me paste in an excerpt from our documentation that may help.
If that doesn't help please provide me with the detailed exact steps you are taking to start your MPI debug session.
MPI Cluster Support
The Intel IDB supports debugging of message passing interface (MPI) applications launched by
mpirun, an MPI launcher from mpich, a public domain implementation of MPI
mpiexec, an MPI launcher from Intel MPI 3.0 and later
prun, a parallel launcher of Resource Management System (RMS) from Quadrics
NOTE: MPI DEBUG SUPPORT CURRENTLY NOT GUI ASSISTED
MPI debug support is currently not directly assisted by the Intel Debugger Graphical User Interface. Please use either the command line version of IDB called iidb, or initiate the debugger connection to the MPI node from the debugger command window inside the Intel Debugger GUI.
To start your parallel application under debugger control, you need to have the environment variable IDB_HOME set to the directory that your debugger is in.
When debugging an application launched by mpich, issue the following command at the shell:
% mpirun -dbg=idbc -np N [other mpich options] application [application arguments] [-idb idb options]
where N represents number of processes and application is the name of the MPP program you would like to debug.
The debugger is now capable of debugging an MPI job that uses the MPICH or the Intel MPI 3.0 libraries. In addition, it is capable of attaching to an existing MPI job that uses MPICH.
NOTE: USE CORRECT MPIRUN_DBG SCRIPT
You need to copy the mpirun_dbg.idb script that comes with the debugger's package to the bin directory of your MPICH installation. Also note that the GDB compatibility mode is now available for debugging the MPI applications.
When debugging an application launched from the Intel MPI 3.0 and later libraries, issue the following command:
% mpiexec -idb -n
where N represents number of processes and application is the name of the program you would like to debug.
To attach to an existing MPI job that uses mpich, issue the following command:
% iidb -pid launcher pid -parallelattach application
where the launcher pid is the ID of the launcher process that spawned all the processes in the job and the application is the name of the launcher executable. To find the ID of this process, use the command "ps -xf". For example:
$ ps -ax | grep cpi | grep p4pg
1488 pts/38 S 0:00 /users/user_name/mpich-1.2.7p1/examples/basic/cpi -p4pg /users/user_name/mpich-1.2.7p1/mpich1_starters/PI1362 -p4wd /users/user_name/mpich-1.2.7p1/mpich1_starters
1489 pts/38 S 0:00 /users/user_name/mpich-1.2.7p1/examples/basic/cpi -p4pg /users/user_name/mpich-1.2.7p1/mpich1_starters/PI1362 -p4wd /users/user_name/mpich-1.2.7p1/mpich1_starters
To attach to the process, use the ID with the lesser value:
$ iidb -pid 1488 -parallelattach cpi
Intel Debugger for IA-32 -based Applications, Version X, Build XXX
Reading symbolic information from /nfs/isv/home/user_name/mpich-1.2.7p1/examples/basic/cpi...done
Attached to process id 1488 ....
stopped at [
(idb)
[0:3] Intel Debugger for IA-32 -based Applications, Version X, Build XXX
[0:3] Reading symbolic information from /nfs/isv/home/user_name/mpich-1.2.7p1/examples/basic/cpi...done
%1 [0:3] Attached to process id [1488;1544] ....
(idb)
[0:3] stopped at [int main(int, char**):29 0x08049d64]
[0:3] 29 sleep (1);
(idb) w
(idb)
[0:3] 24 MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
[0:3] 25 MPI_Comm_rank(MPI_COMM_WORLD,&myid);
[0:3] 26 MPI_Get_processor_name(processor_name,&namelen);
[0:3] 27
[0:3] 28 while (!stop) {
[0:3] > 29 sleep (1);
[0:3] 30 }
[0:3] 31
[0:3] 32 fprintf(stderr,"Process %d on %s\n",
[0:3] 33 myid, processor_name);
(idb) assign stop=1
(idb)
(idb) n
(idb)
[0:3] stopped at [int main(int, char**):28 0x08049d52]
[0:3] 28 while (!stop) {
(idb)
(idb)
[0:3] stopped at [int main(int, char**):28 0x08049d58]
[0:3] 28 while (!stop) {
(idb)
(idb)
[0:3] stopped at [int main(int, char**):32 0x08049d69]
[0:3] 32 fprintf(stderr,"Process %d on %s\n",
(idb)
For a list of issues with MPI support, see the "Known Limitations" section in the Release Notes.
When the debugger starts your parallel application, it detects and attaches to all of your application's processes. At this point, your application stops before executing any user code and the debugger displays a prompt.
You can now set any necessary breakpoints and use the continue command to continue the execution of your application.
When debugging an application launched by prun, issue the following command at the shell, where n is the number of processes and N is the number of nodes running the processes.
% $IDB_HOME/idb [idb options] -parallel `which prun` -n n -N N [other prun options] application [application arguments]
To start your parallel application under debugger control, you need to have the environment variable IDB_HOME set to the directory that your debugger is in. When debugging an application launched by mpich, issue the following command at the shell, where N represents number of processes and application is the name of the MPP program you would like to debug:
% mpirun -dbg=idb -np N [other mpich options] application [application arguments] [-idb idb options]
Make sure that there is a file called mpirun_dbg.idb in the directory in which mpirun is located. Also note that the Intel IDB option -gdb is not yet supported under parallel debugging session.
When the debugger starts your parallel application, it detects and attaches to all of your application's processes. At this point, your application stops before executing any user code and the debugger displays a prompt.
You can now set any necessary breakpoints and use the continue command to continue the execution of your application.
When debugging an application launched by prun, issue the following command at the shellcommand prompt, where n is the number of processes and N is the number of nodes running the processes.
% $IDB_HOME/iidb [idb options] -parallel `which prun` -n n -N N [other prun options] application [application arguments]
Thanks, Rob
Hello Robert,
Thank you very much for your reply..[:)]
1st thing..i am running the idb on my desktop and not on a cluster. What i did is i compiled my ocde using "mpif90" and then tried to open it in idb using "open executable" menu. My non-parallelised codes gets opened in ide just like this. but this parallel code doesn't.
I have just started to use Linux (Ubuntu 9.10) so i know a little abt linux environment. Can you tell me how to set IBD_HOME??
I tried to run the code using command you suggested, bou it gives this:---
[bash]nilesh@GALAXY:~/Desktop/Project/kornilov1$ mpirun -dbg=idbc -np 4 nilesh_3d.exe invalid "local" arg: -dbg=idbc usage: mpiexec [-h or -help or --help] # get this message mpiexec -file filename # (or -f) filename contains XML job description mpiexec [global args] [local args] executable [args] where global args may be -l # line labels by MPI rank -bnr # MPICH1 compatibility mode -machinefile # file mapping procs to machines -s# direct stdin to "all" or 1,2 or 2-4,6 -1 # override default of trying 1st proc locally -ifhn # network interface to use locally -tv # run procs under totalview (must be installed) -tvsu # totalview startup only -gdb # run procs under gdb -m # merge output lines (default with gdb) -a # means assign this alias to the job -ecfn # output_xml_exit_codes_filename -recvtimeout # timeout for recvs to fail (e.g. from mpd daemon) -g # global version of local arg (below) and local args may be -n or -np # number of processes to start -wdir # working directory to start in -umask # umask for remote process -path # place to look for executables -host # host to start on -soft # modifier of -n value -arch # arch type to start on (not implemented) -envall # pass all env vars in current environment -envnone # pass no env vars -envlist # pass current values of these vars -env
# pass this value of this env var mpiexec [global args] [local args] executable args : [local args] executable... mpiexec -gdba jobid # gdb-attach to existing jobid mpiexec -configfile filename # filename contains cmd line segs as lines (See User Guide for more details) Examples: mpiexec -l -n 10 cpi 100 mpiexec -genv QPL_LICENSE 4705 -n 3 a.out mpiexec -n 1 -host foo master : -n 4 -host mysmp slave [/bash]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
One more thig..what i did on my desktop, works on our cluster. There i can open my code in idb. So why not on my desktop.
I searched this error and found a note in release notes:
-------------------------------------------------------------------------------------------------------------------------------------------------------
4.5.2 Debugging Shared Libraries
Debugging applications that load shared libraries on runtime may cause the error:
Error: could not start debugee
Could not start process for
No image loaded ... Recovering ...
Even exporting the environment variable LD_LIBRARY_PATH to the directory where the shared
library is located may not help. The error message is misleading as well. The debuggee is
started, but the debugger cannot find the associated shared library/libraries.
-------------------------------------------------------------------------------------------------------------------------------------------------------
So can it be shared library error?? if yes what is it exactly?? and how to remove this shared library error??
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
idbc cannot start an MPI program. You have to use mpiexec or mpirun or prun or some other MPI job launcher to start an MPI program, even if the MPI program uses just one process on one node.
And the job launcher has to support the -dbg=
When you typed 'mpirun' I noticed the command came back with the syntax for mpiexec and NOT mpirun. Is mpirun symbolically linked to mpiexec?
which mpirun
ls -l
I haven't build MPICH2 in a while, so I am not sure why your job launcher doesn't support the -dbg= option. Please ask the MPICH2 provider why you don't have that option in your job launcher.
ron

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page