2009-01-20 44 views
48

Tôi đang tìm thư viện FFT có giấy phép cho phép tôi đưa nó vào phần mềm thương mại C++. Miễn phí sẽ được tốt đẹp. (Intel IPPS là 199 $ cho mỗi đầu, mà là một chút tốn kém cho số lượng developper sẽ biên dịch nó.)c/C++ Thư viện FFT không có giấy phép GPL

Bất kỳ ai có kinh nghiệm tốt với thư viện FFT như vậy?

tôi tìm thấy trang này, mà liệt kê rất nhiều thư viện: http://www.fftw.org/benchfft/ffts.html

FFTW có giấy phép GPL, vì vậy nó sẽ không hoạt động. Bất kỳ lựa chọn tốt nào?

+0

Tôi quên đề cập đến điều này là dành cho nền tảng Windows. – decasteljau

+0

Intel IPPS hiện đã miễn phí. –

Trả lời

20

KissFFT

Một số tiêu chuẩn so với fftw:

http://www.fftw.org/speed/Pentium4-2.4GHz-gcc/

EDIT: Có EigenFFT - C++ - lối vào cho KissFFT như một phần không thể không được hỗ trợ của Eigen.

+1

Đối với những gì nó có giá trị tôi benchmarked KissFFT cho một kích thước 180 (thực sự, độ chính xác duy nhất) trên một E5-2650-v3 và thấy nó là khoảng 35% chậm hơn so với IntelMKL. Dựa trên các tiêu chuẩn bạn liên kết với tôi đã có thể mong đợi có một sự khác biệt lớn hơn. Cám ơn vì sự gợi ý. – foges

+1

Intel IPPS hiện đã miễn phí. –

3

Bạn cũng cần nguồn không? Liệu nó có phải là miễn phí, như trong bia?

Nếu không, thì thư viện Intel IPP ít nhất sẽ mang lại cho bạn hiệu suất tuyệt vời, giả sử rằng nền tảng của bạn nằm trong số những nền tảng được hỗ trợ.


Cập nhật 2018: có vẻ như thư viện chứa mã FFT được sử dụng miễn phí.

Tôi có thể nhận Thư viện hiệu năng Intel® miễn phí không?

Vâng, Performance Libraries Intel® sau đây có sẵn cho tất cả mọi người không có lệ phí, tiền bản quyền, hoặc hạn chế đối với công ty hoặc kích cỡ dự án:

  • Intel® Math Kernel Library - thư viện toán nhanh
  • Intel ® Thư viện tăng tốc phân tích dữ liệu - thư viện phân tích dữ liệu
  • Nguyên tắc hiệu suất tích hợp Intel® - hình ảnh, tín hiệu và xử lý dữ liệu
  • Khối xây dựng luồng Intel® - Thư viện luồng C++
  • Intel® Bộ KH & ĐT Thư viện - thư viện MPI

và có vẻ như mã FFT là trong Intel® Math Kernel Library.

+0

Nguồn là không cần thiết nếu đó là một đáng tin cậy. (giống như của Intel) Nguồn bắt buộc nếu từ chương trình một người đàn ông. miễn phí sẽ tốt hơn :) – decasteljau

2

Theo tài liệu FFTW, giấy phép không phải GPL cũng có sẵn (có lẽ là $). Bạn phải liên hệ với họ để biết chi tiết.

+0

thú vị, cảm ơn – decasteljau

+9

bằng cách này, tôi liên lạc với họ hai lần và không có câu trả lời. Vì vậy, lựa chọn đó không khả thi. KissFFT là người chiến thắng. – decasteljau

0

Bạn có thể xem Numerical Recipes. Nó không phải là miễn phí, nhưng ít tốn kém hơn so với IPP :). Tôi đã sử dụng NR, nhưng không sử dụng FFT.

+0

Nếu anh ấy muốn sử dụng nó trong phần mềm thương mại, tôi không thấy cách sử dụng Bí quyết số là một ý tưởng hay. – dfrankow

+0

Bạn có nghĩa là giấy phép? Tôi cho rằng giấy phép bây giờ là nghiêm ngặt hơn khi tôi sử dụng nó. Nhưng khi tôi hiểu nó, bạn vẫn có thể sử dụng nó trong phần mềm thương mại nếu bạn được phép. –

4

Laurent de Soras 'FFTReal rất nhanh, và LGPL'd, có nghĩa là bạn có thể sử dụng nó trong phần mềm thương mại mà không cần phải trả tiền cấp phép cũng như làm cho phần mềm nguồn mở của bạn. Bạn chỉ cần ghi nhận tác giả nếu bạn sử dụng nó trong phần mềm của bạn (và anh ấy xứng đáng với nó!).

+4

... và bạn cũng cần tổ chức mọi thứ để người dùng cuối có thể thay thế phiên bản đã được giao bằng phiên bản lựa chọn của họ (xem phần 4). Điều này có nghĩa là liên kết động, tệp đối tượng vận chuyển cho chương trình, v.v. Không phải lúc nào cũng thực tế hoặc có thể. (Không nói gì về bất kỳ vấn đề hỗ trợ hoặc pháp lý nào.) IANAL. –

2

Tôi đã tìm thấy FFTW thương mại không hợp lý. (Họ muốn có một khoản phí một lần khoảng 8.000 đô la tôi tin vào giấy phép thương mại.) Bạn có thể thấy rằng thư viện Intel không đắt như bạn nghĩ. Chúng tôi đang sử dụng Intel MKL (Math Kernel Library) và vì nó được thiết kế để phân phối lại (với liên kết tĩnh hoặc động) như là một phần của thư viện thương mại, bạn chỉ có thể nhận được giấy phép cho một vài nhà phát triển nó. Để làm như vậy, bất kỳ nhà phát triển nào tạo ra phải được đặt trong một thư viện riêng (theo giấy phép, các nhà phát triển khác không thể trực tiếp sử dụng thư viện Intel, bao gồm các tiêu đề). Điều quan trọng nhất là các bộ phận tiếp xúc của thư viện đó phải thêm chức năng quan trọng ngoài thư viện Intel (tức là tạo một trình bao bọc FFT và sử dụng một trình bao như thư viện mà những người khác có thể truy cập sẽ vi phạm thỏa thuận cấp phép). (Giải thích giấy phép theo nghĩa là các nhà phát triển phi toán học là "khách hàng" của các nhà phát triển toán học.)

Hãy đọc kỹ thỏa thuận cấp phép và quyết định xem bạn có thể áp dụng phương pháp này vào thư viện bạn chọn hay không (IPPS) .

3

Như Nik Reiman đã nói, bạn có thể sử dụng FFTReal và để trả lời phản đối của Brone, giấy phép đã được thay đổi thành WTFPL, cách này linh hoạt hơn.

0

Đọc lại trên IPP của Intel, bạn chỉ cần một giấy phép nhà phát triển @ $ 199, để cài đặt trên một máy. Bất kỳ nhà phát triển nào khác vẫn có thể biên dịch với nó, họ sẽ không cần cài đặt toàn bộ IPP của Intel, chỉ cần các tiêu đề và lib thích hợp.

19

Kiểm tra FFTS. Nó có một giấy phép BSD cho phép, và nó nhanh hơn FFTW, IPP, KissFFT, Apple vDSP vv trên ARM và x86.

http://github.com/anthonix/ffts

+0

Nó KHÔNG hỗ trợ x86 chỉ với 32 bit, nhưng chỉ x86-64. –

+0

Hãy lưu ý rằng repo gốc không còn được duy trì và dựa trên lắp ráp armv7 (thay vì hướng dẫn arm64 được sử dụng bởi iPhone gần đây). Mặc dù iOS hiện cho phép các ứng dụng chạy ở chế độ 32 bit, [có vẻ như nó sẽ sớm xóa hỗ trợ cho] (https://arstechnica.com/apple/2017/01/future-ios-release-will-soon-end -support-for-unmaintained-32-bit-apps /), có nghĩa là lắp ráp armv7 sẽ không sử dụng được. [Có một ngã ba] (https://github.com/linkotec/ffts) mà báo cáo hỗ trợ tất cả các kiến ​​trúc bằng cách làm đi với hội đồng hoàn toàn, nhưng tôi nghi ngờ rằng đi kèm với chi phí của tốc độ. – BinaryNate

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