Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1128 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Paralléliser les tris à l'aide de fork

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Paralléliser les tris à l'aide de fork

n°2328611
hokseed321
Posté le 03-02-2019 à 12:55:43  profilanswer
 

Bonjour,
J'ai clairement besoin d'aide concernant la parallélisation de taches sous linux grâce aux forks,
 
Mon programme réalise un tri sur un énorme fichier qu'il va découper en sous fichiers, les tries indépendamment puis les merger, puis supprime les sous fichiers.
L'idée est de paralléliser les tris des différents sous-fichiers. Voici la fonction qui tri les sous-fichiers :  

Code :
  1. void projectV2_sortFiles(unsigned long nb_split, const char ** filenames, const char ** filenames_sort){
  2.   unsigned long cpt = 0;
  3.     for(cpt = 0; cpt < nb_split; ++cpt){
  4.       int * values = NULL;
  5.       unsigned long nb_elem = SU_loadFile(filenames[cpt], &values);
  6.       SU_removeFile(filenames[cpt]);
  7.       fprintf(stderr, "Inner sort %lu: Array of %lu elem by %d\n", cpt, nb_elem, getpid());
  8.       SORTALGO(nb_elem, values);
  9.       SU_saveFile(filenames_sort[cpt], nb_elem, values);
  10.       free(values);
  11.     }
  12. }


Afin de paralléliser les tris j'ai rajouté ce qui suit :

Code :
  1. void projectV2_sortFiles(unsigned long nb_split, const char ** filenames, const char ** filenames_sort){
  2.   unsigned long cpt = 0;
  3.   pid_t pid = fork();
  4.   if (pid==-1){
  5.     exit(EXIT_FAILURE);
  6.   } else if (pid==0) {
  7. /** code de la fonction (du for -> au free) */
  8.   } else{
  9.     for(cpt = 0; cpt < nb_split; ++cpt){
  10.       wait(NULL);
  11.     }
  12.   }
  13. }


Le tri fonctionne, il est réalisé plus rapidement mais j'ai une erreur à la suppression d'un des sous fichiers.
Concrètement je veux juste savoir si j'ai bien compris le principe ou si je fais n'importe quoi,
(j'ai une autre question si jamais ce que j'ai fais est ok)
 
Merci d'avance,

mood
Publicité
Posté le 03-02-2019 à 12:55:43  profilanswer
 

n°2328737
bjone
Insert booze to continue
Posté le 05-02-2019 à 10:09:07  profilanswer
 

Pose-toi les questions:
- Combien de fils as-tu ?
- Quelle plage de fichiers sont couverts pour chaque fils ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Paralléliser les tris à l'aide de fork

 

Sujets relatifs
aide Spring boot /jquery /apiaide pointeur [résolu]
Demande d'aide pour un proramme de verrouillage arduinoaide lua
[Aide] Création jeu textuelAide récupérer les derniers status de chaque job
aide pour prgNovice : besoin d'aide sur un codage
besoin aideBesoin d'aide pour une requête
Plus de sujets relatifs à : Paralléliser les tris à l'aide de fork


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR