HeadlinesBriefing favicon HeadlinesBriefing.com

Go 1.26/1.27 APIs SIMD مستقلة منصة

Hacker News •
×

تشمل Go 1.26 و 1.27 APIs تجريبية لعمليات SIMD (تعليمات فردية متعددة البيانات). SIMD ميزةNative للكثير من المعالجات الحديثة، مما يسمح للبرامج بتنفيذ عمليات موحدة على متجهات البيانات بسرعة كبيرة، مثل إضافة 8 أزواج من قيم float64 في تعليمات واحدة. يمكنها تسريع العديد من المهام الحسابية المكثفة، بدءًا من التشفير إلى معالجة البيانات إلى الذكاء الاصطناعي. في الواقع، حتى جامع القمامة Green Tea الخاص بـ Go يستخدم SIMD لتسريع مسح الذاكرة للأشياء الحية. قبل هذه APIs التجريبية الجديدة، كانت الطريقة الوحيدة للوصول إلى هذه الوظيفة من Go هي كتابة Assembly Go.

أدخلت Go 1.26 API SIMD لـ amd64، وأضافت Go 1.27 APIs لـ arm64 (خاصة NEON) و wasm. ومع ذلك، فإن挑战 الأساسي لـ SIMD API هو التباين الهائل بين المنصات، وليس فقط في العمليات التي تدعمها، بل حتى في كيفية تمثيل المتجهات. لتوفير وصول كامل إلى breadth of these platforms، تعيش هذه APIs في Package archsimd التابع للمعمارية.

ولكن أضافت Go 1.27 ما وراء هذه APIs التابعة للمعمارية، وأدخلت واجهة SIMD تجريبية، بالكامل Portable، Agnostic منصة وحجم، تستند بشكل فضائي إلى Highway لـ C++. الهدف هو دعم كود "write-once near-asm-performance" SIMD في المنصات التي تدعم SIMD، وتوفير Emulation منافسة في المنصات التي لا (حتى الآن) لديها دعم SIMD. يدعم حزمة simd حالياً AVX، AVX2، و AVX512 على amd64، و NEON على arm64، وإرشادات SIMD الخاصة بـ wasm.