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
Giới thiệu
- CUDA là gì?
- CUDA so với OpenCL so với SYCL
- Tổng quan về các tính năng và kiến trúc của CUDA
- Thiết lập Môi trường Phát triển
Bắt đầu
- Tạo một dự án CUDA mới bằng Visual Studio Code
- Khám phá cấu trúc và các tệp của dự án
- Biên dịch và chạy chương trình
- Hiển thị đầu ra bằng printf và fprintf
API CUDA
- Hiểu vai trò của API CUDA trong chương trình host
- Sử dụng API CUDA để truy vấn thông tin và khả năng của thiết bị
- Sử dụng API CUDA để cấp phát và giải phóng bộ nhớ thiết bị
- Sử dụng API CUDA để sao chép dữ liệu giữa host và device
- Sử dụng API CUDA để khởi chạy kernels và đồng bộ hóa threads
- Sử dụng API CUDA để xử lý lỗi và ngoại lệ
CUDA C/C++
- Hiểu vai trò của CUDA C/C++ trong chương trình device
- Sử dụng CUDA C/C++ để viết kernels chạy trên GPU và thao tác dữ liệu
- Sử dụng các kiểu dữ liệu, qualifiers, operators và expressions của CUDA C/C++
- Sử dụng các hàm tích hợp của CUDA C/C++, chẳng hạn như toán học, atomic, warp, v.v.
- Sử dụng các biến tích hợp của CUDA C/C++, chẳng hạn như threadIdx, blockIdx, blockDim, v.v.
- Sử dụng các thư viện CUDA C/C++, chẳng hạn như cuBLAS, cuFFT, cuRAND, v.v.
Mô hình Bộ nhớ CUDA
- Hiểu sự khác biệt giữa mô hình bộ nhớ host và device
- Sử dụng các không gian bộ nhớ CUDA, chẳng hạn như global, shared, constant và local
- Sử dụng các đối tượng bộ nhớ CUDA, chẳng hạn như con trỏ, mảng, textures và surfaces
- Sử dụng các chế độ truy cập bộ nhớ CUDA, chẳng hạn như read-only, write-only, read-write, v.v.
- Sử dụng mô hình nhất quán bộ nhớ CUDA và các cơ chế đồng bộ hóa
Mô hình Thực thi CUDA
- Hiểu sự khác biệt giữa mô hình thực thi host và device
- Sử dụng các threads, blocks và grids của CUDA để xác định tính song song
- Sử dụng các hàm thread CUDA, chẳng hạn như threadIdx, blockIdx, blockDim, v.v.
- Sử dụng các hàm block CUDA, chẳng hạn như __syncthreads, __threadfence_block, v.v.
- Sử dụng các hàm grid CUDA, chẳng hạn như gridDim, gridSync, cooperative groups, v.v.
Gỡ lỗi
- Hiểu các lỗi và lỗi phổ biến trong các chương trình CUDA
- Sử dụng trình gỡ lỗi Visual Studio Code để kiểm tra các biến, breakpoints, call stack, v.v.
- Sử dụng CUDA-GDB để gỡ lỗi các chương trình CUDA trên Linux
- Sử dụng CUDA-MEMCHECK để phát hiện lỗi và rò rỉ bộ nhớ
- Sử dụng NVIDIA Nsight để gỡ lỗi và phân tích các chương trình CUDA trên Windows
Tối ưu hóa
- Hiểu các yếu tố ảnh hưởng đến hiệu suất của các chương trình CUDA
- Sử dụng các kỹ thuật CUDA coalescing để cải thiện thông lượng bộ nhớ
- Sử dụng các kỹ thuật caching và prefetching của CUDA để giảm độ trễ bộ nhớ
- Sử dụng bộ nhớ shared và local của CUDA để tối ưu hóa truy cập bộ nhớ và băng thông
- Sử dụng các công cụ profiling và profiling của CUDA để đo lường và cải thiện thời gian thực thi và sử dụng tài nguyên
Tóm tắt và Các bước tiếp theo
Requirements
- Sự 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à hệ thống bộ nhớ
- Kinh nghiệm sử dụng các công cụ dòng lệnh và trình soạn thảo mã
Đối tượng
- Các nhà phát triển muốn tìm hiểu cách sử dụng CUDA để lập trình cho NVIDIA GPU và khai thác tính song song của chúng
- Các nhà phát triển muốn viết mã có hiệu suất cao và khả năng mở rộng có thể chạy trên các thiết bị CUDA khác nhau
- Các lập trình viên muốn khám phá các khía cạnh cấp thấp của lập trình GPU và tối ưu hóa hiệu suất mã của họ
28 Hours
Testimonials (2)
Very interactive with various examples, with a good progression in complexity between the start and the end of the training.
Jenny - Andheo
Course - GPU Programming with CUDA and Python
Trainers energy and humor.