2015-06-03 19 views
8

Có thể viết thư viện vector dựa trên SIMD trong Haskell bằng cách sử dụng https://hackage.haskell.org/package/ghc-prim-0.4.0.0/docs/GHC-Prim.html#g:28 nhưng nó có ý nghĩa gì không? Tôi đã đi qua một số giấy tờ dành cho tự động tối ưu hóa SIMD trong Haskell, nhưng những gì tình trạng hiện tại (2014)? Ví dụ. sẽ https://hackage.haskell.org/package/vector sử dụng SIMD hay tốt hơn là viết thư viện được tối ưu hóa theo cách thủ công bằng cách sử dụng nguyên thủy SIMD cấp thấp?Tự động tối ưu hóa Haskell perfom SIMD có tự động không?

+1

Có một chi nhánh: https://github.com/haskell/vector/tree/simd nhưng chưa được thực hiện trong một vài năm. – cchalmers

+1

Không có hoạt động SIMD nào xuất hiện được sử dụng bởi 'Data.Vector' trong mã nguồn của nó. –

+2

Liên quan: http://stackoverflow.com/questions/1452309/generate-vector-code-from-haskell?rq=1 – Daenyth

Trả lời

6

hoàn toàn không có vector vectơ tự động hóa SIMD trong ghc tại thời điểm này. không có

các nguyên mẫu simd hiện tại sẽ kích hoạt hoảng loạn GHC khi được sử dụng với gen mã gốc, mặc dù chúng sẽ hoạt động với chương trình phụ trợ -fllvm.

những nguyên mẫu simd này thiếu một mô hình dữ liệu tốt cho việc xáo trộn dữ liệu, mô hình dữ liệu hiện tại sẽ yêu cầu phải làm lại khá đáng kể để hỗ trợ các bộ đệm simd đúng cách.

phụ trợ llvm MAY thực hiện tối ưu hóa véc tơ hóa tự động nhất định trên mã, nhưng tôi thường coi vector tự động là tiền thưởng thay vì giả định cốt lõi về cách mã được tối ưu hóa, yêu cầu kiểm tra cẩn thận để xác thực!

8

Đầu tiên: Tôi không biết GHC thậm chí còn có tiền tố cho SIMD. Nice tìm!

Dù sao, đó sang một bên, hiểu biết của tôi là thế này:

  • Các GHC codegen mẹ đẻ backend sẽ không bao giờ phát ra chỉ lệnh SIMD tất cả của chính nó.
  • Tùy chọn LLVM backend có thể sản xuất SIMD, tôi không biết. Nhưng đó không phải là con đường biên dịch mặc định; sự hiểu biết của tôi là nó vẫn còn khá thử nghiệm.
  • Với sự tồn tại của các đoạn giới thiệu bạn đề cập, thư viện Vector có thể hình dung được việc tạo mã SIMD. Tôi nghi ngờ nó không phải là, nhưng cách duy nhất để thực sự biết chắc chắn là yêu cầu tác giả (s) hoặc chỉ grep mã nguồn ...
  • Nếu bạn muốn một cái gì đó cụ thể, nó có vẻ hoàn toàn hợp lý để mã nó cho mình . Tôi không biết nó sẽ hoạt động bao nhiêu ...
Các vấn đề liên quan