JuPin - Pinning Visualisation Tool
Choose a supercomputer partition on which you want to simulate the pinning.
System:
JUWELS
JUWELS-GPU
JUWELS-BOOSTER
JURECA-DC
JURECA-GPU
JUSUF
JUSUF-GPU
JUPITER
Choose between the Node-Mode, the Task-Mode and the Hex2Bin-Mode.
Node-Mode: you can visualize the pinning amongst multiple nodes.
Task-Mode: the pinning for a single node is visualized by showing each task individually.
Hex2Bin-Mode: you can enter a SLURM-Process-Pinning-Mask in hexadecimal to visualize it.
Mode:
Task
Node
Hex-Mask
Enter a SLURM-Process-Pinning-Mask in hexadecimal to visualize.
Mask:
Select the numbers of nodes on which you want to simulate the pinning. Only available in Node-Mode.
Nodes:
Select the numbers of tasks per job.
Task:
Select the numbers of requested CPUs per task.
CPU's per task:
Choose an option to bind the CPU threads per task.
Rank: Each task is pinned to as many threads as it requests, just filling cores consecutively. Spread the threads and tasks to as many cores as possible. This type is not influenced by the second and third part of the distribution option.
Threads: Each task is pinned to as many threads as it requests. Which threads each process gets is controlled by the distribution option.
Rank_Ldom: Each task is pinned to as many threads as it requests, just filling the nodes rank by rank cycling NUMA-sockets and cores. This type is not influenced by the second and third level of the distribution option. The threads of a task are always packed to as few cores as possible. This is the same as cpu-bind=threads distribution=block:cyclic:block.
Cores: In a first step the requested CPU threads of a task are assigned in exactly the same way as with cpu-bind=threads. But the final affinity mask for the task is the whole core where any thread is located that it is assigned to. This means if a task is assigned to any thread that is part of a core, it will be bound to the whole core. (The "whole" here means to each thread of the core that is allocated to the job)
CPU-Bind:
threads
rank
rank_ldom
Select the number of threads per core.
Threads per Core:
Choose a distribution-option. The first part controls the distribution of the task over the nodes:
Block: Distribute tasks to a node such that consecutive tasks share a node.
Cyclic: Distribute tasks to a node such that consecutive tasks are distributed over consecutive nodes (in a round-robin fashion).
The second part controls the distribution of tasks over NUMA-sockets inside one node:
Block: Each NUMA-socket is first filled with tasks before the next NUMA-socket will be used.
Cyclic: Each task will be assigned to the next NUMA-socket(s) in a round-robin fashion.
Fcyclic: Each thread inside a task will be assigned to the next NUMA-socket in a round-robin fashion, spreading the task itself as much as possible over all NUMA-sockets.
Fcyclic implies cyclic.
The third part controls the distribution of tasks over cores inside one node:
Block: Each core is first filled with tasks before the next core will be used.
Cyclic: Each task will be assigned to the next core(s) in a round-robin fashion. The threads of a task will fill the cores.
Fcyclic: Each thread inside a task will be assigned to the next core in a round-robin fashion, spreading the task itself as much as possible over all cores.
Fcyclic implies cyclic.
Distribution:
Node
block
cyclic
Socket
cyclic
Core
fcyclic
cyclic
Zoom in or out
×
JUPITER is in the installation stage and its configuration and documentation is under active development and enhancement. Therefore the pinning may not be up to date!