Đề cương khóa học

Giới thiệu

  • OpenCL là gì?
  • So sánh OpenCL, CUDA và SYCL
  • Tổng quan về 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 mới bằng OpenCL sử dụng Visual Studio Code
  • Khám phá cấu trúc và tệp tin của dự án
  • Biên dịch và chạy chương trình
  • Hiển thị kết quả bằng printf và fprintf

API OpenCL

  • Hiểu vai trò của API OpenCL trong chương trình host
  • Sử dụng API OpenCL để truy vấn thông tin và khả năng của thiết bị
  • Sử dụng API OpenCL để tạo ngữ cảnh, hàng lệnh, bộ đệm, nhân và sự kiện
  • Sử dụng API OpenCL để xếp hàng các lệnh như đọc, ghi, sao chép, ánh xạ, hủy ánh xạ, thực thi và chờ đợi
  • Sử dụng API OpenCL để xử lý lỗi và ngoại lệ

Ngôn ngữ C của OpenCL

  • Hiểu vai trò của ngôn ngữ C trong chương trình thiết bị
  • Sử dụng ngôn ngữ C của OpenCL để viết nhân thực thi trên thiết bị và thao tác dữ liệu
  • Sử dụng kiểu dữ liệu, định danh, toán tử và biểu thức trong ngôn ngữ C của OpenCL
  • Sử dụng các hàm tích hợp của ngôn ngữ C OpenCL 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 của ngôn ngữ C OpenCL, 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à thiết bị
  • Sử dụng không gian bộ nhớ của OpenCL, như toàn cục, cục bộ, hằng số và riêng tư
  • Sử dụng đối tượng bộ nhớ của OpenCL, như bộ đệm, hình ảnh và ống dẫn
  • Sử dụng chế độ truy cập bộ nhớ của OpenCL, như chỉ đọc, chỉ ghi, đọc/ghi v.v.
  • Sử dụng mô hình đồng nhất bộ nhớ và cơ chế đồng bộ hóa củ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à thiết bị
  • Sử dụng các phần tử công việc, nhóm công việc và ND-ranges để định nghĩa song song
  • Sử dụng các hàm của phần tử công việc như get_global_id, get_local_id, get_group_id v.v.
  • Sử dụng các hàm của nhóm công việc như barrier, work_group_reduce, work_group_scan v.v.
  • Sử dụng các hàm thiết bị như get_num_groups, get_global_size, get_local_size v.v.

Gỡ lỗi

  • Hiểu các lỗi và bug phổ biến trong chương trình OpenCL
  • Sử dụng bộ gỡ lỗi của Visual Studio Code để kiểm tra biến, điểm dừng, ngăn xếp 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 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 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 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 kiểu dữ liệu và kỹ thuật vectorization để cải thiện thông lượng tính toán
  • Sử dụng kỹ thuật unrolling vòng lặp và tiling vòng lặp để giảm thiểu chi phí điều khiển và tăng cường mức độ cục bộ
  • Sử dụng bộ nhớ cục bộ và các hàm bộ nhớ cục bộ để tối ưu hóa truy cập bộ nhớ và băng thông
  • Sử dụng định rõ hiệu năng và công cụ định rõ để đ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à Bước Tiếp theo

Requirements

  • Hiểu biết về ngôn ngữ C/C++ và 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à phân tầng bộ nhớ
  • Kinh nghiệm sử dụng công cụ dòng lệnh và bộ soạn thảo mã nguồn

Đối tượng tham gia

  • Những nhà phát triển muốn học cách sử dụng OpenCL để lập trình cho các thiết bị đa dạng và khai thác tính song song của chúng
  • Nhà phát triển muốn viết mã nguồn có thể di động và mở rộng, chạy trên nhiều nền tảng và thiết bị khác nhau
  • Người lập trình muốn khám phá các khía cạnh cấp thấp của lập trình đa dạng và tối ưu hóa hiệu suất mã nguồn của mình
 28 Hours

Number of participants


Price per participant

Provisional Upcoming Courses (Require 5+ participants)

Related Categories