Avec un Makefile, on peut utiliser l'option "-j<n>" pour lancer <n>
taches en parallèle afin d'accelerer la compilation sur une machine
multiprocesseur en tirant partit de toutes les ressources disponibles.
Existe-t'il un équivalent pour ant ? Je pense que c'est inutile car ant
est une application java qui saura nativement se multithreader pour
faire un usage optimiser de l'environement, mais je n'en suis pas sur.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Emmanuel Bourg
Ant dispose d'une tache <parallel> pour exécuter une partie du traitement dans un thread à part, ça ne garanti pas qu'un processeur sera affecté à chaque branche d'exécution, mais au moins l'occasion est donnée à la JVM de faire ce type d'optimisation.
Avec un Makefile, on peut utiliser l'option "-j<n>" pour lancer <n> taches en parallèle afin d'accelerer la compilation sur une machine multiprocesseur en tirant partit de toutes les ressources disponibles. Existe-t'il un équivalent pour ant ? Je pense que c'est inutile car a nt est une application java qui saura nativement se multithreader pour faire un usage optimiser de l'environement, mais je n'en suis pas sur.
Merci pour toute info sur ce sujet.
Yannick
Ant dispose d'une tache <parallel> pour exécuter une partie du
traitement dans un thread à part, ça ne garanti pas qu'un processeur
sera affecté à chaque branche d'exécution, mais au moins l'occasion est
donnée à la JVM de faire ce type d'optimisation.
Avec un Makefile, on peut utiliser l'option "-j<n>" pour lancer <n>
taches en parallèle afin d'accelerer la compilation sur une machine
multiprocesseur en tirant partit de toutes les ressources disponibles.
Existe-t'il un équivalent pour ant ? Je pense que c'est inutile car a nt
est une application java qui saura nativement se multithreader pour
faire un usage optimiser de l'environement, mais je n'en suis pas sur.
Ant dispose d'une tache <parallel> pour exécuter une partie du traitement dans un thread à part, ça ne garanti pas qu'un processeur sera affecté à chaque branche d'exécution, mais au moins l'occasion est donnée à la JVM de faire ce type d'optimisation.
Avec un Makefile, on peut utiliser l'option "-j<n>" pour lancer <n> taches en parallèle afin d'accelerer la compilation sur une machine multiprocesseur en tirant partit de toutes les ressources disponibles. Existe-t'il un équivalent pour ant ? Je pense que c'est inutile car a nt est une application java qui saura nativement se multithreader pour faire un usage optimiser de l'environement, mais je n'en suis pas sur.
Merci pour toute info sur ce sujet.
Yannick
Yannick Patois
Emmanuel Bourg wrote:
Ant dispose d'une tache <parallel> pour exécuter une partie du traitement dans un thread à part, ça ne garanti pas qu'un processeur sera affecté à chaque branche d'exécution, mais au moins l'occasion est donnée à la JVM de faire ce type d'optimisation. http://ant.apache.org/manual/CoreTasks/parallel.html
Merci, mais:
- C'est à moi de m'occuper de savoir si les tâches vont collisionner ou pas ? (make s'en occupe tout seul). - Je dois modifier le build.xml (en l'occurence c'est pas les miens et je ne veux pas y toucher) ? (-j est une option sur la ligne de commande à l'invocation: je ne modifie pas les makefiles).
Réellement rien de mieux à proposer ?
OK, on fera avec...
Yannick
Emmanuel Bourg wrote:
Ant dispose d'une tache <parallel> pour exécuter une partie du
traitement dans un thread à part, ça ne garanti pas qu'un processeur
sera affecté à chaque branche d'exécution, mais au moins l'occasion est
donnée à la JVM de faire ce type d'optimisation.
http://ant.apache.org/manual/CoreTasks/parallel.html
Merci, mais:
- C'est à moi de m'occuper de savoir si les tâches vont collisionner ou
pas ? (make s'en occupe tout seul).
- Je dois modifier le build.xml (en l'occurence c'est pas les miens et
je ne veux pas y toucher) ? (-j est une option sur la ligne de commande
à l'invocation: je ne modifie pas les makefiles).
Ant dispose d'une tache <parallel> pour exécuter une partie du traitement dans un thread à part, ça ne garanti pas qu'un processeur sera affecté à chaque branche d'exécution, mais au moins l'occasion est donnée à la JVM de faire ce type d'optimisation. http://ant.apache.org/manual/CoreTasks/parallel.html
Merci, mais:
- C'est à moi de m'occuper de savoir si les tâches vont collisionner ou pas ? (make s'en occupe tout seul). - Je dois modifier le build.xml (en l'occurence c'est pas les miens et je ne veux pas y toucher) ? (-j est une option sur la ligne de commande à l'invocation: je ne modifie pas les makefiles).
Réellement rien de mieux à proposer ?
OK, on fera avec...
Yannick
Eric Delcamp
Non, car Make souffre ici (avec le parametre -j n) d'un tres grave défaut. En effet, il faut que tu declare les dependances entre les taches a effectuer pour eviter quelles soient executées en parallele. Je m'explique :
"all: tache1 tache2 tache3" Avec -j 2, l'ordre peut etre tache1 et tache3, puis tache2. Tres embettant quand tu as des dependances dans tache3 qui sont crées dans tache2. Make a des mecanismes assez contraignant pour declarer la dependance des objets entre eux et l'ordre preferentiel d'execution. Make ne s'en occupe pas tout seul, mais disons que sur une compilation "simple", c'est a dire avec 1 seul niveau de dependance, ca passe inapercu (on créer tout les objets, puis on link. Que main.o soit créer avant truc.o n'a pas d'importance).
Ant a le meme soucis et les memes solutions. C'est a toi de savoir l'ordre et de l'exprimer.
"Yannick Patois" a écrit dans le message de news:bj2acn$ht6$
Emmanuel Bourg wrote:
Ant dispose d'une tache <parallel> pour exécuter une partie du traitement dans un thread à part, ça ne garanti pas qu'un processeur sera affecté à chaque branche d'exécution, mais au moins l'occasion est donnée à la JVM de faire ce type d'optimisation. http://ant.apache.org/manual/CoreTasks/parallel.html
Merci, mais:
- C'est à moi de m'occuper de savoir si les tâches vont collisionner ou pas ? (make s'en occupe tout seul). - Je dois modifier le build.xml (en l'occurence c'est pas les miens et je ne veux pas y toucher) ? (-j est une option sur la ligne de commande à l'invocation: je ne modifie pas les makefiles).
Réellement rien de mieux à proposer ?
OK, on fera avec...
Yannick
Non, car Make souffre ici (avec le parametre -j n) d'un tres grave défaut.
En effet, il faut que tu declare les dependances entre les taches a
effectuer pour eviter quelles soient executées en parallele. Je m'explique :
"all: tache1 tache2 tache3"
Avec -j 2, l'ordre peut etre tache1 et tache3, puis tache2. Tres embettant
quand tu as des dependances dans tache3 qui sont crées dans tache2. Make a
des mecanismes assez contraignant pour declarer la dependance des objets
entre eux et l'ordre preferentiel d'execution. Make ne s'en occupe pas tout
seul, mais disons que sur une compilation "simple", c'est a dire avec 1 seul
niveau de dependance, ca passe inapercu (on créer tout les objets, puis on
link. Que main.o soit créer avant truc.o n'a pas d'importance).
Ant a le meme soucis et les memes solutions. C'est a toi de savoir l'ordre
et de l'exprimer.
"Yannick Patois" <patois@calvix.org> a écrit dans le message de
news:bj2acn$ht6$1@ccpntc8.in2p3.fr...
Emmanuel Bourg wrote:
Ant dispose d'une tache <parallel> pour exécuter une partie du
traitement dans un thread à part, ça ne garanti pas qu'un processeur
sera affecté à chaque branche d'exécution, mais au moins l'occasion est
donnée à la JVM de faire ce type d'optimisation.
http://ant.apache.org/manual/CoreTasks/parallel.html
Merci, mais:
- C'est à moi de m'occuper de savoir si les tâches vont collisionner ou
pas ? (make s'en occupe tout seul).
- Je dois modifier le build.xml (en l'occurence c'est pas les miens et
je ne veux pas y toucher) ? (-j est une option sur la ligne de commande
à l'invocation: je ne modifie pas les makefiles).
Non, car Make souffre ici (avec le parametre -j n) d'un tres grave défaut. En effet, il faut que tu declare les dependances entre les taches a effectuer pour eviter quelles soient executées en parallele. Je m'explique :
"all: tache1 tache2 tache3" Avec -j 2, l'ordre peut etre tache1 et tache3, puis tache2. Tres embettant quand tu as des dependances dans tache3 qui sont crées dans tache2. Make a des mecanismes assez contraignant pour declarer la dependance des objets entre eux et l'ordre preferentiel d'execution. Make ne s'en occupe pas tout seul, mais disons que sur une compilation "simple", c'est a dire avec 1 seul niveau de dependance, ca passe inapercu (on créer tout les objets, puis on link. Que main.o soit créer avant truc.o n'a pas d'importance).
Ant a le meme soucis et les memes solutions. C'est a toi de savoir l'ordre et de l'exprimer.
"Yannick Patois" a écrit dans le message de news:bj2acn$ht6$
Emmanuel Bourg wrote:
Ant dispose d'une tache <parallel> pour exécuter une partie du traitement dans un thread à part, ça ne garanti pas qu'un processeur sera affecté à chaque branche d'exécution, mais au moins l'occasion est donnée à la JVM de faire ce type d'optimisation. http://ant.apache.org/manual/CoreTasks/parallel.html
Merci, mais:
- C'est à moi de m'occuper de savoir si les tâches vont collisionner ou pas ? (make s'en occupe tout seul). - Je dois modifier le build.xml (en l'occurence c'est pas les miens et je ne veux pas y toucher) ? (-j est une option sur la ligne de commande à l'invocation: je ne modifie pas les makefiles).
Réellement rien de mieux à proposer ?
OK, on fera avec...
Yannick
Yannick Patois
Eric Delcamp wrote:
Non, car Make souffre ici (avec le parametre -j n) d'un tres grave défaut. En effet, il faut que tu declare les dependances entre les taches a effectuer pour eviter quelles soient executées en parallele. Je m'explique :
"all: tache1 tache2 tache3" Avec -j 2, l'ordre peut etre tache1 et tache3, puis tache2. Tres embettant quand tu as des dependances dans tache3 qui sont crées dans tache2.
Si la dépendance est explicite (ce qui doit etre le cas si le makefile est bien fais) cela est automatiquement geré il me semble.
Ant a le meme soucis et les memes solutions. C'est a toi de savoir l'ordre et de l'exprimer.
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma machine et ajuste son nombre de thread en fonction ? Ou je peux le forcer à avoir un certain nombre de thread ?
Merci.
Yannick
Eric Delcamp wrote:
Non, car Make souffre ici (avec le parametre -j n) d'un tres grave défaut.
En effet, il faut que tu declare les dependances entre les taches a
effectuer pour eviter quelles soient executées en parallele. Je m'explique :
"all: tache1 tache2 tache3"
Avec -j 2, l'ordre peut etre tache1 et tache3, puis tache2. Tres embettant
quand tu as des dependances dans tache3 qui sont crées dans tache2.
Si la dépendance est explicite (ce qui doit etre le cas si le makefile
est bien fais) cela est automatiquement geré il me semble.
Ant a le meme soucis et les memes solutions. C'est a toi de savoir l'ordre
et de l'exprimer.
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma
machine et ajuste son nombre de thread en fonction ? Ou je peux le
forcer à avoir un certain nombre de thread ?
Non, car Make souffre ici (avec le parametre -j n) d'un tres grave défaut. En effet, il faut que tu declare les dependances entre les taches a effectuer pour eviter quelles soient executées en parallele. Je m'explique :
"all: tache1 tache2 tache3" Avec -j 2, l'ordre peut etre tache1 et tache3, puis tache2. Tres embettant quand tu as des dependances dans tache3 qui sont crées dans tache2.
Si la dépendance est explicite (ce qui doit etre le cas si le makefile est bien fais) cela est automatiquement geré il me semble.
Ant a le meme soucis et les memes solutions. C'est a toi de savoir l'ordre et de l'exprimer.
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma machine et ajuste son nombre de thread en fonction ? Ou je peux le forcer à avoir un certain nombre de thread ?
Merci.
Yannick
Emmanuel Bourg
Yannick Patois wrote:
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma machine et ajuste son nombre de thread en fonction ? Ou je peux le forcer à avoir un certain nombre de thread ?
Il y aura autant de threads que de taches <parallel>, la VM se débrouille ensuite pour associer les threads aux processeurs. Ant ne prend pas de lui même l'initiative de parallèliser des traitements.
Yannick Patois wrote:
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma
machine et ajuste son nombre de thread en fonction ? Ou je peux le
forcer à avoir un certain nombre de thread ?
Il y aura autant de threads que de taches <parallel>, la VM se
débrouille ensuite pour associer les threads aux processeurs. Ant ne
prend pas de lui même l'initiative de parallèliser des traitements.
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma machine et ajuste son nombre de thread en fonction ? Ou je peux le forcer à avoir un certain nombre de thread ?
Il y aura autant de threads que de taches <parallel>, la VM se débrouille ensuite pour associer les threads aux processeurs. Ant ne prend pas de lui même l'initiative de parallèliser des traitements.
Yannick Patois
Emmanuel Bourg wrote:
Yannick Patois wrote:
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma machine et ajuste son nombre de thread en fonction ? Ou je peux le forcer à avoir un certain nombre de thread ?
Il y aura autant de threads que de taches <parallel>, la VM se débrouille ensuite pour associer les threads aux processeurs. Ant ne prend pas de lui même l'initiative de parallèliser des traitements.
Pas très futé: ca veut dire que je dois réécrire la commande de build pour chaque architecture (par exemple si y'a 500 compilation parallélisable à un endroit, sur une machine monoproc, je ne peux surement pas le faire telquel sans écrouler la machine, alors que sur une machine à 128 noeuds c'est peut-etre l'optimum...).
Bon, je m'appercois aussi qu'avec un makefile moyenement fait, ca bloque méchemment aussi quand on parallelize, mais une fois écrit correctement, ca scale bien, alors que pour ant, faudra peut etre attendre la prochaine version...
Yannick
Emmanuel Bourg wrote:
Yannick Patois wrote:
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma
machine et ajuste son nombre de thread en fonction ? Ou je peux le
forcer à avoir un certain nombre de thread ?
Il y aura autant de threads que de taches <parallel>, la VM se
débrouille ensuite pour associer les threads aux processeurs. Ant ne
prend pas de lui même l'initiative de parallèliser des traitements.
Pas très futé: ca veut dire que je dois réécrire la commande de build
pour chaque architecture (par exemple si y'a 500 compilation
parallélisable à un endroit, sur une machine monoproc, je ne peux
surement pas le faire telquel sans écrouler la machine, alors que sur
une machine à 128 noeuds c'est peut-etre l'optimum...).
Bon, je m'appercois aussi qu'avec un makefile moyenement fait, ca bloque
méchemment aussi quand on parallelize, mais une fois écrit correctement,
ca scale bien, alors que pour ant, faudra peut etre attendre la
prochaine version...
OK, et une fois cela fait, ant sait combien j'ai de processeurs sur ma machine et ajuste son nombre de thread en fonction ? Ou je peux le forcer à avoir un certain nombre de thread ?
Il y aura autant de threads que de taches <parallel>, la VM se débrouille ensuite pour associer les threads aux processeurs. Ant ne prend pas de lui même l'initiative de parallèliser des traitements.
Pas très futé: ca veut dire que je dois réécrire la commande de build pour chaque architecture (par exemple si y'a 500 compilation parallélisable à un endroit, sur une machine monoproc, je ne peux surement pas le faire telquel sans écrouler la machine, alors que sur une machine à 128 noeuds c'est peut-etre l'optimum...).
Bon, je m'appercois aussi qu'avec un makefile moyenement fait, ca bloque méchemment aussi quand on parallelize, mais une fois écrit correctement, ca scale bien, alors que pour ant, faudra peut etre attendre la prochaine version...