Como atingir o máximo teórico de 4 FLOP/ciclo em processadores x86-64 modernos?
Olá a todos! Sou um desenvolvedor C++ iniciante e recentemente me deparei com um artigo sobre o limite teórico de desempenho de computação de ponto flutuante. Dizia que processadores modernos (por exemplo, Intel Core i7 ou AMD Ryzen) são capazes de executar até 4 operações de ponto flutuante (FLOP) por ciclo. Mas não consigo me aproximar desse valor.
Aqui está meu teste simples: estou somando dois grandes arrays de números double (10 milhões de elementos) em um loop. O código é assim:
```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 =