Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
482,33 KB
Nội dung
m e co on en Z Vi Si nh Hướng dẫn lập trình framework CUDA LOGO SinhVienZone.com https://fb.com/sinhvienzonevn Lập trình với Nvidia CUDA LOGO m Cấu trúc phần cứng Nvidia GPU Si nh Vi en Z on e co Gồm nhiều processor tổ chức thành đơn vị multiprocessor Sử dụng nhớ chung global memory cho tất multiprocessors SinhVienZone.com https://fb.com/sinhvienzonevn e co Si nh Vi en Z on Phù hợp với toán có khả song song liệu cao Sử dụng mơ hình lập trình quản lý threads Hỗ trợ tốt tương tác process m Lập trình với Nvidia CUDA LOGO SinhVienZone.com https://fb.com/sinhvienzonevn Công cụ hỗ trợ lập trình m Lập trình với Nvidia CUDA LOGO Si nh Vi en Z on e co Sử dụng ngôn ngữ C/C++ CUDA Toolkit CUDA Library cung cấp NVIDIA với thư viện hàm thực để hỗ trợ cho việc giao tiếp với GPU Hỗ trợ nhiều tảng OS, vd: window, linux,… Người lập trình khơng cần biết nhiều cấu trúc phần cứng SinhVienZone.com https://fb.com/sinhvienzonevn e co on Si nh Vi en Z Các threads chia thành block grid cho phù hợp với kiến trúc phần cứng m Lập trình với Nvidia CUDA LOGO SinhVienZone.com https://fb.com/sinhvienzonevn en Z on e co m Lập trình với Nvidia CUDA LOGO Si nh Vi Dữ liệu cần xử lý đưa vào nhớ GPU SinhVienZone.com https://fb.com/sinhvienzonevn Vi en Z on e co m Lập trình với Nvidia CUDA LOGO Si nh Chương trình chạy CPU gọi hàm thực thi GPU Các threads xử lý công việc liệu chung SinhVienZone.com https://fb.com/sinhvienzonevn Vi en Z on e co m Lập trình với Nvidia CUDA LOGO Si nh Kết trả lại nhớ cho chương trình SinhVienZone.com https://fb.com/sinhvienzonevn Bài tốn cộng hai vector LOGO Si nh Vi en Z on e co m Giải thuật thông thường: cộng phần tử tương ứng để kết Giải thuật song song: tính tốn đồng thời phần tử vector kết SinhVienZone.com https://fb.com/sinhvienzonevn e co #define N (2048*2048) #define THREADS_PER_BLOCK 512 m Bài toán cộng hai vector int main(void) { en Z on int *a, *b, *c; // host copies of a, b, c int *d_a, *d_b, *d_c; // device copies of a, b, c int size = N * sizeof(int); Si nh Vi // Alloc space for device copies of a, b, c cudaMalloc((void **)&d_a, size); cudaMalloc((void **)&d_b, size); cudaMalloc((void **)&d_c, size); // Alloc space for host copies of a, b, c and setup input values a = (int *)malloc(size); random_ints(a, N); b = (int *)malloc(size); random_ints(b, N); c = (int *)malloc(size); SinhVienZone.com https://fb.com/sinhvienzonevn LOGO Bài toán cộng hai vector LOGO e co m // Copy inputs to device cudaMemcpy(d_a, a, size, cudaMemcpyHostToDevice); cudaMemcpy(d_b, b, size, cudaMemcpyHostToDevice); en Z on // Launch add() kernel on GPU add(d_a, d_b, d_c); Si nh Vi // Copy result back to host cudaMemcpy(c, d_c, size, cudaMemcpyDeviceToHost); // Cleanup free(a); free(b); free(c); cudaFree(d_a); cudaFree(d_b); cudaFree(d_c); return 0; } SinhVienZone.com https://fb.com/sinhvienzonevn Bài toán cộng hai vector m Hàm kernel Vi global : hàm thực thi GPU gọi CPU blockIdx: số block chiều x (blockIdy tương tự) threadIdx: số thread chiều x (threadIdy tương tự) blockDim: số thread block Si nh en Z Một số từ khóa on e co global void add(int *a, int *b, int *c) { int index = threadIdx.x + blockIdx.x * blockDim.x; c[index] = a[index] + b[index]; } SinhVienZone.com https://fb.com/sinhvienzonevn LOGO Biên dịch chạy chương trình en Z Run on $ nvcc vectorAdd.cu e co m Bài mẫu lưu vectorAdd.cu Thêm phần code in kết vào vectorAdd.cu Compile Si nh Vi $ a.out SinhVienZone.com https://fb.com/sinhvienzonevn LOGO Tài liệu tham khảo LOGO Si nh Vi en Z on e co m CUDA C Programming Guide http://docs.nvidia.com/cuda/cuda-cprogramming-guide/ SinhVienZone.com https://fb.com/sinhvienzonevn 14 Câu hỏi tập LOGO en Z on e co m Giải toán cộng vector với N số Giải tốn cộng hai ma trận Mở rộng: Si nh Vi Giải toán nhân hai ma trận SinhVienZone.com https://fb.com/sinhvienzonevn 15 m e co on en Z Si nh Vi www.themegallery.com LOGO SinhVienZone.com https://fb.com/sinhvienzonevn ... Lập trình với Nvidia CUDA LOGO SinhVienZone. com https://fb .com/ sinhvienzonevn Công cụ hỗ trợ lập trình m Lập trình với Nvidia CUDA LOGO Si nh Vi en Z on e co Sử dụng ngôn ngữ C/C++ CUDA. .. https://fb .com/ sinhvienzonevn en Z on e co m Lập trình với Nvidia CUDA LOGO Si nh Vi Dữ liệu cần xử lý đưa vào nhớ GPU SinhVienZone. com https://fb .com/ sinhvienzonevn Vi en Z on e co m Lập trình với Nvidia CUDA. .. SinhVienZone. com https://fb .com/ sinhvienzonevn e co on Si nh Vi en Z Các threads chia thành block grid cho phù hợp với kiến trúc phần cứng m Lập trình với Nvidia CUDA LOGO SinhVienZone. com https://fb .com/ sinhvienzonevn