2015-06-03 6 views
8

https://hackage.haskell.org/package/ghc-prim-0.4.0.0/docs/GHC-Prim.html#g:28 का उपयोग कर हास्केल में सिम-आधारित वेक्टर लाइब्रेरी लिखना संभव है लेकिन क्या इसका कोई अर्थ होगा? मैं हास्केल में स्वचालित सिम अनुकूलन के लिए समर्पित कई कागजात में आया हूं, लेकिन वर्तमान स्थिति (2014) क्या है? जैसे https://hackage.haskell.org/package/vector सिमड का उपयोग करेगा या निम्न स्तर के सिमड प्राइमेटिव का उपयोग करके मैन्युअल रूप से अनुकूलित लाइब्रेरी लिखना बेहतर होगा?क्या हास्केल स्वचालित रूप से सिम अनुकूलन perfom करता है?

+1

एक शाखा है: https://github.com/haskell/vector/tree/simd लेकिन यह कुछ वर्षों में काम नहीं किया गया है। – cchalmers

+1

उन सिमड ऑपरेशंस में से कोई भी अपने स्रोत कोड में 'Data.Vector' द्वारा उपयोग नहीं किया जाता है। –

+2

संबंधित: http://stackoverflow.com/questions/1452309/generate-vector-code-from-haskell?rq=1 – Daenyth

उत्तर

6

फिलहाल इस समय ghc में कोई ऑटो वेक्टरेशन wrt सिमड नहीं है। कोई भी

वर्तमान सिमड प्राइमॉप्स मूल कोड जेन के साथ उपयोग किए जाने पर एक जीएचसी आतंक ट्रिगर करेगा, हालांकि वे -fllvm बैकएंड के साथ काम करेंगे।

उन सिमड प्राइमों में महत्वपूर्ण रूप से डेटा शफलिंग के लिए एक अच्छा डेटा मॉडल नहीं है, वर्तमान डेटा मॉडल को सिमड शफल को सही तरीके से समर्थन देने के लिए एक बहुत ही महत्वपूर्ण पुनर्विक्रय की आवश्यकता होगी।

LLVM बैकएंड मई कोड पर कुछ ऑटो vectorization अनुकूलन करते हैं, लेकिन मैं आम तौर पर कैसे कोड अनुकूलित हो जाता है में एक कोर धारणा एक बोनस के बजाय ऑटो vectorization का इलाज करना चाहते हैं, यह मान्य करने के लिए कुछ सावधान लेखा परीक्षा की आवश्यकता है!

8

पहला: मुझे नहीं पता था कि जीएचसी के पास भी सिम के लिए प्राइमप्स थे। अच्छा लगता है!

वैसे भी, कि एक तरफ, मेरी समझ यह है:

  • GHC देशी codegen बैकएंड सब अपने आप में SIMD निर्देश फेंकना कभी नहीं होगा।
  • वैकल्पिक एलएलवीएम बैकएंड सिम का उत्पादन कर सकता है, मुझे नहीं पता। लेकिन यह डिफ़ॉल्ट संकलन मार्ग नहीं है; मेरी समझ यह अभी भी प्रयोगात्मक है।
  • आपके द्वारा उल्लेख किए गए प्राइमों के अस्तित्व को देखते हुए, वेक्टर लाइब्रेरी अनुमानतः सिम कोड उत्पन्न कर सकती है। मुझे संदेह है कि यह नहीं है, लेकिन वास्तव में निश्चित रूप से जानने के लिए एकमात्र तरीका लेखक से पूछना है या सिर्फ स्रोत कोड grep ...
  • यदि आप कुछ विशिष्ट चाहते हैं, तो यह स्वयं को कोड करने के लिए बिल्कुल उचित लगता है । मुझे नहीं पता कि यह कितना काम करेगा ...
संबंधित मुद्दे