• [^] # Re: First touch

    Posté par . En réponse au message Allocation de mémoire NUMA dans un code parallèle (threads). Évalué à 3.

    Merci du conseil, c’est un peu le genre de remarque que j’attendais. Cependant, si je me pose la question, ce n’est pas vraiment pour gérer moi-même la mémoire avec des fonctions prenant en compte NUMA, c’est juste pour choisir la méthode de parallélisation la plus efficace, sans vraiment sortir des clous d’OpenMP.

    À la lecture de l’ensemble des réponses, il semble que le meilleur compromis soit de ne pas me préoccuper de NUMA directement mais d’allouer un tableau de donnée par thread (façon MPI), en laissant au système d’exploitation le soin de gérer la proximité entre le stockage de ce tableau en mémoire et le thread associé. Un seul gros tableau ne pouvant être proche de tous les threads à la fois, il se retrouvera forcément loin d’un certain nombre d’entre eux. Au besoin, s’assurer que mon code accède bien la première fois à chaque espace mémoire depuis le bon thread (pour tenir compte du « first touch ») n’est pas bien compliqué.

    on ne saurait trop vous recommander des tests de performance extensifs ; histoire d'éviter de vous échiner sur un faux problème

    Effectuer de bons tests risque de me prendre autant de temps que de découper mes tableaux, j’en ferai mais ça ne me coûte pas grand chose d’envisager la méthode la plus efficace en amont de ces tests.

    Merci à tous pour vos réponses utiles !