• [^] # Re: Ces architectures sont de plus en plus rares mais pas encore mortes

    Posté par . En réponse au journal Le Power8 d'IBM pourra t-il s'imposer dans le monde des entreprises ?. Évalué à 3.

    Sur un serveur, la charge de travail se distribue quand même assez naturellement sur un certains nombre de cœurs,

    Bah ces gammes de processeurs (Xeon, Power8) s'adressent quand même vraiment au marché serveur. Du coup, c'est vraiment utile d'avoir un grand nombre de cœurs sur ce segment là.

    Pour ce qui est de la bande passante mémoire, ça dépend effectivement de la workload. Si tu es memory bound, ça va pas t'avancer beaucoup d'avoir 8 cœurs au lieu de 4. Mais enfin si tu es memory bound un processeur à 4Ghz, ça ne sera pas plus rapide qu'un processeur à 2Ghz. Idem pour les I/O. En fait, la bande passante mémoire (et les I/O), c'est complètement orthogonal au problème de montée en fréquence vs. montée en nombre de cœurs.

    Vu que le code C impose le layout mémoire, sans le changer, j'ai de gros doute sur les accélérations possibles.

    Par exemple ça, gcc sait auto-vectoriser (donc speedup effectif de 6-8 sur un processeur gérant l'AVX):

    float* a = malloc(gros tableau)
    float* b = malloc(gros tableau)
    float* c = malloc(gros tableau)
    for(int i = 0; i < n) {
     a[i] = b[i] + (c[i]*2);
    }
    

    Ça marche un peu moins bien quand tu as des opérations horizontales (ici le calcul de la somme globale n'est pas verticale) :

    float* a = malloc(gros tableau)
    float* b = malloc(gros tableau)
    float sum;
    for(int i = 0; i < n) {
     sum += b[i] + (c[i]*2);
    }
    

    De plus, il pourrait rajouter des unités de calcul

    D'ailleurs c'est ce qu'on fait avec les unités de calcul vectorielles (SIMD), on prend plein de silicium pour faire plein d'opérations en parallèle. Plutôt que d'avoir une FPU de plus, what about une FPU qui sait faire 8 opérations en même temps ? ;)