Có các quy trình FFT được phát triển cả trên phần cứng và GPU x86 (trước CUDA, 7800 GTX Hardware) tôi tìm thấy từ kết quả của riêng mình với kích thước nhỏ hơn FFT (dưới 2^13) mà CPU nhanh hơn. Trên các kích thước này, GPU nhanh hơn. Ví dụ, một FFT 2^16 có kích thước nhanh hơn 2-4x trên GPU so với biến đổi tương đương trên CPU. Xem bảng thời gian dưới đây (Tất cả thời gian bằng giây, so sánh Pentium 4 3GHz với 7800GTX. Công việc này được hoàn thành vào năm 2005 vì vậy phần cứng cũ và như tôi đã nói, không phải CUDA. Các thư viện mới có thể hiển thị các cải tiến lớn hơn)
N FFTw (s) GPUFFT (s) GPUFFT MFLOPS GPUFFT Speedup
8 0 0.00006 3.352705 0.006881
16 0.000001 0.000065 7.882117 0.010217
32 0.000001 0.000075 17.10887 0.014695
64 0.000002 0.000085 36.080118 0.026744
128 0.000004 0.000093 76.724324 0.040122
256 0.000007 0.000107 153.739856 0.066754
512 0.000015 0.000115 320.200892 0.134614
1024 0.000034 0.000125 657.735381 0.270512
2048 0.000076 0.000156 1155.151507 0.484331
4096 0.000173 0.000215 1834.212989 0.804558
8192 0.000483 0.00032 2664.042421 1.510011
16384 0.001363 0.000605 3035.4551 2.255411
32768 0.003168 0.00114 3450.455808 2.780041
65536 0.008694 0.002464 3404.628083 3.528726
131072 0.015363 0.005027 3545.850483 3.05604
262144 0.033223 0.012513 3016.885246 2.655183
524288 0.072918 0.025879 3079.443664 2.817667
1048576 0.173043 0.076537 2192.056517 2.260904
2097152 0.331553 0.157427 2238.01491 2.106081
4194304 0.801544 0.430518 1715.573229 1.861814
Theo đề xuất của các áp phích khác, việc chuyển dữ liệu đến/từ GPU là lần truy cập bạn thực hiện. FFT nhỏ hơn có thể được thực hiện trên CPU, một số cài đặt/kích thước hoàn toàn trong bộ nhớ cache. Điều này làm cho CPU trở thành lựa chọn tốt nhất cho các FFT nhỏ (dưới ~ 1024 điểm). Mặt khác, nếu bạn cần thực hiện nhiều đợt công việc lớn trên dữ liệu với các chuyển động tối thiểu đến/từ GPU thì GPU sẽ đánh bại CPU.
Tôi khuyên bạn nên sử dụng FFTW nếu bạn muốn triển khai FFT nhanh hoặc Thư viện toán học của Intel nếu bạn muốn triển khai nhanh hơn (thương mại). Đối với FFTW, việc thực hiện các kế hoạch sử dụng cờ FFTW_Measure sẽ đo lường và kiểm tra thường trình FFT nhanh nhất có thể cho phần cứng cụ thể của bạn.Tôi đi vào chi tiết về điều này trong this question.
Để triển khai GPU, bạn không thể làm tốt hơn so với mạng do NVidia CUDA cung cấp. Hiệu suất của GPU đã tăng đáng kể kể từ khi tôi đã thử nghiệm trên một 7800GTX vì vậy tôi sẽ đề nghị cho SDK của họ một đi cho yêu cầu cụ thể của bạn.
Nguồn
2011-12-31 11:03:36
tôi không nghĩ những bảng này bị giới hạn nữa; chứ không phải [ví dụ: nếu chúng có một Sandybridge i7] (http://www.silentpcreview.com/zotac-h67itx) – sehe
@sehe Tôi biết rằng hỗ trợ Mini-ITX (và thậm chí PC104) có các mô hình hỗ trợ CPU gần đây , câu hỏi của tôi là liệu on * G * PU của họ có đáng để làm phiền hay không. Mini-ITX thường cung cấp một ổ cắm PCIe, nhưng kích thước sản phẩm của chúng tôi hạn chế mô-đun xử lý thành một bảng có kích thước Mini-ITX và sẽ không cho phép chúng tôi thêm một cạc đồ họa gắn thêm từ bo mạch chủ. –
FFT của bạn lớn đến mức nào? Thuật toán của bạn có cho phép bạn thực hiện chúng trong "chế độ hàng loạt" mà bạn tính toán rất nhiều trong số chúng (tất cả cùng một kích thước) cùng một lúc không? –