[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] Recherche Développeur pour interview



	Salut à tous !

Le 22/02/2021 à 15:44, Gaëtan PERRIER a écrit :
> C'est oublier que beaucoup de systèmes de build utilisés pour faire ces
> logiciels complexes génèrent de l'assembleur à un moment ...
> L'assembleur n'est donc pas inefficace c'est juste que faire la même chose
> prend trop de temps et ne serait pas à la portée de beaucoup de monde.

	D’expérience, je pense que cette assertion est fausse, dans le sens que
les choses sont plus complexes.

	Alors, oui, un compilateur transforme un code en langage machine, mais
ce n’est pas la même chose que de développer en assembleur. Il n’y a pas
une simple table d’équivalence entre le code et l’exécutable généré.

	En particulier, sur les architectures superscalaires, il y a quantité
d’optimisations que peuvent réaliser les compilateurs qui ne sont pas à
la portée d’un programmeur humain – pas à la portée de peu de monde, à
la portée de personne.

	Quelques exemples, tirés du calcul à hautes performances (mon domaine),
où les temps de calculs sont un problème essentiel.

	Dans les boucles, il est préférable de s’interroger sur l’utilisation
du pipeline. Même si de base les processeurs ont des mécanismes de
prévision des boucles, en réorganisant une boucle on peut gagner
quelques cycles. Il n’y a pas vraiment de règle générale, c’est plutôt
une approche stochastique qui permet de déterminer au mieux comment les
réorganiser.

	Toujours au sujet des boucles, il est bienvenu de les dérouler. La
profondeur optimale de déroulement n’est de même pas une question de
règle générale, encore une fois ça s’approche stochastiquement.

	Organiser les données dans le bus permet également pas mal de gain. Ça,
outre qu’il faut passer du temps pour le faire à la main, ça a tendance
à rendre les programmes moins lisibles.

	Il y a encore plein de méthodes à appliquer, qui pour atteindre
l’optimum, à la main, nécessite énormément de temps, d’essais, mais
aussi rendent les codes peu compréhensible, donc difficile à maintenir
et augmente grandement le nombre d’erreurs.

	Par ailleurs, faire ça à la main se fait au détriment de la
structuration du code, donc limite la complexité des tâches que pourra
réaliser le code – typiquement, du calcul parallèle auto-adaptatif.

	À bientôt.

-- 
Yoann LE BARS
https://le-bars.net/yoann/
Diaspora* : ylebars@framasphere.org


Reply to: