Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/05/2012, à 02:10

moktar bouain

Affecter chaque thread sur un core avec pthread

Bonjour,

J'aimerais écrire un code qui permet d'affecter chaque thread sur un core.
Alors je fais quelques recherches et j'ai essayé d'écrire un code qui permet de faire ça.
D'après quelques recherches, j'ai trouvé que "sched_setaffinity" de pthread peut me donner un résultat. Ci dessous mon code, j'ai essayé de faire ça mais il n'ai pas marché:
   
#include <pthread.h>
#include <stdio.h>
#include <sched.h>
#include <sys/types.h>

// Number of CPUS
int n_cpus = 2;
int n_threads = 2;
int thread_counter = 0;

void *thread_func(void *thread_id)
{
  cpu_set_t cpuset;
  int threadnum = (int) thread_id;

  CPU_ZERO(&cpuset);
  CPU_SET(threadnum % n_cpus, &cpuset);
  CPU_CLR(1, &cpuset);
  sched_setaffinity(0, sizeof (cpuset), &cpuset);
   printf("Thread %d: Hello World!\n", threadnum);
  return (void*)NULL;
}

void *thread_func1(void *thread_id)
{
  cpu_set_t cpuset;
  int threadnum = (int) thread_id;

  CPU_ZERO(&cpuset);
  CPU_SET(threadnum % n_cpus, &cpuset);
  CPU_CLR(1, &cpuset);
  sched_setaffinity(0, sizeof (cpuset), &cpuset);
   printf("Thread %d: Hello World!\n", threadnum);
   return (void*)NULL;
}

int main(int argc, char* argv[])
{
  int threadnum;
  int i;

  printf("Main process: Hello world!\n");

  pthread_t thread;
  pthread_attr_t thread_attr;
  pthread_attr_init(&thread_attr);

  threadnum = 0;
  pthread_create(&thread, &thread_attr, thread_func, (void *)threadnum);
  threadnum = 1;
  pthread_create(&thread, &thread_attr, thread_func, (void *)threadnum);
  return 0;
}

Alors , y a-t-il quelqu'un qui peut m'aider ?
Merci d'avance.
Moktar.

Hors ligne

#2 Le 29/05/2012, à 08:22

telliam

Re : Affecter chaque thread sur un core avec pthread

pourquoi fait tu un CPU_CLR apres un CPU_SET???
a mon avis il faut virer le CPU_CLR


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 29/05/2012, à 11:16

moktar bouain

Re : Affecter chaque thread sur un core avec pthread

Bonjour,

Merci telliam, Oui c'est une erreur, j'ai enlevé.
Pour le reste??

Dernière modification par moktar bouain (Le 29/05/2012, à 11:17)

Hors ligne

#4 Le 29/05/2012, à 14:10

telliam

Re : Affecter chaque thread sur un core avec pthread

qu'est ce qui ne marche pas?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne