| 1 | == Tarea MPI == |
| 2 | Aquí lanzaremos una tarea que usará [https://es.wikipedia.org/wiki/Interfaz_de_Paso_de_Mensajes mpi] para trabajar de forma paralela y con paso de mensajes entre los diferentes procesos que la componen. |
| 3 | {{{ |
| 4 | #!/bin/bash |
| 5 | # Job name: |
| 6 | #SBATCH --job-name=test |
| 7 | # |
| 8 | # Account: |
| 9 | #SBATCH --account=account_name |
| 10 | # |
| 11 | # Partition: |
| 12 | #SBATCH --partition=partition_name |
| 13 | # |
| 14 | # Number of MPI tasks needed for use case (example): |
| 15 | #SBATCH --ntasks=40 |
| 16 | # |
| 17 | # Processors per task: |
| 18 | #SBATCH --cpus-per-task=1 |
| 19 | # |
| 20 | # Wall clock limit: |
| 21 | #SBATCH --time=00:00:30 |
| 22 | # |
| 23 | ## Command(s) to run (example): |
| 24 | module load gcc openmpi |
| 25 | mpirun ./a.out |
| 26 | }}} |
| 27 | |
| 28 | Aquí podemos apreciar varias cosas: |
| 29 | - El número de nodos no por tarea no se fija a 1, pues al tratarse de un programa paralelo con mpi, lo normal es que se pueda distribuir entre varios nodos que no comparten memoria (''distributed memory'') y que se pasan las dependencias de memoria mediante mensajes mpi. |
| 30 | - Nuestro programa, a.out en este caso, se invoca mediante el comando {{{mpirun}}}, habiendo cargado previamente los módulos {{{gcc}}} y {{{openmpi}}} |