Configuration

Ensembles uses an mpi batch script for configuration. This script can be run using sbatch ${SCRIPT_NAME}. If your script is in the same folder you're in and is called "mpi.slurm" you would run: ./sbatch mpi.slurm.

The mpiexec binary is at

Reserve minutes of time.
Use tasks per node.
Use the partition.
Write the log to .
Write errors to .

If NumIO is disabled, idle for seconds instead.


The ensembles binary is at


Ensembles will log data every seconds.

The graph data will be stored in the directory.

The graph will be stored as a file.

The json data will be stored in the directory.


The matrix for ensembles will be x 500

Numio will perform iterations.


If they are enabled, numio will read and write to the file at every iterations.


Collective comm size will be with a frequency of .

Numio will use a chunk multiplier of with and a compress level of .

This daemon stressed the cpu as much as possible by doing calculations on all available CPU cores.

This daemon just idles.

This daemon writes as much as possible into ram.

This daemon runs the find utility. This is commonly used to find files on linux systems.

This is where the find binary can be found. Find is usually already in your path. So leaving this as a default should be fine.

This is the directory that will be searched by the find daemon It's ideal if you have read permissions on all of it.

This daemon creates a file and the repeatedly reads from it.

This is where the file should be generated

This is where the file should be generated.

IPerf is a program to measure network performance by sending large amounts of data. This daemon required a usable iperf3 server. There is a list of public servers, but you can also set up one on your local network. (List of examples.). The most basic way to do this is to run iperf3 -s on another machine on the same network. This will not work if it's firewalled.

where the iperf3 binary is. it should be installed together with the conda environment and be in your path already.

This is where the iperf server is. Either an ip or a url.

port of the iperf server. by default this will be 5201

      
#!/bin/bash
  
#SBATCH --time=10
#SBATCH --ntasks=1
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --partition=west
#SBATCH --output=job.out
#SBATCH --error=job.err

export ENSEMBLES_IDLE_ONLY=False
export ENSEMBLES_IDLE_ONLY_TIME=12

export ENSEMBLES_MPIEXEC_PATH=mpiexec
export ENSEMBLES_MPIEXEC_NODES=1

export ENSEMBLES_NUMIO_PATH=numio-posix

export ENSEMBLES_LOG_EVERY_X_SECONDS=3
export ENSEMBLES_GRAPH_OUT_PATH=plots
export ENSEMBLES_GRAPH_FILETYPE=pdf
export ENSEMBLES_DATA_OUT_PATH=data

export ENSEMBLES_LINES=500
export ENSEMBLES_ITERATIONS=9000
export ENSEMBLES_PERT=True

export ENSEMBLES_NUMIO_RW_PATH=matrix.out
export ENSEMBLES_NUMIO_RW_FREQUENCY=64
export ENSEMBLES_NUMIO_READ=True
export ENSEMBLES_NUMIO_WRITE=True
export ENSEMBLES_NUMIO_R_IMMEDIATE=True
export ENSEMBLES_NUMIO_W_NOFILESYNC=False
export ENSEMBLES_NUMIO_W_IMMEDIATE=True

export ENSEMBLES_NUMIO_COLLECTIVE_COMMS=True
export ENSEMBLES_NUMIO_COLLECTIVE_COM_SIZE=200
export ENSEMBLES_NUMIO_COLLECTIVE_COM_FREQ=64
export ENSEMBLES_NUMIO_FPISIN=True
export ENSEMBLES_NUMIO_FILE_PER_PROCESS=True
export ENSEMBLES_NUMIO_ASYNC_WRITE=False
export ENSEMBLES_NUMIO_GZIP=True
export ENSEMBLES_NUMIO_LZ4=False
export ENSEMBLES_NUIMIO_CHUNK_MULTIPLIER=1
export ENSEMBLES_NUMIO_COMPRESS_LEVEL=1

export ENSEMBLES_NUMIO_THREAD=1

export ENSEMBLES_BACKGROUND_PROCESS_LIST='[]' 

export ENSEMBLES_IPERF_PATH=iperf3
export ENSEMBLES_IPERF_SERVER_IP=136.172.61.247
export ENSEMBLES_IPERF_PORT=5201

export ENSEMBLES_WRITE_PATH=$HOME/ensembles_write

export ENSEMBLES_READ_PATH=$HOME/ensembles_read

export ENSEMBLES_FIND_PATH=find
export ENSEMBLES_FIND_SEARCH_PATH=$HOME

mpiexec python src/main.py