tính toán song song thoại nam lập trình cuda sinhvienzone com

16 70 0
tính toán song song thoại nam lập trình cuda sinhvienzone com

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

om C ne Zo nh Vi en Si 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 om Cấu trúc phần cứng Nvidia GPU Si nh Vi en Zo ne C  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 .C Si nh Vi en Zo ne Phù hợp với tố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 om Lập trình với Nvidia CUDA LOGO SinhVienZone.com https://fb.com/sinhvienzonevn Cơng cụ hỗ trợ lập trình om Lập trình với Nvidia CUDA LOGO Si nh Vi en Zo ne C  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 .C ne Si nh Vi en Zo Các threads chia thành block grid cho phù hợp với kiến trúc phần cứng om Lập trình với Nvidia CUDA LOGO SinhVienZone.com https://fb.com/sinhvienzonevn nh Vi en Zo ne C om Lập trình với Nvidia CUDA LOGO Si Dữ liệu cần xử lý đưa vào nhớ GPU SinhVienZone.com https://fb.com/sinhvienzonevn nh Vi en Zo ne C om Lập trình với Nvidia CUDA LOGO Chương trình chạy CPU gọi hàm thực thi GPU Si Các threads xử lý công việc liệu chung SinhVienZone.com https://fb.com/sinhvienzonevn nh Vi en Zo ne C om Lập trình với Nvidia CUDA LOGO Si 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 Zo ne C om 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 Bài toán cộng hai vector ne C int main(void) { om #define N (2048*2048) #define THREADS_PER_BLOCK 512 nh Vi en Zo 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 // 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 C om // Copy inputs to device cudaMemcpy(d_a, a, size, cudaMemcpyHostToDevice); cudaMemcpy(d_b, b, size, cudaMemcpyHostToDevice); Zo ne // Launch add() kernel on GPU add(d_a, d_b, d_c); nh Vi en // Copy result back to host cudaMemcpy(c, d_c, size, cudaMemcpyDeviceToHost); Si // 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 om Hàm kernel 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 Vi en Một số từ khóa Zo ne C 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 ne C om Bài mẫu lưu vectorAdd.cu Thêm phần code in kết vào vectorAdd.cu Compile Zo $ nvcc vectorAdd.cu nh Vi en Run Si $ a.out SinhVienZone.com https://fb.com/sinhvienzonevn LOGO Tài liệu tham khảo LOGO Si nh Vi en Zo ne C om 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 Zo ne C om 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 en  Giải toán nhân hai ma trận SinhVienZone.com https://fb.com/sinhvienzonevn 15 om C ne Zo nh Vi en Si www.themegallery.com LOGO SinhVienZone.com https://fb.com/sinhvienzonevn ... om Lập trình với Nvidia CUDA LOGO SinhVienZone. com https://fb .com/ sinhvienzonevn Công cụ hỗ trợ lập trình om Lập trình với Nvidia CUDA LOGO Si nh Vi en Zo ne C  Sử dụng ngôn ngữ C/C++  CUDA. .. https://fb .com/ sinhvienzonevn nh Vi en Zo ne C om Lập trình với Nvidia CUDA LOGO Si Dữ liệu cần xử lý đưa vào nhớ GPU SinhVienZone. com https://fb .com/ sinhvienzonevn nh Vi en Zo ne C om Lập trình với... SinhVienZone. com https://fb .com/ sinhvienzonevn .C ne Si nh Vi en Zo Các threads chia thành block grid cho phù hợp với kiến trúc phần cứng om Lập trình với Nvidia CUDA LOGO SinhVienZone. com https://fb .com/ sinhvienzonevn

Ngày đăng: 30/01/2020, 22:31

Tài liệu cùng người dùng

Tài liệu liên quan