Tôi đang tìm thư viện toán SIMD (tốt nhất là nguồn mở) cho SSE và AVX. Tôi có nghĩa là ví dụ nếu tôi có một đăng ký AVX v với 8 giá trị float tôi muốn tội lỗi (v) để trả lại tội lỗi của tất cả tám giá trị cùng một lúc.Thư viện toán học SIMD cho SSE và AVX
AMD có thư viện propreitery, LibM http://developer.amd.com/tools/cpu-development/libm/ có một số chức năng toán SIMD nhưng LibM chỉ sử dụng AVX nếu phát hiện FMA4 mà CPU Intel không có. Ngoài ra tôi không chắc chắn nó hoàn toàn sử dụng AVX như tất cả các tên hàm kết thúc bằng s4 (d2) và không phải là s8 (d4). Nó cho hiệu suất tốt hơn so với các thư viện toán học chuẩn trên CPU Intel nhưng nó không tốt hơn nhiều.
Intel có SVML như một phần của trình biên dịch C++ nhưng bộ biên dịch rất đắt trên Windows. Ngoài ra, Intel làm tê liệt thư viện trên các CPU không phải của Intel.
Tôi đã tìm thấy thư viện AVX sau, http://software-lisc.fbk.eu/avx_mathfun/, hỗ trợ một vài hàm toán học (exp, log, sin, cos và sincos). Nó cho kết quả rất nhanh với tôi, nhanh hơn SVML, nhưng tôi đã không kiểm tra độ chính xác. Nó chỉ hoạt động trên một điểm nổi và không hoạt động trong Visual Studio (mặc dù điều đó có thể dễ dàng sửa). Nó dựa trên một thư viện SSE khác.
Có ai có bất kỳ đề xuất nào khác không?
Edit: Tôi tìm thấy một thread SO rằng có nhiều câu trả lời về vấn đề này Vectorized Trig functions in C?
Mặc dù nó là một giải pháp độc quyền, Kernel Thư viện Toán của Intel là một lựa chọn khá toàn diện. Tuy nhiên, nó chỉ hoạt động tốt nhất trên các CPU Intel. Tôi tin rằng nó đã được biết đến trong quá khứ để chuyển hướng một đường dẫn mã không được tối ưu hóa khi chạy trên một bộ xử lý không phải của Intel. Tôi không chắc chắn đó là trường hợp trên các phiên bản hiện đại, mặc dù. –
Ở đây bạn có thể nhận được logarit: https://stackoverflow.com/a/45898937/1915854 –
[Thư viện lớp Vector của Agner] (http://agner.org/optimize/#vectorclass) bị GPL. Đó là nhiều hơn một wrapper cho intrinsics của Intel để làm cho vectorization thủ công thuận tiện hơn, nhưng có một số chức năng toán học-thư viện như exp và log. –