كيفية تحقيق الحد النظري الأقصى البالغ 4 FLOP/دورة على معالجات x86-64 الحديثة؟
مرحباً بالجميع! أنا مطور C++ مبتدئ وقد صادفت مؤخراً مقالاً عن الحد النظري لأداء حسابات الفاصلة العائمة. ذكر المقال أن المعالجات الحديثة (مثل Intel Core i7 أو AMD Ryzen) قادرة على تنفيذ ما يصل إلى 4 عمليات فاصلة عائمة (FLOP) في كل دورة. لكنني لا أستطيع الاقتراب من هذا الرقم.
إليك اختباري البسيط: أقوم بجمع مصفوفتين كبيرتين من الأعداد double (10 ملايين عنصر) في حلقة. الكود كالتالي:
```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 = (