मैं कुछ सी # कोड चला रहा हूं जो System.Numerics.Vector<T>
का उपयोग करता है लेकिन जहां तक मैं कह सकता हूं कि मुझे सिमड इंट्रिनिक्स का पूरा लाभ नहीं मिल रहा है। मैं विजुअल स्टूडियो कम्युनिटी 2015 का उपयोग अद्यतन 1 के साथ कर रहा हूं, और मेरा clrjit.dll v4.6.1063.1 है।RyuJIT सिम आंतरिक इंट्रिनिक्स का पूरा उपयोग नहीं कर रहा है
मैं Intel Core i5-3337U Processor पर चल रहा हूं, जो AVX निर्देश सेट एक्सटेंशन लागू करता है। इसलिए, मुझे लगता है, मैं 256 बिट रजिस्टर पर सबसे सिम निर्देशों को निष्पादित करने में सक्षम होना चाहिए। उदाहरण के लिए, डिस्सेप्लर में vmovups
, vmovupd
, vaddups
, आदि ... जैसे निर्देशों में होना चाहिए, और Vector<float>.Count
8, Vector<double>.Count
4 होना चाहिए, आदि ... लेकिन यह वह नहीं है जो मैं देख रहा हूं।
WriteLine($"{Vector<byte>.Count} bytes per operation");
WriteLine($"{Vector<float>.Count} floats per operation");
WriteLine($"{Vector<int>.Count} ints per operation");
WriteLine($"{Vector<double>.Count} doubles per operation");
का उत्पादन:
इसके बजाय मेरी disassembly movups
, movupd
, addups
, आदि ... और निम्न कोड की तरह निर्देश शामिल हैं
16 bytes per operation
4 floats per operation
4 ints per operation
2 doubles per operation
कहाँ मैं गलत हो रहा हूँ? सभी परियोजना सेटिंग्स आदि देखने के लिए परियोजना here उपलब्ध है।
RyuJIT गिटहब पर खुला स्रोत है ताकि आप इसका कोड जांच सकें और सीधे डेवलपर्स के साथ चर्चा कर सकें। –