Christophe de VIENNE wrote in message
news:<newscache$kakwxh$bom$...wrote:Christophe de VIENNE wrote in message
news:<newscache$oo4vxh$084$...En solution libre sous unix il y a distcc. Il existe aussi ccache
qui le complète très bien. Perso j'utilise les deux et je gagne des
heures et des heures de compilo chaque semaine...
[...]Le GNU make actuel lancerait plusieurs tâches en parallel, mais tous
sur la même machine. Il ne doit pas être trop difficile à précéder
chaque tâche par un préfixe qui le fait exécuter sur une autre
machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des fichiers
d'en-têtes qui prend le plus de temps. Et la sortie du préprocesseur, ça
fait des fichiers d'une certaine taille, qu'on balance en plus sur le
reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que j'ai
eu des problèmes des temps de compilation, le problème était le reseau,
et non le compilateur. (Mais c'était avant l'époque de tout est un
template ; avec les templates, je crois que le compilateur a bien plus à
faire aussi.)
Christophe de VIENNE <cdevienne@alphacent.com> wrote in message
news:<newscache$kakwxh$bom$1@guronzan.alphacent.com>...
kanze@gabi-soft.fr wrote:
Christophe de VIENNE <cdevienne@alphacent.com> wrote in message
news:<newscache$oo4vxh$084$1@guronzan.alphacent.com>...
En solution libre sous unix il y a distcc. Il existe aussi ccache
qui le complète très bien. Perso j'utilise les deux et je gagne des
heures et des heures de compilo chaque semaine...
[...]
Le GNU make actuel lancerait plusieurs tâches en parallel, mais tous
sur la même machine. Il ne doit pas être trop difficile à précéder
chaque tâche par un préfixe qui le fait exécuter sur une autre
machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des fichiers
d'en-têtes qui prend le plus de temps. Et la sortie du préprocesseur, ça
fait des fichiers d'une certaine taille, qu'on balance en plus sur le
reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que j'ai
eu des problèmes des temps de compilation, le problème était le reseau,
et non le compilateur. (Mais c'était avant l'époque de tout est un
template ; avec les templates, je crois que le compilateur a bien plus à
faire aussi.)
Christophe de VIENNE wrote in message
news:<newscache$kakwxh$bom$...wrote:Christophe de VIENNE wrote in message
news:<newscache$oo4vxh$084$...En solution libre sous unix il y a distcc. Il existe aussi ccache
qui le complète très bien. Perso j'utilise les deux et je gagne des
heures et des heures de compilo chaque semaine...
[...]Le GNU make actuel lancerait plusieurs tâches en parallel, mais tous
sur la même machine. Il ne doit pas être trop difficile à précéder
chaque tâche par un préfixe qui le fait exécuter sur une autre
machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des fichiers
d'en-têtes qui prend le plus de temps. Et la sortie du préprocesseur, ça
fait des fichiers d'une certaine taille, qu'on balance en plus sur le
reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que j'ai
eu des problèmes des temps de compilation, le problème était le reseau,
et non le compilateur. (Mais c'était avant l'époque de tout est un
template ; avec les templates, je crois que le compilateur a bien plus à
faire aussi.)
Le GNU make actuel lancerait plusieurs tâches en parallel, mais tous
sur la même machine. Il ne doit pas être trop difficile à précéder
chaque tâche par un préfixe qui le fait exécuter sur une autre
machine.Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des fichiers
d'en-têtes qui prend le plus de temps. Et la sortie du préprocesseur, ça
fait des fichiers d'une certaine taille, qu'on balance en plus sur le
reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que j'ai
eu des problèmes des temps de compilation, le problème était le reseau,
et non le compilateur. (Mais c'était avant l'époque de tout est un
template ; avec les templates, je crois que le compilateur a bien plus à
faire aussi.)
Le gros avantage de distcc est qu'il ne necessite pas la recopie des
entêtes sur toutes les machines de la "ferme".
Mais puisque toutes les machines de la ferme sont aussi des machines de
dévelopement, ou bien on récopie, ou bien la majorité des gens font le
préprocessesseur sur une autre machine qu'où il y a des en-têtes, ou
bien toutes les machines ont leur copie des en-têtes.
Je suppose qu'il y a des cas où c'est intéressant, mais c'est toujours
assez limité par rapport à ce que fait par exemple ClearMake.
Le GNU make actuel lancerait plusieurs tâches en parallel, mais tous
sur la même machine. Il ne doit pas être trop difficile à précéder
chaque tâche par un préfixe qui le fait exécuter sur une autre
machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des fichiers
d'en-têtes qui prend le plus de temps. Et la sortie du préprocesseur, ça
fait des fichiers d'une certaine taille, qu'on balance en plus sur le
reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que j'ai
eu des problèmes des temps de compilation, le problème était le reseau,
et non le compilateur. (Mais c'était avant l'époque de tout est un
template ; avec les templates, je crois que le compilateur a bien plus à
faire aussi.)
Le gros avantage de distcc est qu'il ne necessite pas la recopie des
entêtes sur toutes les machines de la "ferme".
Mais puisque toutes les machines de la ferme sont aussi des machines de
dévelopement, ou bien on récopie, ou bien la majorité des gens font le
préprocessesseur sur une autre machine qu'où il y a des en-têtes, ou
bien toutes les machines ont leur copie des en-têtes.
Je suppose qu'il y a des cas où c'est intéressant, mais c'est toujours
assez limité par rapport à ce que fait par exemple ClearMake.
Le GNU make actuel lancerait plusieurs tâches en parallel, mais tous
sur la même machine. Il ne doit pas être trop difficile à précéder
chaque tâche par un préfixe qui le fait exécuter sur une autre
machine.Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des fichiers
d'en-têtes qui prend le plus de temps. Et la sortie du préprocesseur, ça
fait des fichiers d'une certaine taille, qu'on balance en plus sur le
reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que j'ai
eu des problèmes des temps de compilation, le problème était le reseau,
et non le compilateur. (Mais c'était avant l'époque de tout est un
template ; avec les templates, je crois que le compilateur a bien plus à
faire aussi.)
Le gros avantage de distcc est qu'il ne necessite pas la recopie des
entêtes sur toutes les machines de la "ferme".
Mais puisque toutes les machines de la ferme sont aussi des machines de
dévelopement, ou bien on récopie, ou bien la majorité des gens font le
préprocessesseur sur une autre machine qu'où il y a des en-têtes, ou
bien toutes les machines ont leur copie des en-têtes.
Je suppose qu'il y a des cas où c'est intéressant, mais c'est toujours
assez limité par rapport à ce que fait par exemple ClearMake.
a écrit dans le message de
news:Christophe de VIENNE wrote in message
news:<newscache$kakwxh$bom$...wrote:Christophe de VIENNE wrote in message
news:<newscache$oo4vxh$084$...En solution libre sous unix il y a distcc. Il existe aussi
ccache qui le complète très bien. Perso j'utilise les deux et
je gagne des heures et des heures de compilo chaque semaine...
[...]Le GNU make actuel lancerait plusieurs tâches en parallel, mais
tous sur la même machine. Il ne doit pas être trop difficile à
précéder chaque tâche par un préfixe qui le fait exécuter sur
une autre machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier
une fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des
fichiers d'en-têtes qui prend le plus de temps. Et la sortie du
préprocesseur, ça fait des fichiers d'une certaine taille, qu'on
balance en plus sur le reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que
j'ai eu des problèmes des temps de compilation, le problème était le
reseau, et non le compilateur. (Mais c'était avant l'époque de tout
est un template ; avec les templates, je crois que le compilateur a
bien plus à faire aussi.)
J'ai eu beaucoup de déconvenues en essayant de paralléliser des
compilations avec des templates. Chaque compilateur a sa façon de
gérer les instanciations et utilise des fichiers temporaires
"personnels" pour éviter de recompiler ce qui a déjà été compilé.
La compilation en parallèle sur un multiprocesseur nous amenait à des
erreurs de link car les instances de compilateurs ne coopèrent pas
entre elles pour la gestion des fichiers temporaires. La compilation
distribuée fait perdre tout l'intérêt de la compilation unique du code
du template : chaque machine du parc recompile les templates dont elle
a besoin...
(Mon expérience sur Solaris, HP-UX et Tru-64)
<kanze@gabi-soft.fr> a écrit dans le message de
news:d6652001.0405180757.209261ed@posting.google.com...
Christophe de VIENNE <cdevienne@alphacent.com> wrote in message
news:<newscache$kakwxh$bom$1@guronzan.alphacent.com>...
kanze@gabi-soft.fr wrote:
Christophe de VIENNE <cdevienne@alphacent.com> wrote in message
news:<newscache$oo4vxh$084$1@guronzan.alphacent.com>...
En solution libre sous unix il y a distcc. Il existe aussi
ccache qui le complète très bien. Perso j'utilise les deux et
je gagne des heures et des heures de compilo chaque semaine...
[...]
Le GNU make actuel lancerait plusieurs tâches en parallel, mais
tous sur la même machine. Il ne doit pas être trop difficile à
précéder chaque tâche par un préfixe qui le fait exécuter sur
une autre machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier
une fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des
fichiers d'en-têtes qui prend le plus de temps. Et la sortie du
préprocesseur, ça fait des fichiers d'une certaine taille, qu'on
balance en plus sur le reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que
j'ai eu des problèmes des temps de compilation, le problème était le
reseau, et non le compilateur. (Mais c'était avant l'époque de tout
est un template ; avec les templates, je crois que le compilateur a
bien plus à faire aussi.)
J'ai eu beaucoup de déconvenues en essayant de paralléliser des
compilations avec des templates. Chaque compilateur a sa façon de
gérer les instanciations et utilise des fichiers temporaires
"personnels" pour éviter de recompiler ce qui a déjà été compilé.
La compilation en parallèle sur un multiprocesseur nous amenait à des
erreurs de link car les instances de compilateurs ne coopèrent pas
entre elles pour la gestion des fichiers temporaires. La compilation
distribuée fait perdre tout l'intérêt de la compilation unique du code
du template : chaque machine du parc recompile les templates dont elle
a besoin...
(Mon expérience sur Solaris, HP-UX et Tru-64)
a écrit dans le message de
news:Christophe de VIENNE wrote in message
news:<newscache$kakwxh$bom$...wrote:Christophe de VIENNE wrote in message
news:<newscache$oo4vxh$084$...En solution libre sous unix il y a distcc. Il existe aussi
ccache qui le complète très bien. Perso j'utilise les deux et
je gagne des heures et des heures de compilo chaque semaine...
[...]Le GNU make actuel lancerait plusieurs tâches en parallel, mais
tous sur la même machine. Il ne doit pas être trop difficile à
précéder chaque tâche par un préfixe qui le fait exécuter sur
une autre machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier
une fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des
fichiers d'en-têtes qui prend le plus de temps. Et la sortie du
préprocesseur, ça fait des fichiers d'une certaine taille, qu'on
balance en plus sur le reseau.
Je suppose que ça dépend de la configuration, mais chaque fois que
j'ai eu des problèmes des temps de compilation, le problème était le
reseau, et non le compilateur. (Mais c'était avant l'époque de tout
est un template ; avec les templates, je crois que le compilateur a
bien plus à faire aussi.)
J'ai eu beaucoup de déconvenues en essayant de paralléliser des
compilations avec des templates. Chaque compilateur a sa façon de
gérer les instanciations et utilise des fichiers temporaires
"personnels" pour éviter de recompiler ce qui a déjà été compilé.
La compilation en parallèle sur un multiprocesseur nous amenait à des
erreurs de link car les instances de compilateurs ne coopèrent pas
entre elles pour la gestion des fichiers temporaires. La compilation
distribuée fait perdre tout l'intérêt de la compilation unique du code
du template : chaque machine du parc recompile les templates dont elle
a besoin...
(Mon expérience sur Solaris, HP-UX et Tru-64)
Je serais intéressé comment ClearCase résoud ce problème. En tant
que produit commerciel qui supporte (ou supportait) la compilation
répartie d'office, il faudrait bien qu'ils aient une solution.
La compilation en parallèle sur un multiprocesseur nous amenait à des
erreurs de link car les instances de compilateurs ne coopèrent pas
entre elles pour la gestion des fichiers temporaires. La compilation
distribuée fait perdre tout l'intérêt de la compilation unique du code
du template : chaque machine du parc recompile les templates dont elle
a besoin...
(Mon expérience sur Solaris, HP-UX et Tru-64)
Avec les compilateurs du constructeur, je suppose. Ni g++ ni les
compilateurs Windows ne se servent d'un « repository ».
Je serais intéressé comment ClearCase résoud ce problème. En tant
que produit commerciel qui supporte (ou supportait) la compilation
répartie d'office, il faudrait bien qu'ils aient une solution.
La compilation en parallèle sur un multiprocesseur nous amenait à des
erreurs de link car les instances de compilateurs ne coopèrent pas
entre elles pour la gestion des fichiers temporaires. La compilation
distribuée fait perdre tout l'intérêt de la compilation unique du code
du template : chaque machine du parc recompile les templates dont elle
a besoin...
(Mon expérience sur Solaris, HP-UX et Tru-64)
Avec les compilateurs du constructeur, je suppose. Ni g++ ni les
compilateurs Windows ne se servent d'un « repository ».
Je serais intéressé comment ClearCase résoud ce problème. En tant
que produit commerciel qui supporte (ou supportait) la compilation
répartie d'office, il faudrait bien qu'ils aient une solution.
La compilation en parallèle sur un multiprocesseur nous amenait à des
erreurs de link car les instances de compilateurs ne coopèrent pas
entre elles pour la gestion des fichiers temporaires. La compilation
distribuée fait perdre tout l'intérêt de la compilation unique du code
du template : chaque machine du parc recompile les templates dont elle
a besoin...
(Mon expérience sur Solaris, HP-UX et Tru-64)
Avec les compilateurs du constructeur, je suppose. Ni g++ ni les
compilateurs Windows ne se servent d'un « repository ».
wrote:Le GNU make actuel lancerait plusieurs tâches en parallel, mais
tous sur la même machine. Il ne doit pas être trop difficile à
précéder chaque tâche par un préfixe qui le fait exécuter sur une
autre machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des
fichiers d'en-têtes qui prend le plus de temps. Et la sortie du
préprocesseur, ça fait des fichiers d'une certaine taille, qu'on
balance en plus sur le reseau.
La lecture ou bien l'interprétation des fichiers d'entêtes ?
Le préprocessing en lui-même est assez rapide je crois.
De plus sur un réseau local à 100Mb passer des fichiers de quelques
centaines de ko c'est presque négligeable comme temps (moins d'une
seconde en général) alors que la compilation d'un .o en c++ peut
prendre plusieurs dizaines de secondes.
kanze@gabi-soft.fr wrote:
Le GNU make actuel lancerait plusieurs tâches en parallel, mais
tous sur la même machine. Il ne doit pas être trop difficile à
précéder chaque tâche par un préfixe qui le fait exécuter sur une
autre machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des
fichiers d'en-têtes qui prend le plus de temps. Et la sortie du
préprocesseur, ça fait des fichiers d'une certaine taille, qu'on
balance en plus sur le reseau.
La lecture ou bien l'interprétation des fichiers d'entêtes ?
Le préprocessing en lui-même est assez rapide je crois.
De plus sur un réseau local à 100Mb passer des fichiers de quelques
centaines de ko c'est presque négligeable comme temps (moins d'une
seconde en général) alors que la compilation d'un .o en c++ peut
prendre plusieurs dizaines de secondes.
wrote:Le GNU make actuel lancerait plusieurs tâches en parallel, mais
tous sur la même machine. Il ne doit pas être trop difficile à
précéder chaque tâche par un préfixe qui le fait exécuter sur une
autre machine.
Et le préfixe le + simple c'est 'distcc', qui envoit le fichier une
fois passé par le préprocesseur vers une des machines du pool.
Mais quel est alors l'intérêt ? C'est souvent la lecture des
fichiers d'en-têtes qui prend le plus de temps. Et la sortie du
préprocesseur, ça fait des fichiers d'une certaine taille, qu'on
balance en plus sur le reseau.
La lecture ou bien l'interprétation des fichiers d'entêtes ?
Le préprocessing en lui-même est assez rapide je crois.
De plus sur un réseau local à 100Mb passer des fichiers de quelques
centaines de ko c'est presque négligeable comme temps (moins d'une
seconde en général) alors que la compilation d'un .o en c++ peut
prendre plusieurs dizaines de secondes.
"Rémy" wrote in message
news:<c8dcf5$k4c$...(Mon expérience sur Solaris, HP-UX et Tru-64)
Avec les compilateurs du constructeur, je suppose. Ni g++ ni les
compilateurs Windows ne se servent d'un « repository ».
"Rémy" <remy.bertrand@cgeyt.com> wrote in message
news:<c8dcf5$k4c$1@s1.read.news.oleane.net>...
(Mon expérience sur Solaris, HP-UX et Tru-64)
Avec les compilateurs du constructeur, je suppose. Ni g++ ni les
compilateurs Windows ne se servent d'un « repository ».
"Rémy" wrote in message
news:<c8dcf5$k4c$...(Mon expérience sur Solaris, HP-UX et Tru-64)
Avec les compilateurs du constructeur, je suppose. Ni g++ ni les
compilateurs Windows ne se servent d'un « repository ».