User Tools

Site Tools


musicode:start

This is an old revision of the document!


Musicode project MuPIF portal

This page is intended to provide specific information for Musicode users of MuPIF platform.

Prerequisites

Connecting to MuPIF infrastructure

  • Install WireGuard VPN software from https://www.wireguard.com/install/
  • You need VPN client configs to connect to MuPIF infrastructure. You will find them in AES-encrypted ZIP file on the Musicode ownCloud (under MUSICODE/Data types and services/VPN folder). The passwords have been sent in dedicated e-mail. If not available for your organization, please send a request to borek.patzak@cvut.cz
  • On Linux: save the client configuration file in /etc/wireguard, use wg-quick to bring up the interface (e.g. sudo wg-quick up musicode_peerX.conf).
  • On Windows: in the WireGuard GUI, click on “Add Tunnel” and then “Import tunnel(s) from file…”; import the {peer}.conf file and activate the tunnel.
  • Test the connection:
    $ pyro5-nsc -n 172.22.2.1 -p 10000 ping
    Name server ping ok.

MuPIF Services

MuPIF update from January 10th 2022 - changes of model implementation

  • Instead of PropertyID, FieldID, ParticleSetID, MiscID use only DataID, which contains all enum members
  • meatadata Inputs contain key “Set_at”: {“type”: “string”, “enum”: [“initialization”, “timestep”]}, which defines whether it should be set before each timestep or only once at the initialization.
  • In initialize() function the argument “file” was removed. New methodology of setting input file using set() function and mupif.PyroFile, see https://github.com/mupif/mupif/blob/Musicode/examples/Example07-stacTM-JobMan-distrib/Example07.py.
  • Only generalized set() and get() functions can be used. Functions setProperty, getProperty, setField, getField, etc. are no longer supported.

Setting up Model Server

Assuming we have a properly implemented model class named 'ClassnameOfModel', which is derived from mupif.Model and is implemented in file 'model_example.py', we can make it accessible from the Musicode VPN network with the following script. First we import mupif and the model class

import mupif as mp
from model_example import ClassnameOfModel

Then we locate the nameserver with

ns = mp.pyroutil.connectNameServer(nshost='172.22.2.1', nsport=10000)

Then the script contains a code, which creates a jobmanager instance with given parameters, runs it and registers it on the nameserver. The maxJobs is an optional parameter specifying how many remote model instances can exist at the same time.

mp.SimpleJobManager(
    ns=ns,
    appClass=ClassnameOfModel,
    appName='Mupif.JobManager@model_name',
    jobManWorkDir='directory_path',
    maxJobs=5
).runServer()

After this script is executed, the jobmanager can be obtained from the nameserver by its name 'Mupif.JobManager@model_name'. With the jobmanager we can remotely instantiate a new instance of our model class. For more information look at the https://github.com/mupif/mupif/blob/Musicode/examples/Example13/server.py or other examples.

Interaction with test jobmanager

An existing jobmanager “CVUT.demo01” for model from mupif Example13 (https://github.com/mupif/mupif/tree/Musicode/examples/Example13) is running and is registered at the project nameserver, which can be seen in the monitor at http://mupif.org/musicode/. To run the workflow in https://github.com/mupif/mupif/blob/Musicode/examples/Example13/main.py, which interacts with the this existing jobmanager, run the following command in the Example13 directory:

MUPIF_NS=172.22.2.1:10000 python3 main.py

It asks the given nameserver for the jobmanager named “CVUT.demo01”, which provides a new instance of the model, which it then used for the calculation.

musicode/start.1641863457.txt.gz · Last modified: 2022/01/11 02:10 by stanislavsulc