Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "PTP/planning/remote"

< PTP‎ | planning
 
(Meeting Minutes)
 
(59 intermediate revisions by 8 users not shown)
Line 1: Line 1:
= Evaluation of Remote Service Explorer for Remote Service Support =
+
= Remote Development Tools =
 +
 
 +
List of Authors:
 +
    Chris Recoskie (recoskie@ca.ibm.com)
 +
    Greg Watson (grw@us.ibm.com)
  
 
== Background ==
 
== Background ==
  
=== The Need for Remote Compile, Launch and Debug ===
+
This page is for organizing efforts surrounding remote development tools for PTP. Initially this will encompass efforts surrounding a remote development solution that utilizes CDT to provide a suite of remote development tools for C/C++ development. Given that the Photran (Fortran) project is built on top of CDT, we foresee that in the future the remote support we build for CDT could form the basis for remote support for Fortran as well.
The current implementation of PTP (v1.0) provides basic support for the coding, compiling, launching and debugging of parallel jobs locally (the parallel machine).
+
In a practical configuration, the development of parallel programs often involves three environments:
+
 
+
{|
+
| User desktop
+
| : the user environemnt that supports coding and provids UI for compiling, launching and debugging.
+
|-
+
| Build environment
+
| : the machine on which the program is to be build, which provides an environment with the same libraries and services available on the parallel machine.
+
|-
+
| Parallel machine
+
| : the machine on which the program is executed.
+
|}
+
 
+
We need to provide support for such configurations in PTP, which includes remote build, remote launch and foreseenably remote debug.
+
 
+
=== Configuration Alternatives ===
+
 
+
Actually, there are however three different possibilities in the actual configuration:
+
 
+
{|
+
| Local Project
+
| : the user desktop physically holds the project and all codes of the parallel program in the local file system.
+
|-
+
| Remote Project
+
| : the project and all codes are physically located on a remote machine  (either a dedicated machine or one of the build machine or parallel machine).
+
|-
+
| Hybrid Project
+
| : the user desktop physically holds the project (the configurations) but codes are physically located on a remote machine.
+
|}
+
 
+
==== Local Project ====
+
 
+
In the case that the user desktop is the central location where the whole project is physically located, the following capabilities are required to support remote build, launch and debug:
+
 
+
'''Remote Build'''
+
 
+
# The code must be first transferred to the build machine (possibly through project export).
+
# The build command is invoked on the build machine.
+
# The build log is transferred back to the local machine and update local models and views (problem view, marker view etc).
+
# The binary is transferred back to the local machine.
+
 
+
'''Remote Launch & Debug '''
+
 
+
# The runtime (e.g. ORTE) is transferred to the parallel machine, possibly also includes the debug runtime.
+
# The binary is transferred to the parallel machine.
+
# The command is invoked on the parallel machine to start the runtime.
+
# The launch command is invoked on the parallel machine.
+
# The user desktop can then control the execution and debugging of the
+
# The stdio and stderr is trapped and send back to the user desktop.
+
# Any output is transferred back to the user desktop.
+
 
+
==== Remote Project ====
+
 
+
In the case that a remote machine physically holds the project code, the following capabilities are required to support remote build, launch and debug:
+
 
+
'''Code Edit'''
+
# The user environment access the project through remote file system.
+
  
'''Remote Build'''
+
== Interested Parties ==
  
# The code should be transferred to the build machine (possibly through project export), if the build machine is different from the machine that physically holds the project.
+
IBM
# The build command is invoked on the build machine.
+
* Greg Watson (PTP)
# The build log is transferred back to the local machine and update local models and views (problem view, marker view etc).
+
* Chris Recoskie (CDT)
# The binary is transferred to the remote machine that holds the project.
+
* Jason Montojo (CDT)
  
'''Remote Launch & Debug '''
+
HP
 +
* Jacob Augustine
  
# The runtime (e.g. ORTE) is transferred to the parallel machine, possibly also includes the debug runtime.
+
Intel
# The binary is transferred to the parallel machine from where the project is located, if different from build machine.
+
* Leo Treggiari (CDT)
# The command is invoked on the parallel machine to start the runtime.
+
# The launch command is invoked on the parallel machine.
+
# The user desktop can then control the execution and debugging of the
+
# The stdio and stderr is trapped and send back to the user desktop.
+
# Any output is transferred back to the machine where the project is located, if different from the build machine.
+
  
==== Hybrid Project ====
+
Cril Technology
There's only quite minor differences between this case and that of a remote project.
+
* Benoit Souyri
  
=== Required Functionalities ===
+
[[ECF | ECF Project]]
Depending on the actual configuration, different functionalities are required:
+
* Scott Lewis
  
==== Local Project ====
+
== Presentations ==
  
# File transfer between local machine and remote machine
+
* [http://download.eclipse.org/tools/cdt/docs/summit2006/Remote_Indexing_&_Searches.ppt Remote Indexing & Searches] Presented at the CDT Summit 2006 detailing the need for remote indexing.
# Execute commands on remote machines
+
# Access services on the remote machine (standard TCP/IP)
+
  
==== Remote Project ====
+
* [http://wiki.eclipse.org/images/1/16/Remote_development.pdf Remote Development] Presented at the CDT Summit 2007 detailing the motivation behind the need for remote development tools and the status of current efforts.
  
# Create project on remote file system
+
== Meeting Minutes ==
# Transfer files between remote machines
+
# Execute commands on remote machines
+
# Access services on the remote machine (standard TCP/IP)
+
  
==== Hybrid Project ====
+
Monthly RDT calls are no longer being held.  Instead, we are discussing RDT issues during the regular PTP monthly call.  Archived meeting minutes from RDT calls can be found below.
  
# Create project folder or files on remote file system
+
[[PTP/planning/minutes/January_11_2008 | RDT conference call, January 11, 2008]]
# Transfer files between remote machines
+
# Execute commands on remote machines
+
# Access services on the remote machine (standard TCP/IP)
+
  
== Related Works ==
+
[[PTP/planning/minutes/March_14_2008 | RDT conference call, March 14, 2008]]
  
There are some on going works from both the Eclipse platform and the DSDP project that are relevant to us.
+
[[PTP/planning/minutes/June_13_2008 | RDT conference call, June 13, 2008]]
  
=== Alternative File System ===
+
[[PTP/planning/minutes/August_22_2008 | RDT conference call, August 22, 2008]]
  
 +
== Early builds ==
 +
 +
Early builds of RDT will be available on the [[PTP/builds/2.1 | PTP 2.1 builds page]]
  
=== Remote Service Explorer ===
+
== Planning ==
  
 +
Here are are some areas that are currently being worked on and/or investigated.  We welcome contributions in all areas, so if you are interested in a particular area, do not hesitate to offer your input and assistance.
  
== Evaluation of RSE ==
+
Here is the current state of affairs, as of June, 2008.
  
 +
* General Remote Services
 +
** PTP has a preliminary implementation for remote services abstraction.  "Remote services" means essentially file operations, as well as launching and control of remote processes.
 +
*** There are several supported implementations of these services, the two most prominent of which are an implementation based on the [http://wiki.eclipse.org/TM_and_RSE_FAQ#What_is_RSE.3F Remote Systems Explorer (RSE)], and a lightweight SSH-only provider that is a part of PTP proper.
 +
** Greg Watson and Chris Recoskie have designed a [http://wiki.eclipse.org/PTP/designs/remote#Service_Model service model] for remote projects.  This model has been implemented in PTP in the org.eclipse.ptp.rdt.services plugin., which allows:
 +
*** The user to configure which services in their system are mapped to which providers and locations.
 +
*** ISVs and tool implementers to define new services, and contribute providers to any defined services.
  
 +
* EFS Support in CDT [[http://wiki.eclipse.org/PTP/designs/remote#Eclipse_File_System_Support Designs and notes]]
 +
** Chris Recoskie (IBM) has made some changes in CDT 5.0 to allow for one to successfully use CDT to create EFS hosted projects and edit the files.  There are some other additional enabling API changes that were made to allow for CModel elements to be tied to EFS URIs.
 +
** Currently creating an EFS project does not magically allow all parts of CDT to work remotely.  Most of CDT is still not EFS aware.
  
== Open Issues ==
+
* Remote Indexing for C/C++ (using CDT) [[http://wiki.eclipse.org/PTP/designs/remote#Parsing_and_Indexing overview]]
 +
** Jason Montojo and Chris Recoskie have have implemented an initial set of C/C++ index based services using RSE's dstore protocol as the communication mechanism.  An initial patch has been created and [https://bugs.eclipse.org/bugs/show_bug.cgi?id=236944 submitted] to the PTP Bugzilla and is currently waiting to be committed.  Currently implemented features include:
 +
*** A New Remote C/C++ Project wizard that allows you to create remote projects and configure your service model
 +
*** Integrated index lifecycle management
 +
*** Automatic source code delta handling (the index is automatically updated when files in your project are added/removed/changed)
 +
*** Remote Search
 +
*** Remote Call Hierarchy
 +
*** Remote Navigation (e.g. Go To Declaration)
 +
** Other planned services include:
 +
*** Content Assist
 +
*** Type Hierarchy
 +
*** Include browser
 +
*** Model builder
 +
** Current Work Items
 +
*** Jason is working on content assist.
 +
*** Mike Kucera is working on remote scanner info support.
  
Resource management is being designed and developed in PTP, how does remote services support fits into the design remains to be discssed.
+
* Remote Standard Make (using CDT)
 +
** Chris Recoskie has started working on a Remote Make Builder and hopes to have a prototype working sometime in the summer of 2008.  This builder will use PTP's Remote Services API in order to launch the builder (make) on the remote system.

Latest revision as of 12:41, 9 October 2008

Remote Development Tools

List of Authors:

   Chris Recoskie (recoskie@ca.ibm.com)
   Greg Watson (grw@us.ibm.com)

Background

This page is for organizing efforts surrounding remote development tools for PTP. Initially this will encompass efforts surrounding a remote development solution that utilizes CDT to provide a suite of remote development tools for C/C++ development. Given that the Photran (Fortran) project is built on top of CDT, we foresee that in the future the remote support we build for CDT could form the basis for remote support for Fortran as well.

Interested Parties

IBM

  • Greg Watson (PTP)
  • Chris Recoskie (CDT)
  • Jason Montojo (CDT)

HP

  • Jacob Augustine

Intel

  • Leo Treggiari (CDT)

Cril Technology

  • Benoit Souyri

ECF Project

  • Scott Lewis

Presentations

  • Remote Development Presented at the CDT Summit 2007 detailing the motivation behind the need for remote development tools and the status of current efforts.

Meeting Minutes

Monthly RDT calls are no longer being held. Instead, we are discussing RDT issues during the regular PTP monthly call. Archived meeting minutes from RDT calls can be found below.

RDT conference call, January 11, 2008

RDT conference call, March 14, 2008

RDT conference call, June 13, 2008

RDT conference call, August 22, 2008

Early builds

Early builds of RDT will be available on the PTP 2.1 builds page

Planning

Here are are some areas that are currently being worked on and/or investigated. We welcome contributions in all areas, so if you are interested in a particular area, do not hesitate to offer your input and assistance.

Here is the current state of affairs, as of June, 2008.

  • General Remote Services
    • PTP has a preliminary implementation for remote services abstraction. "Remote services" means essentially file operations, as well as launching and control of remote processes.
      • There are several supported implementations of these services, the two most prominent of which are an implementation based on the Remote Systems Explorer (RSE), and a lightweight SSH-only provider that is a part of PTP proper.
    • Greg Watson and Chris Recoskie have designed a service model for remote projects. This model has been implemented in PTP in the org.eclipse.ptp.rdt.services plugin., which allows:
      • The user to configure which services in their system are mapped to which providers and locations.
      • ISVs and tool implementers to define new services, and contribute providers to any defined services.
  • EFS Support in CDT [Designs and notes]
    • Chris Recoskie (IBM) has made some changes in CDT 5.0 to allow for one to successfully use CDT to create EFS hosted projects and edit the files. There are some other additional enabling API changes that were made to allow for CModel elements to be tied to EFS URIs.
    • Currently creating an EFS project does not magically allow all parts of CDT to work remotely. Most of CDT is still not EFS aware.
  • Remote Indexing for C/C++ (using CDT) [overview]
    • Jason Montojo and Chris Recoskie have have implemented an initial set of C/C++ index based services using RSE's dstore protocol as the communication mechanism. An initial patch has been created and submitted to the PTP Bugzilla and is currently waiting to be committed. Currently implemented features include:
      • A New Remote C/C++ Project wizard that allows you to create remote projects and configure your service model
      • Integrated index lifecycle management
      • Automatic source code delta handling (the index is automatically updated when files in your project are added/removed/changed)
      • Remote Search
      • Remote Call Hierarchy
      • Remote Navigation (e.g. Go To Declaration)
    • Other planned services include:
      • Content Assist
      • Type Hierarchy
      • Include browser
      • Model builder
    • Current Work Items
      • Jason is working on content assist.
      • Mike Kucera is working on remote scanner info support.
  • Remote Standard Make (using CDT)
    • Chris Recoskie has started working on a Remote Make Builder and hopes to have a prototype working sometime in the summer of 2008. This builder will use PTP's Remote Services API in order to launch the builder (make) on the remote system.

Back to the top