2009-09-07 18 views
38

के साथ शुरू करना मैं SSE का उपयोग करने के बारे में और जानना चाहता हूं।एसएसई

Intel® 64 and IA-32 Architectures Software Developer's Manuals स्पष्ट पढ़ने के अलावा सीखने के लिए क्या तरीके हैं?

मुख्य रूप से मुझे GCC X86 Built-in Functions के साथ काम करने में दिलचस्पी है।

उत्तर

38

सबसे पहले, मैं अंतर्निहित कार्यों का उपयोग करने की अनुशंसा नहीं करता - वे पोर्टेबल नहीं हैं (उसी आर्क के कंपाइलर्स में)।

intrinsics, जीसीसी does a wonderful job एसएसई इंट्रिनिक्स को और भी अनुकूलित कोड में अनुकूलित करने का उपयोग करें। आप असेंबली में हमेशा एक झलक देख सकते हैं और एसएसई का पूर्ण क्षमता में इसका उपयोग कैसे करें।

intrinsics आसान है - बस सामान्य कार्य कॉल की तरह:

#include <xmmintrin.h> 

__m128 vector1 = _mm_set1_ps(4, 3, 2, 1); // Little endian, stored in 'reverse' 
__m128 vector2 = _mm_set1_ps(7, 8, 9, 0); 

// Addition 
__m128 result = _mm_add_ps(vector1, vector2); // result = vector1 + vector 2 

// A more advanced function, called shuffle 
vector1 = _mm_shuf_ps(vector1, vector1, _MM_SHUFFLE(0,1,2,3)); 
// vector1 is now (1, 2, 3, 4) (above shuffle reversed it) 

बेशक वहाँ जिस तरह से अधिक विकल्प हैं, SSE अपेक्षाकृत आसान जानने के लिए वास्तव में शक्तिशाली है और मेरी राय में।

+0

क्या आप int32 तत्वों के दो सरणी के डॉट उत्पाद को गर्म करने के लिए गर्म जानते हैं? – psihodelia

+6

इसके लिए एक प्रश्न बनाएं, और मैं मदद करने के लिए सुनिश्चित करूँगा :) – LiraNuna

32

जब से तुम संसाधनों के लिए पूछा:

A practical guide to using SSE with C++: कैसे SSE प्रभावी ढंग से उपयोग करने के लिए, उदाहरण के साथ पर अच्छा वैचारिक सिंहावलोकन।

MSDN Listing of Compiler Intrinsics: आपकी सभी आंतरिक आवश्यकताओं के लिए व्यापक संदर्भ। यह एमएसडीएन है, लेकिन यहां सूचीबद्ध सभी इंट्रिनिक्स जीसीसी और आईसीसी द्वारा भी समर्थित हैं।

Christopher Wright's SSE Page: एसएसई ऑपकोड के अर्थों पर त्वरित संदर्भ। मुझे लगता है कि इंटेल मैनुअल एक ही कार्य कर सकते हैं, लेकिन यह तेज़ है।

इंट्रिनिक्स में अपना अधिकांश कोड लिखना शायद सबसे अच्छा है, लेकिन यह सुनिश्चित करने के लिए कि यह कुशल कोड का उत्पादन कर रहा है, अपने कंपाइलर के आउटपुट के objdump को जांचें। सिम कोड कोड अभी भी काफी नई तकनीक है और यह बहुत संभव है कि कुछ मामलों में संकलक इसे गलत हो सकता है।

4

मुझे डॉ। एग्नेर फोग का शोध & अनुकूलन मार्गदर्शिका बहुत मूल्यवान लगता है! उनके पास कुछ पुस्तकालय & परीक्षण उपकरण भी हैं जिन्हें मैंने अभी तक नहीं आजमाया है। http://www.agner.org/optimize/

संबंधित मुद्दे