Avatar ·

كيفية تحقيق الحد النظري الأقصى البالغ 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 = (