Cảm ơn bạn đã gửi yêu cầu! Một thành viên trong đội ngũ của chúng tôi sẽ liên hệ với bạn ngay lập tức.
Cảm ơn bạn đã gửi đặt chỗ! Một thành viên trong đội ngũ của chúng tôi sẽ liên hệ với bạn ngay lập tức.
Đề cương khóa học
Giới thiệu
- Lập trình GPU là gì?
- Tại sao lại sử dụng lập trình GPU?
- Những thách thức và折衷方案是什么?
- Có những khung công tác nào cho lập trình GPU?
- Chọn khung công tác phù hợp cho ứng dụng của bạn
OpenCL
- OpenCL là gì?
- Những ưu điểm và nhược điểm của OpenCL là gì?
- Thiết lập môi trường phát triển cho OpenCL
- Tạo chương trình OpenCL cơ bản thực hiện phép cộng vector
- Sử dụng API của OpenCL để truy vấn thông tin thiết bị, cấp phát và giải phóng bộ nhớ thiết bị, sao chép dữ liệu giữa máy chủ và thiết bị, khởi chạy nhân (kernels) và đồng bộ hóa luồng
- Sử dụng ngôn ngữ OpenCL C để viết nhân thực thi trên thiết bị và xử lý dữ liệu
- Sử dụng các hàm, biến và thư viện tích hợp sẵn của OpenCL để thực hiện các tác vụ và thao tác thông thường
- Sử dụng các không gian bộ nhớ của OpenCL như global, local, constant và private để tối ưu hóa việc chuyển dữ liệu và truy cập bộ nhớ
- Sử dụng mô hình thực thi của OpenCL để kiểm soát công việc (work-items), nhóm công việc (work-groups) và phạm vi đa chiều (ND-ranges) định nghĩa tính song song
- Gỡ lỗi và thử nghiệm chương trình OpenCL sử dụng các công cụ như CodeXL
- Tối ưu hóa chương trình OpenCL sử dụng các kỹ thuật như coalescing, caching, prefetching và profiling
CUDA
- CUDA là gì?
- Những ưu điểm và nhược điểm của CUDA là gì?
- Thiết lập môi trường phát triển cho CUDA
- Tạo chương trình CUDA cơ bản thực hiện phép cộng vector
- Sử dụng API của CUDA để truy vấn thông tin thiết bị, cấp phát và giải phóng bộ nhớ thiết bị, sao chép dữ liệu giữa máy chủ và thiết bị, khởi chạy nhân (kernels) và đồng bộ hóa luồng
- Sử dụng ngôn ngữ CUDA C/C++ để viết nhân thực thi trên thiết bị và xử lý dữ liệu
- Sử dụng các hàm, biến và thư viện tích hợp sẵn của CUDA để thực hiện các tác vụ và thao tác thông thường
- Sử dụng các không gian bộ nhớ của CUDA như global, shared, constant và local để tối ưu hóa việc chuyển dữ liệu và truy cập bộ nhớ
- Sử dụng mô hình thực thi của CUDA để kiểm soát luồng (threads), khối (blocks) và lưới (grids) định nghĩa tính song song
- Gỡ lỗi và thử nghiệm chương trình CUDA sử dụng các công cụ như CUDA-GDB, CUDA-MEMCHECK và NVIDIA Nsight
- Tối ưu hóa chương trình CUDA sử dụng các kỹ thuật như coalescing, caching, prefetching và profiling
ROCm
- ROCm là gì?
- Những ưu điểm và nhược điểm của ROCm là gì?
- Thiết lập môi trường phát triển cho ROCm
- Tạo chương trình ROCm cơ bản thực hiện phép cộng vector
- Sử dụng API của ROCm để truy vấn thông tin thiết bị, cấp phát và giải phóng bộ nhớ thiết bị, sao chép dữ liệu giữa máy chủ và thiết bị, khởi chạy nhân (kernels) và đồng bộ hóa luồng
- Sử dụng ngôn ngữ ROCm C/C++ để viết nhân thực thi trên thiết bị và xử lý dữ liệu
- Sử dụng các hàm, biến và thư viện tích hợp sẵn của ROCm để thực hiện các tác vụ và thao tác thông thường
- Sử dụng các không gian bộ nhớ của ROCm như global, local, constant và private để tối ưu hóa việc chuyển dữ liệu và truy cập bộ nhớ
- Sử dụng mô hình thực thi của ROCm để kiểm soát luồng (threads), khối (blocks) và lưới (grids) định nghĩa tính song song
- Gỡ lỗi và thử nghiệm chương trình ROCm sử dụng các công cụ như ROCm Debugger và ROCm Profiler
- Tối ưu hóa chương trình ROCm sử dụng các kỹ thuật như coalescing, caching, prefetching và profiling
So sánh
- So sánh các tính năng, hiệu suất và khả năng tương thích của OpenCL, CUDA và ROCm
- Đánh giá chương trình GPU sử dụng các benchmark và chỉ số
- Học các thực hành tốt nhất và mẹo cho lập trình GPU
- Khám phá các xu hướng và thách thức hiện tại và tương lai của lập trình GPU
Tóm tắt và Bước tiếp theo
Yêu cầu
- Hiểu biết về ngôn ngữ C/C++ và các khái niệm lập trình song song
- Kiến thức cơ bản về kiến trúc máy tính và cấp độ bộ nhớ
- Kinh nghiệm sử dụng công cụ dòng lệnh và trình soạn thảo mã nguồn
Đối tượng học viên
- Các nhà phát triển mong muốn học cách sử dụng các khung công tác khác nhau cho lập trình GPU và so sánh các tính năng, hiệu suất và khả năng tương thích của chúng.
- Các nhà phát triển mong muốn viết mã có thể di chuyển và mở rộng chạy trên các nền tảng và thiết bị khác nhau.
- Các lập trình viên mong muốn khám phá những折衷方案和挑战 của GPU 编程和优化。
28 Giờ học