7
Lực đẩy là một trình bao bọc tuyệt vời để bắt đầu lập trình CUDA. Tôi tự hỏi có điều gì để gói gọn NVIDIA CUFFT với lực đẩy hay chúng ta cần phải thực hiện chính mình?Thực hiện Biến đổi Fourier với Lực đẩy
Lực đẩy là một trình bao bọc tuyệt vời để bắt đầu lập trình CUDA. Tôi tự hỏi có điều gì để gói gọn NVIDIA CUFFT với lực đẩy hay chúng ta cần phải thực hiện chính mình?Thực hiện Biến đổi Fourier với Lực đẩy
Đây là câu trả lời rất muộn, chỉ để xóa câu hỏi này khỏi danh sách chưa được trả lời.
Sử dụng cuFFT với lực đẩy nên rất đơn giản và điều duy nhất cần làm là để đúc thrust::device_vector
thành con trỏ thô. Một ví dụ rất đơn giản được báo cáo bên dưới:
#include <iostream>
#include <cufft.h>
#include <stdlib.h>
#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include <thrust/generate.h>
#include <thrust/transform.h>
int main(void){
int N=4;
// --- Setting up input device vector
thrust::device_vector<cuFloatComplex> d_in(N,make_cuComplex(1.f,2.f)), d_out(N);
cufftHandle plan;
cufftPlan1d(&plan, N, CUFFT_C2C, 1);
cufftExecC2C(plan, thrust::raw_pointer_cast(d_in.data()), thrust::raw_pointer_cast(d_out.data()), CUFFT_FORWARD);
// --- Setting up output host vector
thrust::host_vector<cuFloatComplex> h_out(d_out);
for (int i=0; i<N; i++) printf("Element #%i; Real part = %f; Imaginary part: %f\n",i,h_out[i].x,h_out[i].y);
getchar();
}
Tại sao không sử dụng ArrayFire có mọi thứ trong một thư viện? –
Một bài viết khác về cách tính toán sản phẩm bên ngoài bằng cách sử dụng lực đẩy .. Tôi hy vọng điều tiếp theo sẽ là cách thực hiện thuật toán Dijkstra trong lực đẩy)) tại sao mọi người tiếp tục hỏi điều đó? –
Tôi cũng muốn sử dụng ArrayFire và thực sự tôi phải sử dụng để so sánh với các thư viện khác. Có cách tiếp cận nào không? –