Jak na paralelní výpočty? Především musíte vědět, jaký typ paralelizace jste použili:

  1. sdílená paměť - všechny procesy výpočtu musí přistupovat do téže paměti - všechny musí běžet na jednom fyzickém stroji. Příkladem je Open MP,  doMC pro R parrallel pro R. Snadno se také poznají podle konstrukce cyklů (for,  foreach), které beží na všech procesech výpočtu.
  2. distribuovaná paměť - každý proces má svou vlastní paměť a není možné přímo pracovat s pamětí jiného procesu. Mezi procesy je nutné komunikovat pomocí zpráv, např. pomocí MPI.

Sdílená paměť

Zde je nutné pracovat pouze s jedním fyzickým strojem.  Queuing systému řekneme, že požadujeme jeden stroj (-N 1) a více jader procesorů (-c 8) na něm:

srun -N 1 -c 8 uloha

Případně můžete požádat o jeden (-N 1) celý stroj výhradně pro Vás (--exclusive):

srun -N 1 --exclusive uloha

Pak systém nalezne stroj, kde nikdo nic nepočítá a spustí tam Váš výpočet na všech jeho jádrech. A nikoho dalšího na tento stroj s žádným výpočtem nepustí.

Pokud chcete použít příkaz sbatch, tak připravte skript: spust.sh, kde použijete parametr --cpus-per-task=8. Příklad pro spuštění R-kové úlohy:

#SBATCH -p short
#SBATCH --cpus-per-task=8
#SBATCH --mail-type=ALL
#SBATCH --mail-user=madlik@karlin.mff.cuni.cz

module load R

cd priklad
R --no-readline --save < priklad.R

a nyní stačí jen

sbatch spust.sh.

Distribuovaná paměť

Zde můžete pracovat s více stroji, ale potřebujete dosáhnout toho, aby se úloha spustila tolikrát, o kolik procesorů jste požádali. Pokud potřebujete např. 8 procesorů (či jader), můžete takto:

srun -n 8 uloha

Na kolika fyzickým strojích se úloha spustí je nám lhostejno, ale bude jich 8. srun zde pozná, že se jedná o MPI komunikaci a naváže příslušný MPI-ring za Vás. Pokud byste vyžadovali, aby úloha běžela na jedno stroji, použijte navíc  parametr -N 1.

Pokud raději použijete příkaz sbatch, tak si připravte např. takový spouštěcí skript spust.sh:

#SBATCH --ntasks-per-node=8
#SBATCH -N 8
#SBATCH -p parallel
#SBATCH --mail-type=ALL
#SBATCH--mail-user=madlik@karlin.mff.cuni.cz

module load openmpi

cd priklad

mpirun priklad

a nyní jen

sbatch spust.sh.

Úloha požáduje 8 strojů každý z nich musí mít 8 volných procesorů.