Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Đề cương khóa học
Mở đầu
- GPU programming là gì?
- Tại sao sử dụng GPU programming?
- Những thách thức và lựa chọn của GPU programming là gì?
- Các framework nào dành cho GPU programming?
- Chọn đúng framework 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ì?
- Cài đặt môi trường phát triển cho OpenCL
- Tạo một chương trình cơ bản OpenCL để thực hiện cộng vectơ
- 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 host và thiết bị, khởi động nhân và đồng bộ hóa luồng
- Sử dụng ngôn ngữ C/OpenCL để viết nhân thực thi trên thiết bị và thao tác dữ liệu
- Sử dụng các hàm tích hợp, biến và thư viện của OpenCL để thực hiện các tác vụ và hoạt động thông thường
- Sử dụng không gian bộ nhớ của OpenCL, như toàn cục, cục bộ, định chuẩn và riêng tư, để tối ưu hóa 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ác công việc-item, nhóm công việc và phạm vi ND xác định song song
- Gỡ lỗi và kiểm thử chương trình OpenCL sử dụng các công cụ như CodeXL
- Tối ưu hóa các chương trình OpenCL bằng kỹ thuật như hợp nhất, bộ đệm, dự đoán trước và đánh giá hiệu năng
CUDA
- CUDA là gì?
- Những ưu điểm và nhược điểm của CUDA là gì?
- Cài đặt môi trường phát triển cho CUDA
- Tạo một chương trình cơ bản CUDA để thực hiện cộng vectơ
- 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 host và thiết bị, khởi động nhân và đồng bộ hóa luồng
- Sử dụng ngôn ngữ C/CUDA để viết nhân thực thi trên thiết bị và thao tác dữ liệu
- Sử dụng các hàm tích hợp, biến và thư viện của CUDA để thực hiện các tác vụ và hoạt động thông thường
- Sử dụng không gian bộ nhớ của CUDA, như toàn cục, chia sẻ, định chuẩn và riêng tư, để tối ưu hóa 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 các luồng, khối và lưới xác định song song
- Gỡ lỗi và kiểm thử chương trình CUDA sử dụng công cụ như CUDA-GDB, CUDA-MEMCHECK và NVIDIA Nsight
- Tối ưu hóa các chương trình CUDA bằng kỹ thuật như hợp nhất, bộ đệm, dự đoán trước và đánh giá hiệu năng
ROCm
- ROCm là gì?
- Những ưu điểm và nhược điểm của ROCm là gì?
- Cài đặt môi trường phát triển cho ROCm
- Tạo một chương trình cơ bản ROCm để thực hiện cộng vectơ
- 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 host và thiết bị, khởi động nhân và đồng bộ hóa luồng
- Sử dụng ngôn ngữ C/CUDA để viết nhân thực thi trên thiết bị và thao tác dữ liệu
- Sử dụng các hàm tích hợp, biến và thư viện của ROCm để thực hiện các tác vụ và hoạt động thông thường
- Sử dụng không gian bộ nhớ của ROCm, như toàn cục, cục bộ, định chuẩn và riêng tư, để tối ưu hóa 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 các luồng, khối và lưới xác định song song
- Gỡ lỗi và kiểm thử chương trình ROCm sử dụng công cụ như ROCm Debugger và ROCm Profiler
- Tối ưu hóa các chương trình ROCm bằng kỹ thuật như hợp nhất, bộ đệm, dự đoán trước và đánh giá hiệu năng
So sánh
- So sánh tính năng, hiệu suất và tương thích của OpenCL, CUDA và ROCm
- Đánh giá các chương trình GPU bằng chuẩn đo lường và chỉ số
- Học những thực hành tốt nhất và tip cho lập trình GPU
- Khám phá xu hướng hiện tại và tương lai, cũng như thách thức của lập trình GPU
Tóm tắt và Bước tiếp theo
Requirements
- 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ấu trúc 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 tham gia
- Nhà phát triển muốn học cách sử dụng các khung làm việc khác nhau cho lập trình GPU và so sánh tính năng, hiệu suất và khả năng tương thích của chúng
- Nhà phát triển muốn viết mã nguồn có thể di chuyển và mở rộng để chạy trên nhiều nền tảng và thiết bị
- Nhà lập trình muốn khám phá những ưu nhược điểm và thách thức trong lập trình GPU và tối ưu hóa
28 Hours