2009-07-07 14 views
9

वेक्टर एक्स के डॉट उत्पाद की गणना करने के लिए मेरी सबसे अच्छी शर्त क्या है, जिसमें बड़ी संख्या में वेक्टर y_i हैं, जहां x और y_i लंबाई 10k या उससे अधिक हैं।डॉट उत्पाद - एसएसई 2 बनाम बीएलएएस

  1. वाई को मैट्रिक्स में दिखाएं और अनुकूलित s/dgemv दिनचर्या का उपयोग करें?
  2. या शायद एसएसई 2 समाधान को हैंडकोड करने का प्रयास करें (मेरे पास cpuinfo के अनुसार एसएसई 3 नहीं है)।

मैं यहां सामान्य मार्गदर्शन की तलाश में हूं, इसलिए कोई सुझाव उपयोगी होगा।
और हाँ, मुझे प्रदर्शन की आवश्यकता है। किसी भी प्रकाश के लिए धन्यवाद।

+0

कौन सा संकलक आप उपयोग कर रहे हैं? –

उत्तर

4

मुझे लगता है कि जीपीयू विशेष रूप से इस तरह के संचालन करने के लिए डिज़ाइन किए गए हैं (दूसरों के बीच)। तो आप वेक्टर ऑपरेशंस करने के लिए शायद डायरेक्टएक्स या ओपनजीएल पुस्तकालयों का उपयोग कर सकते हैं। D3DXVec2Dot यह आपको सीपीयू समय भी बचाएगा।

+2

D3DXVec2Dot GPU का उपयोग नहीं करता है। और इसके अलावा, आप केवल GPGPU प्रोग्राम से एक स्पीडअप देखते हैं जब आप डेटा के बहुत बड़े सेट बदलते हैं, या GPU पर बहुत 'महंगे' प्रोग्राम का उपयोग करते हैं। यह काम करने के लिए जीपीयू स्थापित करने की लागत और फिर परिणाम को वापस पढ़ने की लागत के कारण है। GPU से डेटा के प्रत्येक स्थानांतरण एक बहुत महंगा ऑपरेशन है। – Christopher

+0

यदि फ्लोट पर्याप्त हैं तो डायरेक्टएक्स के डॉट उत्पाद को हरा करना मुश्किल है। –

+0

वर्तमान सीपीयू इस प्रकार की प्रसंस्करण करने में काफी सक्षम हैं। –

0

एसएसई 2 समाधान को हैंडकोड करना बहुत मुश्किल नहीं है और शुद्ध सी दिनचर्या पर एक अच्छा गति लाएगा। यह एक बीएलएएस दिनचर्या पर कितना लाएगा आपके द्वारा निर्धारित किया जाना चाहिए।

सबसे बड़ा स्पीडअप डेटा को प्रारूप में संरचित करके प्राप्त किया जाता है, ताकि आप डेटा समांतरता और संरेखण का फायदा उठा सकें। अनुकूलित BLAS दिनचर्या के लिए

1

विकल्प:

  • आप इंटेल compilers का उपयोग करते हैं, तो आप अन्य compilers के लिए इंटेल MKL
  • के लिए उपयोग ATLAS आमतौर पर अच्छा प्रदर्शन संख्या
0

मैं का उपयोग प्रदान करता है हो सकता है एक गोटोब्लास यह हाइट परफॉर्मेंस कर्नेल दिनचर्या है। एमकेएल और बीएलएएस से कई गुना बेहतर है।

+0

गोटोबलास के साथ लाइसेंसिंग समस्याएं हैं। –

0

निम्नलिखित एसएसई का उपयोग कर बीएलएएस स्तर 1 (वेक्टर ऑपरेशंस) दिनचर्या प्रदान करता है।

http://www.applied-mathematics.net/miniSSEL1BLAS/miniSSEL1BLAS.html

आप एक NVIDIA ग्राफिक्स कार्ड है, तो आप cuBLAS जो ग्राफिक्स कार्ड पर आपरेशन प्रदर्शन करेंगे प्राप्त कर सकते हैं।

http://developer.nvidia.com/cublas

अति (एएमडी) ग्राफिक्स कार्ड

http://developer.amd.com/libraries/appmathlibs/pages/default.aspx

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