2012-07-03 30 views
8

Tôi đang làm việc trên một dự án cần sử dụng FFT trên cả hai card đồ họa Nvidia và AMD. Ban đầu tôi đã tìm một thư viện có thể làm việc trên cả hai (nghĩ rằng đây sẽ là cách OpenCL) nhưng tôi không có may mắn.OpenCL FFT trên cả phần cứng Nvidia và AMD?

Ai đó đã đề xuất với tôi rằng tôi sẽ phải sử dụng triển khai FFT của mỗi nhà cung cấp và viết trình bao bọc đã chọn những việc cần làm dựa trên nền tảng. Tôi thấy việc triển khai của AMD khá dễ dàng, nhưng tôi thực sự đang làm việc với một thẻ Nvidia trong thời gian chờ đợi (và đây là điều quan trọng hơn đối với ứng dụng cụ thể của tôi).

Việc triển khai Nvidia duy nhất tôi có thể tìm thấy là CUFFT. Có ai biết làm thế nào tôi thực sự có thể sử dụng thư viện CUFFT từ OpenCL? Cách duy nhất tôi có thể nghĩ đến là có một số mã CUDA cùng với mã OpenCL của tôi. Tôi đã đọc mà tôi không thể chỉ sử dụng bộ đệm OpenCL dưới dạng con trỏ CUDA (Trying to mix in OpenCL with CUDA in NVIDIA's SDK template). Thay vào đó, tôi sẽ phải sao chép các bộ đệm trở lại máy chủ sau khi chạy hạt nhân OpenCL và sau đó sao chép chúng trở lại GPU bằng cách sử dụng các thói quen chuyển bộ nhớ CUDA? Tôi không thực sự thích cách tiếp cận này vì nó dường như liên quan đến chuyển giao bộ nhớ vô nghĩa, tôi rất thích nó nếu tôi chỉ có thể sử dụng CUFFT từ OpenCL.

+0

ViennaCL hiện có triển khai FFT "thử nghiệm". Ít nhất là cho điện 2 biến đổi nó nên thực hiện hợp lý. – talonmies

Trả lời

6

NVIDIA chưa thực hiện bất kỳ công việc nào để hỗ trợ thư viện OpenCL, như FFT. Nó cũng không cung cấp nguồn cho các thư viện CUDA của nó, vì vậy không có cách nào để chạy các tài liệu đó bằng cách sử dụng OpenCL.

Thư viện FFT của AMD là đặt cược tốt nhất của bạn và sẽ chạy trên bất kỳ thiết bị tuân thủ OpenCL nào khác, bao gồm GPU của NVIDIA. ArrayFire OpenCL tận dụng thư viện FFT của AMD và tôi đã chạy nó trên các thiết bị Intel, NVIDIA và AMD trong phòng thí nghiệm của mình.

1

Ngoài đề xuất AMD của Ben, bạn cũng có thể điều tra mã ví dụ Apple FFT. Tuy nhiên, mã của chúng chỉ chạy trên các thiết bị GPU vì nó kiểm tra các loại thiết bị mà hàng đợi lệnh được cung cấp đã được tạo ra.

0

SHOC benchmark on github cũng bao gồm mã mà tôi đã thử nghiệm trên GPU nvidia 650M, CPU intel và CPU intel cho FFT. trên các cửa sổ phải mất vài phút để tạo một dự án và thiết lập đường dẫn bao gồm và liên kết của bạn nhưng nó đơn giản. chạy trên intel gpu yêu cầu thiết lập các tùy chọn dòng lệnh hoặc một sửa đổi mã nhỏ kể từ khi gpu intel là thiết bị 1 không phải thiết bị 0 là mặc định trong bộ tiêu chuẩn shoc.

tôi đã không xác minh tính chính xác của đầu ra, chỉ khi nó được biên dịch và chạy đến khi hoàn thành.

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