• [^] # Re: Toujours intéressant

    Posté par (site web personnel) . En réponse au journal avec Pythran, Numpy file comme le vent. Évalué à 3.

    Même si je doute de la pertinence de la comparaison, j'ai demandé à un étudiant de coder l'algo décrit ci-dessue n C++ avec de l'OpenMP. Ça donne ça :

     struct timeval start, stop;
     gettimeofday(&start,0);
     double h[10000];
     std::fill(h, h+10000, 1);
     double k[10000];
     std::fill(k, k+10000, 1);
     double l[10000];
    #pragma omp parallel for
     for(int i=0; i<10000; i++)
     l[i] = std::sqrt(h[i] * h[i] + k[i] * k[i]);
     gettimeofday(&stop,0);
     std::cout << (stop.tv_usec - start.tv_usec) << "micro sec" << std::endl;
    
    

    ce qui me parait raisonnable.

    $> make CXXFLAGS='-O3 -march=native' test
    $> ./test # j'ai fait la médiane sur 100 runs
    486micro sec
    
    

    Ce qu'on peut lire comme : pas mal, mais g++-4.7 ne vectorise pas la boucle mesurée (j'ai vérifié)et nous on utilise des infos de haut niveau pour le faire, donc… on lui colle la vectorisation dans les dents.