This recipe shows how to run OpenFOAM on Linux using Intel MPI over Infiniband/RDMA Azure VM instances in an Azure Batch compute pool. Execution of this distributed workload requires the use of multi-instance tasks.
Please see refer to this set of sample configuration files for this recipe.
The pool configuration should enable the following properties:
vm_size
should be a CPU-only RDMA-enabled instance.vm_configuration
is the VM configuration. Please select an appropriateplatform_image
with IB/RDMA as supported by Batch Shipyard.inter_node_communication_enabled
must be set totrue
per_job_auto_scratch
must be set totrue
. A job autoscratch is needed to share a common input data set between the nodes.max_tasks_per_node
must be set to 1 or omitted
The global configuration should set the following properties:
docker_images
array must have a reference to a valid OpenFOAM image that can be run with Intel MPI and Infiniband in a Docker container context on Azure VM instances. This can bealfpark/openfoam:4.0-icc-intelmpi
oralfpark/openfoam:v1606plus-icc-intelmpi
which are published on Docker Hub.
The jobs configuration should set the following properties within the tasks
array which should have a task definition containing:
docker_image
should be the name of the Docker image for this container invocation. For this example, this can bealfpark/openfoam:4.0-icc-intelmpi
.resource_files
should contain theset_up_sample.sh
script which configure Intel MPI and set up the sample.multi_instance
property must be definednum_instances
should be set topool_specification_vm_count_dedicated
,pool_vm_count_low_priority
,pool_current_dedicated
, orpool_current_low_priority
coordination_command
should be unset ornull
. For pools withnative
container support, this command should be supplied if a non-standardsshd
is required.resource_files
array can be emptypre_execution_command
should source theset_up_sample.sh
script.mpi
property must be definedruntime
should be set tointelmpi
options
should contains-np $np
,-ppn $ppn
, and-hosts $AZ_BATCH_HOST_LIST
. These options use the environemnt variables set byset_up_sample.sh
script.
command
should contain the command to pass to thempirun
invocation. For this example, the applicationcommand
to run would be:simpleFoam -parallel
infiniband
can be set totrue
, however, it is implicitly enabled by Batch Shipyard when executing on a RDMA-enabled compute pool.
The Dockerfile
for the Docker image can be found here. Please
note that you must agree with the
OpenFOAM license before using this Docker
image.