Configuration Properties for the MPI Cluster Debugger

The MPI Cluster Debugger configuration properties let you define how to run your debugging session. This information is used for the following tasks:

  • To select the cluster and the nodes on which to run the debugging session

  • To specify the number of processes to run

  • To specify deployment information

  • To specify pre-debug and post-debug scripts

The following table describes the configuration properties for the MPI cluster debugger:

MPI Cluster Debugger configuration properties

Property Description Default Value

Run Environment

Specifies the head node to use when launching the debugger on the cluster, the number of MPI processes to start, and optionally, the allocation of processes per compute node.

To request specific nodes and selectively allocate processes, select Edit Hpc Node from the Run Environment drop-down list. This opens the Node Selector dialog box. For additional considerations, see Specific node selection and the -hosts parameter.

Alternately, specify localhost/<number of processes> to launch the debugger locally.

Dd560807.note(en-us,VS.100).gifNote:
The resource selection that is specified in this property overrides any resource allocations that are specified in the job description file.

localhost/1

Deployment Directory

Specifies the directory in which the project output files will be copied when the debugger starts. This directory is generally on the cluster head node, and it must be a network share that can be read by all of the compute nodes that are participating in the debugging session, for example:

The CcpSpoolDir directory share is created when HPC Pack 2008 is installed on the head node.

If the Deployment Directory does not exist and you have write permissions in the root directory that is specified, the Deployment Directory is created automatically.

Local debugging:

None

Cluster debugging:

\\headnode\CcpSpoolDir\$(UserName)\$(ProjectName)

Working Directory

Specifies the working directory that is used by each process. This is where the executable runs.

During cluster debugging, if this is different than the Deployment Directory, the files from the Deployment Directory are copied into the working directories on the compute nodes.

Local debugging:

The output directory for the Visual Studio project.

Cluster debugging:

The %tmp% directory.

Application Command

Specifies the application name or the application path that MPI runs on each cluster node (this is the application that you are debugging in Visual Studio). The path can be a shared resource or a local path.

The debugger copies the application file to the deployment folder.

$(TargetFileName)

Application Arguments

Specifies arguments that you want to pass to the application.

None

MPIShim Location

Specifies the full path to the MPIshim executable file on your development computer. Visual Studio attempts to copy MPIshim from this location to the Deployment Directory.

MPIshim is included with Visual Studio and is installed with the remote debugging components to enable parallel debugging.

You can provide a value for this property as part of a fully customized launch of the MPI Cluster Debugger.

%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger

MPIExec Command

Specifies the full path to the MPI program that coordinates the launch of your MPI application.

If you have another MPI library implementation installed on your compute nodes, and you want to use the associated MPI stack to launch your application, use this property to specify the full path to that executable on each compute node. If the path is not identical on each node, then you must include MPIexec.exe and its dependent libraries in the Additional Files to Deploy property for the debugger.

If the MPI stack that you specify does not support the -hosts parameter, you may encounter runtime errors in specific circumstances. For more information, see Specific node selection and the -hosts parameter.

MPIexec.exe

Additional MPIExec Arguments

Specifies additional arguments to pass to MPIexec.exe. For example, you can use additional arguments to set environment variables for the processes that are launched by MPIexec.exe.

If you specify the -hosts parameter, you may encounter runtime errors in specific circumstances. For more information, see Specific node selection and the -hosts parameter.

For more information about the MPIexec command, see mpiexec Command Reference (https://go.microsoft.com/fwlink/?LinkId=144910).

None

MPI Network Security Mode

Specifies the IP addresses that are allowed to connect to the current instance of Visual Studio.

There are three security modes:

  • Accept connections from a local subnet only

  • Accept connections from a specified range of addresses

    Dd560807.Important(en-us,VS.100).gif Note:
    If you select this option, you must use the MPI Network Filter property to specify the range.

  • Accept connections from any address

Accept connections from any address

MPI Network Filter

Specifies the IP address range from which to accept connections. Specify the starting IP address and the subnet mask for this range.

For example, a network filter of 192.168.0.1/255.255.255.0 includes all the addresses between 192.168.0.1 and 192.168.0.254.

Dd560807.Important(en-us,VS.100).gif Note:
To apply this filter, in MPI Network Security Mode, select Accept connections from a specified range of addresses.

None

Debugger Type

Specifies the debugger type for the code you are running: native, managed, mixed, or script.

Auto

The debugger type is selected based on the content of the .exe file.

Job Description File

Specifies the path to the job description file (XML) that contains tasks to add to the debugging job. The tasks specified in this file are added before the tasks that the debugger creates (the debugger creates a deployment, a debugging, and a clean-up task).

Dd560807.note(en-us,VS.100).gifNote:
The resources that you select in the cluster debugger properties override any resource allocations specified in the job description file.

To create a job description file from a new or queued job in the HPC Job Manager console, in the New Job or the View Job dialog box, click Save Job as.

None

Additional Files to Deploy

Specifies files and directories to be copied to the Deployment Directory, in addition to those required by the project and its dependencies.

None

Scheduler Timeout (ms)

Specifies the length of time (in milliseconds) that the debugger attempts to contact a head node. After this period, the head node is not considered valid.

5000 milliseconds

Deploy CRT

Specifies whether Visual Studio deploys the C Runtime (CRT) assemblies with the application.

If Yes is specified, the CRT assemblies are deployed with the application.

If No is specified, the CRT assemblies are not deployed with the application.

If your multithreaded debug dynamic-link libraries (DLLs) are statically linked, you do not need to deploy the CRT files. If your multithreaded debug DLLs are dynamically linked, you need to deploy the CRT files.

Yes

Cleanup Deployment

Specifies whether Visual Studio will delete the Deployment Directory after debugging.

If Yes is specified, the Deployment Directory is deleted and the shared resource is removed when the debugger stops.

Dd560807.note(en-us,VS.100).gifNote:
The Deployment Directory is not deleted if it contains files other than those put there by Visual Studio. For example, if your application produces output to the Deployment Directory, you should use a post-debug script to delete the directory.

If No is specified, the Deployment Directory is not deleted.

Yes

Pre-Debug Script

Specifies the path to the script to run before debugging. The script runs in the same computer where Visual Studio is running.

For example, you can use a pre-debug script to stage data for your application on the nodes or to adjust the firewall settings on the cluster to allow the remote debugger.

None

Pre-Debug Script Arguments

Specifies the argument string that is passed to the pre-debug script.

None

Post-Debug Script

Specifies the path to the script to run after debugging stops.

For example, you can use a post-debug script to clean up staged data or the output files that are produced by your application or to adjust the firewall settings on the cluster to disallow the remote debugger after your debugging session.

None

Post-Debug Script Arguments

Specifies the argument string that is passed to the post-debug script.

None

Specific node selection and the -hosts parameter

When you configure the MPI Cluster Debugger, you must specify the cluster to use, and the number of processes to launch. Optionally, you can select specific nodes to use for the debugging session.

The MPI Cluster Debugger uses the -hosts parameter with the MPIexec command to place the processes when both of the following conditions are true:

  1. You select specific nodes to use for the debugging session.

  2. The number of processes that you selected is smaller than the number of resources on the required nodes.

If you request specific nodes and the total number of resources on the required nodes is greater than the number of processes that you specified, the debugger uses the -hosts parameter to place the processes. For example, if you select two nodes (NODE01 and NODE02) with four cores each, and specify that you want to launch six processes, the debugger passes the following argument to MPIexec.exe: -hosts 2 NODE01 4 NODE2 2.

Note

If the MPI Cluster Debugger uses the -hosts parameter to place the processes, a runtime error occurs if either of the following conditions is true:

  • You have specified an MPI stack that does not support the -hosts parameter.

  • You have specified the -hosts parameter in the Additional MPIExec Arguments property.

See Also

Concepts

How to: Configure and Launch the MPI Cluster Debugger
Walkthrough: Launching the MPI Cluster Debugger in Visual Studio 2010
Debugging MPI Applications on an HPC Cluster

Other Resources

mpiexec Command Reference