Multiprocessing
fouf
Membre
Comment faut-il faire pouroptimiser son appli pour le multi processing ?
Ce n'est pas pour l'integrer dans un programme, mais cela m'intrigue et la pub d'Apple sur ce sujet ne fait qu'empirer les choses. En effet, dans la plupart des bouquins d'info theorique, il est dit qu'il vaut mieux avoir un seul proc de puissance 2x plutot que 2 proc de puissance x (Apple soutient le contraire).
Comment faire, dans quelles situations, cela a t il un interet ?? Aidez-moi, SVP :why?:
Ce n'est pas pour l'integrer dans un programme, mais cela m'intrigue et la pub d'Apple sur ce sujet ne fait qu'empirer les choses. En effet, dans la plupart des bouquins d'info theorique, il est dit qu'il vaut mieux avoir un seul proc de puissance 2x plutot que 2 proc de puissance x (Apple soutient le contraire).
Comment faire, dans quelles situations, cela a t il un interet ?? Aidez-moi, SVP :why?:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
ensuite, techniquement, il suffit de créer un ou des threads supplémentaires (avec NSThread) ou de lancer plusieurs tâches (avec NSTask).
chaque thread/task s'occupe d'une partie du boulot... et s'il y a plusieurs processeurs, ils sont utilisés.
Par exemple tu as une appli de compression de vidéo, au lieu de compresser un par un chaque vidéo du début à la fin, tu peux compresser plusieurs vidéo en même temps, en découpant chaque vidéo en parties qui seront indépendement compressées puis assemblées..
Tu peux aussi paralléliser sur des tâches différentes qui se suivent.. par exemple dans une image animée (ex: un jeu 3D), tu n'es pas obligé d'attendre que l'affichage de l'image courante soit terminée (ex: par le processeur de la carte graphique) pour commencer à calculer les paramètres de l'image suivante (par un processeur central)..
La grosse problématique du multiprocessing, parrallélisme c'est la synchronisation de toutes les tâches parallèles, le partage de données sur le même travail..
Le problème pour le mono-procésseurs, c'est que tu plafonnes plus facilement au niveau puissance et que toute la consommation d'énergie se concentre en un seul point..
On ne peut pas essayer de savoir quel est le nombre de processeurs en utilisant une fonction systeme ?
Ptet qu'un jour j'essaierais de les utiliser quand j'aurais une applis usine a gaz (les NSTask c'est pas trop mon truc)
Voilà :
oui, on peut avoir d'autres infos (taille cache l1,l2 version darwin et plein de trucs.)
La doc? ben man sysctl et voilà . Mais n'allez pas exécuter sysctl par nstask et parser le résultat de la commande, hein! Désolé, j'ai développé une allérgie aux nstasks.
Bon, je suis gentil et je te donne un autre exemple, qui lui donne la version de Darwin
Enjoy
EDIT: avant que quelqu'un le demande, il faut mettre ceci:
#import <sys/sysctl.h>
Comme indiqué dans le man