Lập trình CUDA (1) - C/C++/Tính toán song song trên GPU - CUDA kernel
✅ Trong toàn bộ series từ (1) đến (6), phần (1) Thực hành tạo CUDA kernel
✅ Giải thích từng bước lập trình NVIDIA GPU + CUDA từ cơ bản.
✅ Xử lý cực nhanh các tác vụ như mảng/ma trận/xử lý hình ảnh/xử lý thống kê/sắp xếp bằng tính toán song song với ngôn ngữ C++/C.
Việc cài đặt phần mềm đã được giải thích rõ ràng và cung cấp mã nguồn giúp bạn dễ dàng thực hành. Cảm ơn bài giảng rất hay và tôi rất mong chờ bài giảng tiếp theo.
5.0
georover
96% đã tham gia
khái niệm bài giảng
Câu chuyện bạn giải thích từng bước ngay từ đầu thật sống động trong tâm trí tôi.
Cảm ơn
5.0
장민우
60% đã tham gia
Thật tuyệt khi cuda rất dễ hiểu và nó bao gồm các phần liên quan đến hệ điều hành Linux.
Thật tốt khi hiểu chi tiết về phần cứng máy tính và hoạt động của mã.
Bạn sẽ nhận được điều này sau khi học.
Toàn bộ series - Tính toán song hành quy mô lớn của CUDA sử dụng GPU
Bài giảng này là - Phần (1) - Khái niệm CUDA kernel và lập trình thực tế
Cập nhật - Tháng 7 năm 2023, "Remastering"🍀(Một số âm thanh/video)
Cung cấp ✅phiếu giảm giá theo gói✳️ trong lộ trình "Lập trình CUDA"
Tốc độ là linh hồn của chương trình! Hãy làm cho nó nhanh hơn bằng kỹ thuật xử lý song song quy mô lớn 🚀
Nghe nói tính toán song hành quy mô lớn rất quan trọng 🧐
Tính toán song song quy mô lớn dựa trên GPU/card đồ họa đang được sử dụng vô cùng rộng rãi trong các lĩnh vực như AI, Deep Learning, xử lý dữ liệu lớn (Big Data), xử lý hình ảnh/video/âm thanh. Và hiện nay, công nghệ được áp dụng phổ biến nhất trong tính toán song song trên GPU chính là kiến trúc CUDA của NVIDIA.
Trong số các phương pháp tính toán song song, các công nghệ như tính toán song song quy mô lớn hay CUDA rất quan trọng, nhưng thực tế lại rất khó tìm được các bài giảng đào tạo bài bản về lĩnh vực này, khiến việc bắt đầu học trở nên khó khăn. Thông qua khóa học này, bạn hãy từng bước học lập trình CUDA nhé. CUDA hay tính toán song song đòi hỏi nền tảng lý thuyết và có độ khó nhất định. Tuy nhiên, nếu bạn đi từ căn bản cùng với các ví dụ phong phú và phần giải thích kiến thức nền tảng trong bài giảng này, bạn hoàn toàn có thể làm được! Khóa học này dự kiến sẽ được sản xuất dưới dạng một chuỗi bài giảng, đảm bảo cung cấp đầy đủ thời lượng học tập cho bạn.
Trong khóa học này, chúng tôi sẽ giải thích cách các lập trình viên C++/C kết hợp thư viện CUDA và các hàm C++/C để tăng tốc giải quyết các vấn đề trong nhiều lĩnh vực khác nhau bằng kỹ thuật xử lý song song quy mô lớn. Thông qua phương pháp này, bạn có thể tăng tốc các chương trình C++/C đã được phát triển hoặc phát triển các thuật toán/chương trình mới hoàn toàn bằng tính toán song song để đạt được tốc độ nhanh đột phá.
📢 Hãy kiểm tra trước khi bắt đầu khóa học!
Vui lòng chuẩn bị sẵn môi trường phần cứng có hỗ trợ NVIDIA CUDA để thực hành. Bạn nhất thiết phải có PC/Laptop được trang bị card đồ họa NVIDIA GeForce.
Bạn có thể sử dụng card đồ họa NVIDIA GeForce trong một số môi trường đám mây, nhưng các thiết lập của môi trường đám mây thường xuyên thay đổi và thường phải trả phí. Nếu sử dụng môi trường đám mây, học viên phải tự mình tìm hiểu cách sử dụng card đồ họa.
Bạn có thể kiểm tra chi tiết môi trường thực hành của bài giảng trong bài <00. Những điều cần chuẩn bị trước khi học> của chương trình học.
Đặc điểm của bài giảng ✨
#1. Phong phú ví dụ và giải thích
CUDA và tính toán song song quy mô lớn cần có nhiều ví dụ và giải thích phong phú. Trong loạt bài giảng này, chúng tôi cung cấp tổng cộng hơn 24 giờ thời gian giảng dạy thực tế.
#2. Thực hành là bắt buộc!
Vì đây là môn học lập trình máy tính, nên chúng tôi chú trọng vào việc thực hành phong phú và cung cấp mã nguồn (source code) hoạt động thực tế, giúp bạn có thể tự mình thực hiện theo từng bước một.
#3. Tập trung vào những phần quan trọng!
Trong thời gian giảng dạy, tôi sẽ hạn chế tối đa việc giải thích lặp lại các phần source code đã được trình bày trước đó, để bạn có thể tập trung học tập vào những phần thay đổi hoặc những điểm cần nhấn mạnh.
Khuyên dùng cho những đối tượng sau 🙋♀️
Sinh viên đại học muốn bổ sung danh mục dự án (portfolio) về các công nghệ mới trước khi xin việc
Lập trình viên muốn cải thiện đáng kể các chương trình hiện có
Các nghiên cứu sinh chuyên ngành muốn biết cách các chương trình ứng dụng đa dạng được tăng tốc như thế nào
Những ai muốn tìm hiểu về lý thuyết và thực tiễn xử lý song song trong AI, Deep Learning, tính toán ma trận, v.v.
Xem trước đánh giá khóa học 🏃
*Dưới đây là đánh giá về bài giảng bên ngoài do người chia sẻ kiến thức thực hiện với cùng chủ đề.
"Tôi đã không biết gì về thuật toán song song hay tính toán song song, nhưng sau khi nghe bài giảng, tôi đã trở nên tự tin hơn về tính toán song song."
"Có rất nhiều thuật toán mà các chương trình C++ truyền thống không thể giải quyết được, nhưng thông qua khóa học này, tôi đã có thể cải thiện chúng để có thể xử lý trong thời gian thực!"
"Sau khi nghe bài giảng và đi phỏng vấn, tôi nói rằng mình có kinh nghiệm về tính toán song song thì các nhà tuyển dụng đã rất ngạc nhiên. Họ nói rằng ở cấp độ sinh viên đại học thì rất khó để tìm thấy các bài giảng về CUDA hay tính toán song song."
Lộ trình chinh phục lập trình CUDA 🛩️
Khóa học lập trình CUDA được thiết kế thành một chuỗi gồm 7 phần với tổng thời lượng hơn 24 giờ giảng dạy nhằm tăng cường sự tập trung vào chủ đề này.
Khóa học lộ trình "Lập trình CUDA" cũng đang được cung cấp. Hãy nhớ kiểm tra nhé. ✅
Mỗi bài giảng lại được cấu tạo từ hơn 6 phần, và mỗi phần sẽ đề cập đến một chủ đề độc lập. (Bài giảng hiện tại là Phần 0 gồm 2 phần và chỉ cung cấp nội dung Giới thiệu.)
Các slide được sử dụng trong bài giảng được cung cấp dưới dạng tệp PDF và mã nguồn chương trình (source code) được sử dụng trong các phần thực hành cũng sẽ được cung cấp.
Phần 0 (Bài giảng miễn phí 1 giờ)
Giới thiệu về MPC, CUDA - Đây là phần giới thiệu tổng quan về MPC và CUDA.
Phần 1 (3 giờ 40 phút)Bài giảng hiện tại
Khái niệm CUDA kernel - Tìm hiểu khái niệm CUDA kernel, bước khởi đầu của lập trình CUDA, và bạn có thể kiểm tra cách thức hoạt động của tính toán song song.
Phần 2 (4 giờ 15 phút)
vector addition - trình bày các phép toán giữa các vector (mảng một chiều) thông qua nhiều ví dụ đa dạng và thực hiện triển khai thực tế routine AXPY bằng CUDA.
Phần 3 (4 giờ 5 phút)
memory hierarchy - Tìm hiểu về cấu trúc bộ nhớ, yếu tố cốt lõi trong lập trình CUDA. Thực hiện cài đặt các ví dụ như matrix addition, adjacent difference, v.v.
Phần 4 (3 giờ 45 phút)
matrix transpose & multiply - Trình bày các phép toán giữa các matrix (ma trận) dưới dạng mảng hai chiều thông qua nhiều ví dụ đa dạng và thực hiện cài đặt quy trình GEMM bằng CUDA.
Phần 5 (3 giờ 55 phút)
atomic operation & reduction - Cùng với việc tìm hiểu về luồng điều khiển (control flow) trong CUDA, chúng ta sẽ học từ định nghĩa vấn đề đến các giải pháp cho atomic operation, reduction, v.v. Đồng thời cũng sẽ thực hiện cài đặt routine GEMV bằng CUDA.
Phần 6 (3 giờ 45 phút)
search & sort - Tìm hiểu các ví dụ về cách triển khai hiệu quả các bài toán như search-all, even-odd sort, bitonic sort, counting merge sort, v.v. bằng cách sử dụng kiến trúc CUDA.
Chinh phục thành công lập trình CUDA và tính toán song song quy mô lớn!
Hỏi & Đáp 💬
Q. Đánh giá về các bài giảng trả phí như thế nào?
Vì các bài giảng trả phí được mở lần lượt từ (1) đến (6), nên các đánh giá bị phân tán và hiện vẫn đang ở chế độ riêng tư. Các bài giảng trả phí hiện đã nhận được những đánh giá như sau.
Tôi đã học hỏi được rất nhiều nhờ sự giải thích chi tiết của bạn về quá trình tối ưu hóa hiệu suất bằng cách áp dụng nhiều kỹ thuật khác nhau vào một ví dụ duy nhất.
Việc giải thích bằng cách trực quan hóa cấu trúc bộ nhớ và các logic giúp tôi hiểu vấn đề dễ dàng hơn nhiều.
Trong quá trình học AI còn nhiều mơ hồ, thật tốt khi có thể bổ sung thêm các nội dung chuyên sâu về thiết bị.
Việc cài đặt phần mềm được hướng dẫn rất chi tiết và mã nguồn cũng được cung cấp nên rất thuận tiện cho việc thực hành.
Q. Người không chuyên có thể theo học khóa học này không?
Lập trình C++ đòi hỏi bạn phải có một mức độ kinh nghiệm nhất định. Ít nhất, bạn cần có kinh nghiệm về lập trình C. Mặc dù tất cả các ví dụ đều được viết một cách đơn giản nhất có thể, nhưng chúng đều được cung cấp bằng mã nguồn C++/C, và các chức năng của các hàm như malloc, memcpy sẽ không được giải thích riêng biệt.
Tuy nhiên, nếu bạn có hiểu biết về cấu trúc máy tính (thanh ghi, bộ nhớ đệm, v.v.), hệ điều hành (chia sẻ thời gian, v.v.), trình biên dịch (tạo mã, tối ưu hóa mã), bạn sẽ có thể hiểu nội dung bài giảng một cách sâu sắc hơn.
Thiết kế ban đầu của bài giảng này dành cho việc học chuyên sâu của sinh viên năm cuối, chuyên ngành máy tính tại các trường đại học hệ 4 năm.
Q. Có điều gì cần chuẩn bị trước khi nghe bài giảng không? Có lưu ý nào liên quan đến việc học (môi trường cần thiết, các lưu ý khác, v.v.) không?
Bạn cần chuẩn bị sẵn môi trường phần cứng có hỗ trợ NVIDIA CUDA để thực hành.Nhất thiết phải có PC/Laptop được trang bị card đồ họa NVIDIA GeForce.
Mặc dù có thể sử dụng card đồ họa NVIDIA GeForce trong một số môi trường đám mây, nhưng vì cài đặt của môi trường đám mây thường xuyên thay đổi và thường phải trả phí, nên nếu là môi trường đám mây, học viên phải tự mình giải quyết cách sử dụng card đồ họa.
Q. Nội dung khóa học sẽ bao quát đến mức độ nào?
Bắt đầu từ Phần 0, càng lên cao từ Phần 1 đến Phần 6, khóa học càng yêu cầu lý thuyết chuyên sâu và mức độ hiểu biết cao hơn.
Tôi thực sự khuyên bạn nên đăng ký học theo đúng thứ tự từ Phần 0 đến Phần 6.
Phần counting merge sort được đề cập ở cuối phần 6 là một vấn đề khó, ngay cả đối với các nhà nghiên cứu chuyên môn cũng khó có thể theo kịp ngay lập tức. Tuy nhiên, nhiều học viên học trực tiếp (off-line) khi theo sát từng bước dựa trên nền tảng kiến thức đã học ở các phần trước, đã có thể thấu hiểu nội dung này một cách suôn sẻ.
Q. Có lý do nào cho việc thiết lập thời hạn khóa học không?
Lý do thiết lập thời hạn khóa học là vì đặc thù của lĩnh vực máy tính, sau khoảng thời gian đó, nội dung bài giảng này rất có khả năng sẽ trở thành kiến thức cũ.
Đến lúc đó, tôi sẽ gặp lại bạn trong một bài giảng mới. 😄
Q. Video có phụ đề không?
Vâng. Hiện tại tất cả các video đều có phụ đề.
Tuy nhiên, một số video được thêm vào sau này có thể sẽ không có phụ đề.
Thông tin liên quan đến font chữ được sử dụng trong tài liệu bài giảng ✔️
Trong video và tệp PDF, tôi chỉ sử dụng các phông chữ miễn phí của Google / Adobe.
Phông chữ tiếng Hàn sử dụng "본고딕" Noto Sans KR, phông chữ tiếng Anh sử dụng Source Sans Pro, Source Serif Pro, và
Bạn có thể tải xuống tất cả miễn phí từ các liên kết sau. Sau khi tải xuống, hãy giải nén và bạn có thể cài đặt vào PC/máy tính xách tay bằng cách nhấp chuột phải.
https://fonts.google.com/noto/specimen/Noto+Sans+KR tại đây, tải xuống dưới dạng tệp ZIP bằng cách nhấn vào "download family" rồi cài đặt, download as a ZIP file by clicking "download family" and then install.
Thật tuyệt khi cuda rất dễ hiểu và nó bao gồm các phần liên quan đến hệ điều hành Linux.
Thật tốt khi hiểu chi tiết về phần cứng máy tính và hoạt động của mã.
Đây là phần mở đầu của bài giảng cuda nên sẽ giải thích cách cài đặt và sử dụng nó.
Đây là bài giảng sẽ giúp bạn biết bài giảng sẽ diễn ra như thế nào trong tương lai.
Tôi không nghĩ đối tượng mục tiêu là những người biết cài đặt cuda và sử dụng các thao tác cơ bản.
Tôi nghĩ Drip Coffee + One Sip là bài giảng khởi đầu phù hợp cho những ai muốn tìm hiểu sâu hơn về cuda.
Điều đáng tiếc là có thời hạn chót để tham gia khóa học...
Tôi muốn nhàn nhã xem lại bất cứ khi nào tôi có thời gian...