Distributed Workflows with PGAS
Partitioned global address space (PGAS) networks are an alternative to MPI that use a multinode shared memory space to support parallelism. GASNet is an implementation of a PGAS network commonly used to run PGAS-based programming languages like Chapel. PGAS execution in Fuzzball is accessed through the same workflow field that is used to control MPI execution.
Observe the following Fuzzfile:
version: v1
jobs:
hello:
image:
uri: docker://wresch/chapel-multinode-gasnet:latest
script: |
#!/bin/sh
/opt/chapel/bin/hello-chapel --tasksPerLocale 2 --numLocales 2
resource:
cpu:
cores: 2
affinity: CORE
memory:
size: 1GB
multinode:
nodes: 2
implementation: gasnet
This will use a container derived from the official Chapel container with the runtime recompiled to enable GASNet. It runs a basic “Hello World” style example with 2 tasks on 2 nodes each.
The multinode.implementation section is set to gasnet. This tells Fuzzball to
utilize a GASNet network if it exists within the
cluster environment.
For more information about Chapel see the official docs.