HeadlinesBriefing favicon HeadlinesBriefing.com

Go 1.26/1.27 SIMD API मंच स्वतंत्र

Hacker News •
×

Go 1.26 और 1.27 में सिंगल इंस्ट्रक्शन मल्टीपल डेटा (SIMD) के लिए प्रयोगात्मक APIs शामिल हैं। SIMD कई आधुनिक CPUs की एक स्थानीय विशेषता है जो सॉफ्टवेयर को डेटा के वेक्टर पर एकल निर्देश में एकरूप ऑपरेशन करने की अनुमति देती है, जैसे कि एक ही निर्देश में 8 जोड़े float64 मान जोड़ना। यह कई गणनात्मक रूप से तीव्र कार्यों, जैसे cryptography, data processing, और AI को काफी तेज कर सकता है। वास्तव में, Go की Green Tea कचरा संग्रहकर्ता तक SIMD का उपयोग मेमोरी में जीवित वस्तुओं की स्कैनिंग को तेज करने के लिए करती है। इन नए प्रयोगात्मक APIs से पहले, Go से इस कार्यक्षमता तक पहुंचने का एकमात्र तरीका Go असेंबली लिखना था।

Go 1.26 ने amd64 के लिए SIMD API पेश किया, और Go 1.27 ने arm64 (विशेष रूप से NEON) और wasm के लिए APIs जोड़े। हालांकि, SIMD API के लिए एक बुनियादी चुनौती प्लेटफॉर्म के बीच विशाल विविधता है, न केवल उन ऑपरेशनों में जो वे समर्थन करते हैं, बल्कि nawet में vectors को कैसे दर्शाया गया है। इन प्लेटफॉर्म की पूरी सीमा तक पहुंच प्रदान करने के लिए, ये APIs archsimd पैकेज में रहते हैं, जो वास्तुकला पर निर्भर करता है।

लेकिन Go 1.27 इन वास्तुकला-निर्भर APIs से परे गया है और एक प्रयोगात्मक, पूरी तरह से पोर्टेबल, प्लेटफॉर्म-और-साइज-agnostic SIMD इंटरफेस पेश किया है, जिसे C++ के Highway के आधार पर ढीला रूप से बनाया गया है। लक्ष्य है write-once near-asm-performance "simd" code को प्लेटफॉर्म्स के साथ सपोर्ट करना जिनमें SIMD समर्थन है, और उन प्लेटफॉर्म्स पर जो अभी तक (नहीं) के पास SIMD समर्थन है, एक प्रतिस्पर्धी एमुलेशन प्रदान करना। simd पैकेज वर्तमान में amd64 पर AVX, AVX2, और AVX512, arm64 पर NEON, और wasm के SIMD निर्देशों का समर्थन करता है।

SIMD वास्तुकला कई आयामों में भिन्न होती है, जिसमें वेक्टर के साइज, masking approaches, और operation primitives शामिल हैं। प्रत्येक वास्तुकला अपने स्वयं के वेक्टर तत्वों को पुनर्व्यवस्थित करने के लिए प्राइमिटिव्स प्रदान करती है, और विभिन्न crypto-संबंधित ऑपरेशंस का समर्थन करती है। यहां तक कि बुनियादी अंकगणित भी विभिन्न समर्थन हो सकता है; उदाहरण के लिए, wasm 64-बिट पूर्णांक वेक्टर के लिए तुलना की कमी है।