IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Utiliser 2 processeurs avec un programme en C


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Points : 11
    Points
    11
    Par défaut Utiliser 2 processeurs avec un programme en C
    Bonjour,

    J'aimerai savoir comment utiliser la capacité maximale de calcul de mon processeur.
    Il possède 2 coeurs, mais quand je fais un programme il n'utilise qu'un processus et donc qu'un processeur.
    Existe t-il une commande pour "grouper les 2 processeurs" et en faire qu'une (sous Linux par exemple) ?
    Certains parle de fork mais la gestion à l'air difficile.

    Merci d'avance,

    Frogway

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Il faut se lancer dans la programmation multi thread pour cela (le fork() est plus Unix à la mode ancienne mais c'est une piste aussi).

    Le but est de lancer 2 ou plusieurs instances d'éxécution simultanément et en parallèle. Chaque instance d'exécution utilise un coeur ou 1 CPU.

    Par contre, la conception de ton programme doit prendre en compte le fait que tu vas faire de la programmation //. De plus, tous les problèmes ne peuvent pas se mettre en // et utiliser ainsi toutes les cpu de ta machine.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    D'accord, merci.

    Mais je trouve un peu dommage de devoir se prendre la tête à faire un programme particulier pour faire tourner quelque chose de relativement simple mais gourmand en ressources.

    Si je comprends bien utiliser un double ou quadruple coeurs n'est avantageux que pour faire tourner beaucoup de processus mais pas pour faire tourner un seul programme.

    Grosso modo, un PC de 2 ou 3 ans tournant à 3 Ghz ou plus est plus rapide que ceux de maintenant ! Vive le progrès ! (voire l'overclocking !)

    En fait mon programme a plusieurs boucles imbriquées et je en vois pas comment utiliser un fork a bon escient.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par frogway Voir le message
    Mais je trouve un peu dommage de devoir se prendre la tête à faire un programme particulier pour faire tourner quelque chose de relativement simple mais gourmand en ressources.
    J'ai jamais dit que c'était simple.

    Citation Envoyé par frogway Voir le message
    Si je comprends bien utiliser un double ou quadruple coeurs n'est avantageux que pour faire tourner beaucoup de processus mais pas pour faire tourner un seul programme.
    Oui

    Citation Envoyé par frogway Voir le message
    Grosso modo, un PC de 2 ou 3 ans tournant à 3 Ghz ou plus est plus rapide que ceux de maintenant ! Vive le progrès ! (voire l'overclocking !)
    Heu il y a 2 ou 3 ans, ton PC mono coeur avait de la peine pour lancer Outlook, IE et Word simultanément. Maintenant, chaque coeur gère chaque programme et c'est fluide pour tout le monde.

    Citation Envoyé par frogway Voir le message
    En fait mon programme a plusieurs boucles imbriquées et je en vois pas comment utiliser un fork a bon escient.
    Peut être que ton algorithme n'est pas prévu pour utiliser le multi coeur.

    Si on prend par exemple la recherche des facteurs premiers d'un grand nombre. Ceci est un processus très gourmant en CPU qui au premier abord n'est pas parallèlisable. Si on fait un algo simple, il n'utilisera qu'un seul coeur et c'est vrai qu'il n'utilise pas toutes les ressources potentielles de la machine.

    Maintenant, si du découpes le problème et que tu sous traites chaque partie élémentaire, tu peux demander à d'autre CPU de réaliser une partie du problème. La seule chose difficile à parallèliser (et encore) est le découpage en tâches et le réassemblage des résultats. Après, toutes les CPU peuvent participer.

    Le projet GIMP de recherche de nombres premiers est basé la dessus. Il y a une grosse machine qui a partitionné le problème et ensuite chaque PC d'Internet qui le souhaite et qui a du temps libre réalise une toute petite partie du problème en parallèle avec les autres.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Utiliser Guile avec un programme C
    Par Bobs8901 dans le forum Scheme
    Réponses: 1
    Dernier message: 05/05/2007, 21h24
  2. Réponses: 9
    Dernier message: 10/08/2006, 17h33
  3. Trouble avec Excel avec un programme qui utilise un Hook.
    Par hot_metal dans le forum Windows
    Réponses: 5
    Dernier message: 14/01/2006, 13h40
  4. Comment utiliser ShellExecute avec un programme DOS ?
    Par RC10GT_MGT dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 22/09/2005, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo