# Introduction to PTP Project Types

Projects comprise the source code, build rules (e.g. makefiles), and build results (e.g. object files and executables) for a particular application. These projects can reside in a number of different locations, including on the user's local machine, on a remote system, or in a source code repository. The target systems on which these applications run are also typically located at remote sites, though users may also want to run the applications on their local machines.

PTP supports a wide variety of different target systems. In order to provide the flexibility needed for developing parallel applications in such varied environment, PTP adds a new project type to the normal Eclipse projects. With PTP installed, the user has the choice of the following project types:

Local projects
  These projects exist on the local machine which is the same machine on which Eclipse is running.
Synchronized projects
  These projects are a hybrid of the two; source code is located on both the local system and on a remote target machine. These two copies are kept "in sync" by Eclipse. Synchronized projects are the preferred method for developing parallel applications for most typical HPC installations.

In addition to the project location, there are two other activities that depend on the user's desired working environment and target system configuration. These include where the project will be built, and where the application will be run (including where it will be run in order to be debugged.) These activities tend to be interrelated, since, for example, running an application requires access to the executable. But if the executable is built locally, and should be run on a remote system, then it will need to be staged to the remote machine. Similarly, if the executable is to be built and run remotely, the location of the executable must be known for it to be started. Running a parallel application is covered in more detail in the Running Parallel Programs section.

## Local Projects

Local projects are the default type for Eclipse projects. All files reside on the local machine, which is the same machine on which Eclipse is running. The section Introduction to Creating MPI Projects describes this type of local project. These projects may have been checked out or cloned from a source repository, but the user is working on a local copy of the code. Updates to the repository must be controlled manually by the user.

Local projects can only be built locally, but the executable can be run either locally or remotely. However, an executable built locally can be run remotely only if both the local and remote machines have the same architecture, or the executable was built using a cross compiler.

## Synchronized Projects

Synchronized projects maintain a copy of the source code and other project files on both the local system and the remote system. The user edits the local copy of a file, then each file is synchronized with the remote system when it is saved. Files that are created or deleted are also synchronized with the remote system. In addition, if files are changed on the remote system, these will be synchronized with the local system on a regular basis. A single project can be synchronized with multiple remote systems. Projects that are checked out or cloned from a version control system can also be synchronized, as Team operations are independent of the synchronization process.

Synchronized projects support multiple build configurations, so the build can happen either locally or on one or more remote systems. The user can select which system will be used to build the project. A launch configuration can then be created to to run the application on the target machine.

See the Synchronized Projects section for more information.

Back to Top | Back to Table of Contents