Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design OpenM++ MPI job controller using GO #19

Closed
Tracked by #2
chuckbelisle opened this issue Nov 1, 2023 · 7 comments
Closed
Tracked by #2

Design OpenM++ MPI job controller using GO #19

chuckbelisle opened this issue Nov 1, 2023 · 7 comments
Assignees

Comments

@chuckbelisle
Copy link
Contributor

chuckbelisle commented Nov 1, 2023

Epic: #2
Relates to: #12

@chuckbelisle chuckbelisle changed the title Design and develop OpenM++ MPI job scheduler using GO Design and develop OpenM++ MPI job controller using GO Nov 1, 2023
@KrisWilliamson
Copy link
Contributor

A branch of this project was created: openmppIss19
This branch contains an example template in a style that kubeflow mpi-operator can use and example golang code that uses it.

code in the openmpp/UI project related to the teplates and the ability to launch mpi jobs are:

  • runModel.go
  • runCatalog.go
    This is what has been found so far, and may not be a complete list.

@KrisWilliamson
Copy link
Contributor

KrisWilliamson commented Nov 8, 2023

The Run Model button in the OpemM++ UI Gui sends the command

  • POST /api/run to the openM++ oms service (web server daemon), which calls
  • apiRunModelRoutes::omsAPI.go which calls
  • the function runModelHandler in handleRunModel.go which calls
  • the function runModel in runModel.go
    • makeCommand :: runModel.go - creates the command line argument that launches the job.

The oms daemon has a routing table set up in omsApi.go, which makes it possible to change functionality.

There are some extra functionality branching off this path.

Full path:
/openmpp/docker/ompp-build-debian/ompp/ompp-go
It is unknown why this code is in the docker directory, and duplicated.

  • /ompp/ompp-go/oms

@KrisWilliamson
Copy link
Contributor

KrisWilliamson commented Nov 8, 2023

Trace in golang code

  • runModelHandler::handlerRunModel.go
    • runModel::runModel.go
      • cmd line constructed in this function, and executed in a goroutine (async) in lines 434-479
        • makeCommand::runModel.go - builds the command line string

@KrisWilliamson
Copy link
Contributor

A branch was created to hold the updated mpi template. https://github.com/StatCan/openmpp/tree/openmppiss19

@KrisWilliamson
Copy link
Contributor

Link to open M++ API documentation on how to API call to run the model
https://github.com/openmpp/openmpp.github.io/wiki/Oms-API-POST-run-the-model

@KrisWilliamson
Copy link
Contributor

OMS is started via shell script start-oms.sh from the Jupyterlab dockerfile.
https://github.com/StatCan/aaw-kubeflow-containers/blob/master/output/jupyterlab-cpu/Dockerfile

@KrisWilliamson
Copy link
Contributor

Code changes would be limited to the runModel.go file.
Either:

  • The runModel and makeCommand functions are modified, or
  • A new version of runModel and makeCommad function (runModelkf and makeCommandkf) are created and runModelHandler function is modified to point to the new runModelkf, probably stored in a new file (runModelkf.go)

These two options are almost identical except for tracking changes. The second option (create a separate file with separate functions) is probably the best option to understand the changes.

@Souheil-Yazji Souheil-Yazji changed the title Design and develop OpenM++ MPI job controller using GO Design OpenM++ MPI job controller using GO Nov 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants