| | 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}}} |