Currently submitting co-allocated MUSCLE application is only possible using the XML !JobProfile (compare [[QCG-SimpleClient]]). Beside the different job description format you have to suffix the `qcg-sub` command with the `QCG` keyword: {{{ $ qcg-sub muscle.xml QCG }}} == Example (Fusion - Transport Turbulence Equilibrium) == * Install your application on every cluster you wish to use * register it on every cluster using [http://apps.man.poznan.pl/trac/qcg-computing/wiki/ComunityModules QCG Community Modules (QCE)] mechanism: {{{ qcg-module-create -g plggmuscle Fusion/Turbulence }}} The module must bear the same name on every cluster. Inside the module you can set/prepend any environment variable, add dependencies to other modules, e.g.: {{{ #%Module 1.0 proc ModulesHelp { } { puts stderr "\tName: Fusion/Turbulence" puts stderr "\tVersion: 0.1" puts stderr "\tMaintainer: plgmamonski" } module-whatis "Fusion/Turbulence, 0.1" #add path to the native MUSCLE kernels prepend-path PATH /home/plgrid-groups/plggmuscle/fusionkernels/bin/ set curMod [module-info name] if { [ module-info mode load ] } { puts stderr "$curMod load complete." } if { [ module-info mode remove ] } { puts stderr "$curMod unload complete." } }}} You can set there two environment variables interpreted by the MUSCLE framework: * MUSCLE_CLASSPATH * MUSCLE_LIBPATH to set Java classpath and the path of dynamically loadable libraries. Thanks to this mechanism you can use single abstract CxA that do not contain any site-specific paths. Also you can load the module in interactive QCG job: {{{ bash-4.1$ module load Fusion/Turbulence Fusion/Turbulence load complete }}} * Prepare XML job description: {{{ 1 zeus.cyfronet.pl 1 reef.man.poznan.pl 1 hydra.icm.edu.pl Triangle.cxa.rb gsiftp://qcg.man.poznan.pl/~/output-${JOB_ID}-${TASK_ID} gsiftp://qcg.man.poznan.pl/~/error-${JOB_ID}-${TASK_ID} gsiftp://qcg.man.poznan.pl/~/Triangle.cxa.rb gsiftp://qcg.man.poznan.pl/~/results-${JOB_ID}-${TASK_ID} P0Y0M0DT0H10M }}}