Возможно ли получить GHC для получения кода SIMD для различных поколений SSE?Код генерации: Haskell?
Например. есть программа, как этот
import Data.Array.Vector
main = print . sumU $ (enumFromToFracU 1 10000000 :: UArr Double)
Я могу видеть сгенерированный код (скомпилированный для 64 битной x86) используют инструкции SSE в скалярном режиме (как C и ASM бэкэндов). Так что addd вместо addpd. Для типов программ, которые я работаю над использованием векторных инструкций, важно для производительности. Есть ли простой способ для новичков, таких как я, чтобы заставить GHC SIMDize кода использовать SSE?
Спасибо за подсказки - не может получить ghc & gcc, чтобы сотрудничать с некоторыми простыми вызовами uvector. Сейчас я буду экспериментировать, я знаю, что это так. По-видимому, по крайней мере, по крайней мере, что icc не используется в качестве C-сервера - это barfs на ghc-6.10.4/lib/ghc-6.10.4/include/Regs.h, поскольку «error: variable type» union «не подходит для регистрации». –
billt
Получение работы icc будет вполне достижением. –