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
- OpenCL là gì?
- OpenCL so với CUDA và SYCL
- Tổng quan về các tính năng và kiến trúc của OpenCL
- Thiết lập Môi trường Phát triển
Bắt đầu
- Tạo một dự án OpenCL 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
OpenCL API
- Hiểu vai trò của OpenCL API trong chương trình host
- Sử dụng OpenCL API để truy vấn thông tin và khả năng của thiết bị
- Sử dụng OpenCL API để tạo ngữ cảnh, hàng đợi lệnh, bộ đệm, kernel và sự kiện
- Sử dụng OpenCL API để xếp hàng các lệnh, chẳng hạn như đọc, ghi, sao chép, ánh xạ, bỏ ánh xạ, thực thi và chờ
- Sử dụng OpenCL API để xử lý lỗi và ngoại lệ
OpenCL C
- Hiểu vai trò của OpenCL C trong chương trình thiết bị
- Sử dụng OpenCL C để viết kernel chạy trên thiết bị và thao tác dữ liệu
- Sử dụng các kiểu dữ liệu, định danh, toán tử và biểu thức OpenCL C
- Sử dụng các hàm tích hợp OpenCL C, chẳng hạn như toán học, hình học, quan hệ, v.v.
- Sử dụng các phần mở rộng và thư viện OpenCL C, chẳng hạn như atomic, image, cl_khr_fp16, v.v.
Mô hình Bộ nhớ OpenCL
- 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ớ OpenCL, chẳng hạn như global, local, constant và private
- Sử dụng các đối tượng bộ nhớ OpenCL, chẳng hạn như bộ đệm, hình ảnh và pipe
- Sử dụng các chế độ truy cập bộ nhớ OpenCL, chẳng hạn như chỉ đọc, chỉ ghi, đọc-ghi, v.v.
- Sử dụng mô hình nhất quán bộ nhớ và cơ chế đồng bộ hóa OpenCL
Mô hình Thực thi OpenCL
- Hiểu sự khác biệt giữa mô hình thực thi host và device
- Sử dụng các work-item, work-group và ND-range của OpenCL để xác định tính song song
- Sử dụng các hàm work-item, chẳng hạn như get_global_id, get_local_id, get_group_id, v.v.
- Sử dụng các hàm work-group, chẳng hạn như barrier, work_group_reduce, work_group_scan, v.v.
- Sử dụng các hàm thiết bị, chẳng hạn như get_num_groups, get_global_size, get_local_size, v.v.
Gỡ lỗi
- Hiểu các lỗi và lỗi phổ biến trong các chương trình OpenCL
- Sử dụng trình gỡ lỗi Visual Studio Code để kiểm tra các biến, điểm dừng, ngăn xếp cuộc gọi, v.v.
- Sử dụng CodeXL để gỡ lỗi và phân tích các chương trình OpenCL trên các thiết bị AMD
- Sử dụng Intel VTune để gỡ lỗi và phân tích các chương trình OpenCL trên các thiết bị Intel
- Sử dụng NVIDIA Nsight để gỡ lỗi và phân tích các chương trình OpenCL trên các thiết bị NVIDIA
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 OpenCL
- Sử dụng các kiểu dữ liệu vector và kỹ thuật vector hóa OpenCL để cải thiện thông lượng số học
- Sử dụng kỹ thuật unrolling vòng lặp và tiling vòng lặp OpenCL để giảm chi phí điều khiển và tăng tính cục bộ
- Sử dụng bộ nhớ cục bộ và các hàm bộ nhớ cục bộ OpenCL để tối ưu hóa truy cập bộ nhớ và băng thông
- Sử dụng profiling OpenCL và các công cụ profiling để đ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 OpenCL để lập trình cho các thiết bị dị nhất và khai thác tính song song của chúng
- Các nhà phát triển muốn viết mã di động và có khả năng mở rộng, có thể 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 muốn khám phá các khía cạnh cấp thấp của lập trình dị nhất 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.