root 9 ヶ月 前
コミット
110d417697
4 ファイル変更108 行追加0 行削除
  1. 22 0
      step0/script0.sh
  2. BIN
      step1/elementary
  3. 63 0
      step1/elementary.c
  4. 23 0
      step1/script_elementary.sh

+ 22 - 0
step0/script0.sh

@@ -0,0 +1,22 @@
+#!/bin/bash
+#SBATCH --job-name=mon_job       # Nom de la tâche
+# #SBATCH --nodes=1                # Nombre de nœuds
+#SBATCH --ntasks=1               # Nombre de tâches
+# #SBATCH --cpus-per-task=4        # Nombre de processeurs par tâche
+# #SBATCH --mem=4G                 # Mémoire par tâche
+#SBATCH --time=00:10:00          # Temps limite (HH:MM:SS)
+# #SBATCH --partition=nom_partition # Partition spécifique
+
+# Chargez les modules nécessaires (facultatif, selon votre configuration)
+# module load module1
+# module load module2
+
+# Commandes à exécuter sur chaque nœud
+# (remplacez ces lignes par les commandes réelles de votre script)
+echo "Hello, this is my Slurm job!"
+echo "Running on host: $(hostname)"
+echo "Current directory: $(pwd)"
+sleep 120
+echo "fin"
+# Fin du script
+

BIN
step1/elementary


+ 63 - 0
step1/elementary.c

@@ -0,0 +1,63 @@
+#include <mpi.h>
+#include <stdio.h>
+#include <signal.h>
+#include <unistd.h>
+#include <stdlib.h>
+void handle_sigterm(int signum) {
+    printf("Received SIGTERM (%d).\n", signum);
+
+    // Ajoutez ici le code de nettoyage ou de gestion du signal SIGKILL
+
+    // Exemple : Fermez les fichiers, libérez la mémoire, etc.
+    // ...
+
+    // Terminez proprement le programme
+    exit(EXIT_SUCCESS);
+}
+
+void handle_sigint(int signum) {
+    printf("Received SIGINT (%d).\n", signum);
+    exit(EXIT_SUCCESS); 
+}
+
+int main() {
+    // Installez le gestionnaire de signal pour SIGKILL
+    if (signal(SIGTERM, handle_sigterm) == SIG_ERR) {
+        perror("Erreur lors de l'installation du gestionnaire de signal");
+        return EXIT_FAILURE;
+    }
+    if (signal(SIGINT, handle_sigint) == SIG_ERR) {
+       perror("Erreur lors de l'installation du gestionnaire de signal pour SIGINT");
+       return EXIT_FAILURE;
+    }
+    MPI_Init(NULL, NULL);
+
+    // Get the number of processes
+    int world_size;
+    MPI_Comm_size(MPI_COMM_WORLD, &world_size);
+
+    // Get the rank of the process
+    int world_rank;
+    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
+
+    // Get the name of the processor
+    char processor_name[MPI_MAX_PROCESSOR_NAME];
+    int name_len;
+    MPI_Get_processor_name(processor_name, &name_len);
+
+    // Print off a hello world message
+    printf("Hello world from processor %s, rank %d out of %d processors\n",
+           processor_name, world_rank, world_size); 
+    printf("Le programme est en cours d'exécution. PID: %d\n", getpid());
+
+    // Simulation d'une tâche en cours d'exécution
+    while (1) {
+        // Votre code ici...
+
+        // Ajoutez une pause pour éviter une utilisation intensive du processeur
+        sleep(1);
+    }
+    MPI_Finalize();
+    return EXIT_SUCCESS;
+}
+

+ 23 - 0
step1/script_elementary.sh

@@ -0,0 +1,23 @@
+#!/bin/bash
+#SBATCH --job-name=mon_job       # Nom de la tâche
+# #SBATCH --nodes=1                # Nombre de nœuds
+#SBATCH --ntasks=1               # Nombre de tâches
+# #SBATCH --cpus-per-task=4        # Nombre de processeurs par tâche
+# #SBATCH --mem=4G                 # Mémoire par tâche
+#SBATCH --time=00:00:10          # Temps limite (HH:MM:SS)
+# #SBATCH --partition=nom_partition # Partition spécifique
+
+# Chargez les modules nécessaires (facultatif, selon votre configuration)
+# module load module1
+# module load module2
+
+# Commandes à exécuter sur chaque nœud
+# (remplacez ces lignes par les commandes réelles de votre script)
+echo "Hello, this is my Slurm job!"
+echo "Running on host: $(hostname)"
+echo "Current directory: $(pwd)"
+mpirun /data/elementary
+sleep 120
+echo "fin"
+# Fin du script
+