2010-02-10 45 views
8

Như tiêu đề, tôi đang tìm thư viện vector/ma trận trong C được tối ưu hóa cho các bộ xử lý iPhone/iPod. Hoặc nói chung là nhanh.Thư viện toán học vector/ma trận nhanh nhất trong C cho trò chơi iPhone là gì?

--- (chỉnh sửa) ---

Tôi xin lỗi vì câu hỏi không rõ ràng. Tôi đang tìm kiếm lib nhanh cho các trò chơi thương mại cho iPhone/iPod. Vì vậy, không thể sử dụng lib GPL.

Tuy nhiên, tôi sẽ ngừng tìm kiếm lib nhanh nhất, điều đó có thể vô nghĩa.

+0

Bất kỳ thư viện ma trận phổ biến nào cũng phải nhanh - thuật toán là các phép toán cơ bản. –

+0

bạn sẽ tìm thấy khi bạn hoàn tất, ngay bây giờ bạn vẫn đang tìm kiếm ;-) – fortran

+0

Ồ, những gì bạn nói có ý nghĩa rất nhiều. Cảm ơn. – Eonil

Trả lời

5

Hiện tại (2010.06.26) Tăng tốc khuôn khổ bao gồm trên iOS4, vì vậy các chức năng vDSP/BLAS có sẵn.

Sử dụng tính năng phần cứng (CPU hoặc SIMD) để tăng tốc hoạt động điểm nổi, vì vậy tốc độ vượt trội (2 ~ 4.5x trung bình, 8x tối đa) và ít tiêu thụ năng lượng (tối đa 0,25x) có thể đạt được bằng cách sử dụng tính năng này.

Cảm ơn mọi người vì câu trả lời khác.

+0

+1 Tôi đã sử dụng các hàm cblas thành công và một khi bạn nhận được tài liệu của họ, chúng khá hữu ích. –

+0

+1 Điều này rất hữu ích cho dự án hiện tại của tôi mà tôi chỉ phát triển nó cho iOS4.0 + ... vui vì bạn đã đề cập đến điều này. – Rab

2

Phụ thuộc rất nhiều vào nhu cầu của bạn, nếu bạn chỉ sử dụng toán học dấu phẩy động, bạn có thể thấy rằng trình biên dịch sẽ sử dụng điểm nổi phần mềm, sẽ rất chậm. Vì vậy, bước một là đảm bảo rằng bạn sử dụng phần cứng dấu chấm động phần cứng có sẵn trong bộ vi xử lý iPhone.

Bước hai đang sử dụng một thư viện đã được thiết lập tốt, có một số, Hassan đã cung cấp cho bạn một liên kết tới GNU GSL rất hay.

Bước tiếp theo sẽ tận dụng lợi thế của SIMD VFP như khả năng. VFP không thực sự là SIMD, nhưng không cung cấp SIMD như hướng dẫn mà các hoạt động riêng lẻ được thực hiện một cách triệt để. Lợi thế của việc vẫn sử dụng các hướng dẫn này là văn bản chương trình của bạn sẽ ngắn hơn, cho phép sử dụng bộ nhớ cache và ít vấn đề hơn khi thiếu các dự đoán nhánh và vv. Tuy nhiên, tôi không biết về bất kỳ thư viện vector nào lợi dụng VFP, bạn phải thực hiện tìm kiếm tốt và có thể viết thư của riêng mình nếu nó không có sẵn.

Cuối cùng, nếu bạn vẫn cần tốc độ cao hơn, bạn sẽ muốn sử dụng đơn vị SIMD thực sự trong bộ xử lý iPhone. Tuy nhiên, đơn vị này không phải là một đơn vị dấu chấm động, mà là một đơn vị số nguyên. Vì vậy, giả sử bạn muốn số thực, bạn sẽ bị mắc kẹt với điểm cố định, nó phụ thuộc vào ứng dụng của bạn cho dù bạn có thể lấy đi với điều đó. Một lần nữa tôi không biết về bất kỳ thư viện vector nào cung cấp số học điểm cố định bằng cách sử dụng đơn vị SIMD được cung cấp bởi bộ vi xử lý iPhone, vì vậy một lần nữa bạn cần tìm kiếm kỹ lưỡng và có thể bị bẩn tay.

+1

Cảm ơn. Yêu cầu của tôi không quá quan trọng, việc triển khai VFP/SIMD cho công việc này quá nặng. Tôi chỉ muốn GCC tự động-vectorization giúp tôi. – Eonil

Các vấn đề liên quan