Đề 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

Number of participants


Price per participant

Testimonials (2)

Provisional Upcoming Courses (Require 5+ participants)

Related Categories