Comment atteindre le maximum théorique de 4 FLOP/cycle sur les processeurs x86-64 modernes ?
Bonjour à tous ! Je suis un développeur C++ débutant et je suis récemment tombé sur un article concernant la limite théorique des performances de calcul en virgule flottante. Il y était dit que les processeurs modernes (par exemple, Intel Core i7 ou AMD Ryzen) sont capables d'effectuer jusqu'à 4 opérations en virgule flottante (FLOP) par cycle. Mais je n'arrive pas du tout à m'approcher de cette valeur.
Voici mon test simple : je somme deux grands tableaux de nombres double (10 millions d'éléments chacun) dans une boucle. Le code ressemble à ceci :
```cpp
#include
#include
#include
int main() {
const size_t N = 10'000'000;
std::vector a(N, 1.0);
std::vector b(N, 2.0);
std::vector c(N, 0.0);
auto start = std::chrono::high_resolution_clock::now();
for (size_t i = 0; i < N; ++i) {
c[i] = a[i] + b[i];
}
auto end = std::chrono::high_resolution_clock::now();
double elapsed = std::chrono::duration(end - start).count();
double flops =