Thumbnail
개발 · 프로그래밍 프로그래밍 언어

CUDA 프로그래밍 (4) - C/C++/GPU 병렬 컴퓨팅 - 행렬 matrix 곱하기 대시보드

(5)
2개의 수강평 ∙  91명의 수강생

49,500원

지식공유자: 드립커피+한모금더
총 40개 수업 (3시간 40분)
수강기한: 
36개월
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

중급자를 위해 준비한
[프로그래밍 언어, 딥러닝 · 머신러닝] 강의입니다.

✅ 전체 (1) ~ (6)의 시리즈 중, (4) 행렬(2D 배열) 병렬로 동시에 곱하기 ✅ NVIDIA GPU + CUDA 프로그래밍을 기초부터 차근차근 설명합니다. ✅ C++/C 언어로 배열/행렬/이미지처리/통계처리/정렬 등을 병렬 컴퓨팅으로 매우 빠르게 처리합니다.

✍️
이런 걸
배워요!
시리즈 전체 - GPU를 이용한 CUDA의 대규모 병렬 컴퓨팅
이 강의는 - 파트 (4) - 행렬(2D 배열) 병렬로 동시에 곱하기
로드맵 "CUDA 프로그래밍"에서 ✅묶음 할인 쿠폰✳️ 제공

프로그램은 속도가 생명!
대규모 병렬 처리 기법으로 빠르게 만들어요 🚀

대규모 병렬 컴퓨팅이 중요하다던데 🧐

GPU/그래픽 카드 기반의 대규모 병렬 컴퓨팅은 AI, 딥러닝, 빅데이터 처리, 이미지/영상/음성 처리 등에서 매우 활발하게 사용되고 있어요. 그리고 현재 GPU 병렬 컴퓨팅에서 가장 광범위하게 적용되는 기술이 NVIDIA 사의 CUDA 아키텍처입니다.

병렬 컴퓨팅 중에도 대규모 병렬 컴퓨팅, CUDA (쿠다) 등의 기술이 중요하다는데, 정작 이 분야를 체계적으로 가르쳐 주는 강의를 찾기가 어려워서 학습을 시작하기도 힘들죠. 이 강의를 통해 CUDA 프로그래밍을  차근차근 배워보세요. CUDA나 병렬 컴퓨팅은 이론적 배경이 필요하고 난이도가 있는데요. 이 강의의 풍부한 예제와 배경지식 설명과 함께 기초부터 따라간다면 충분히 하실 수 있어요! 이 강의는 시리즈 강의로 제작될 예정으로, 충분한 강의 시간을 확보해서 제공합니다.

본 강의에서는 C++/C 프로그래머들이 CUDA 라이브러리와 C++/C 함수들을 조합해서 다양한 분야의 문제를 대규모 병렬 처리 기법으로 가속하는 방법을 설명하고자 합니다. 이 방법을 통해 이미 개발된 C++/C 프로그램들을 가속하거나, 새로운 알고리즘/프로그램을 완전히 병렬 컴퓨팅으로 개발해서 획기적으로 빨라지게 할 수 있습니다.

📢 수강 전 확인해주세요!

  • 실습을 위해 NVIDIA CUDA가 작동하는 하드웨어 환경을 미리 확보해주세요. NVIDIA의 GeForce 그래픽 카드가 장착된 PC/노트북이 꼭 필요합니다.
  • 일부 클라우드 환경에서도 NVIDIA GeForce 그래픽 카드를 사용할 수 있지만, 클라우드 환경의 설정은 자주 바뀌고 유료인 경우가 많습니다. 클라우드 환경이라면 그래픽 카드 사용 방법은 수강생 본인이 확보하셔야 합니다.
  • 강의 실습 환경은 커리큘럼의 <00. 강의 전 준비 사항> 강의에서 자세히 확인하실 수 있습니다.

강의 특징 ✨

#1.
풍부한
예제와 설명

CUDA와 대규모 병렬 컴퓨팅은 풍부한 예제와 설명이 필요해요. 이 시리즈 강의에서는 총 24시간 이상의 실제 강의 시간을 제공합니다.

#2.
실습은 필수!

컴퓨터 프로그래밍 과목이라서, 풍부한 실습을 강조하고, 실제 작동하는 source code를 제공해서, 하나하나 따라가면서 해 볼 수 있습니다.

#3.
중요한 부분을
집중적으로!

강의 시간에는 이미 설명한 source code 부분에 대해서는 중복 설명을 최대한 배제해서, 바뀐 부분이나, 강조해야 할 부분에만 집중해서 학습할 수 있습니다.


이런 분들께 추천해요 🙋‍♀️

취업 전에 신기술에 대한 포트폴리오를 추가하고 싶은 대학생

기존 프로그램을 획기적으로 개선하고 싶은 프로그래머

다양한 응용 프로그램이 어떻게 고속화되었는지 알고 싶은 전공 연구자

AI, 딥러닝, 행렬 계산 등의 병렬 처리 이론과 실제를 알고 싶은 분

미리 보는 강의 후기 🏃

*아래 후기는 지식공유자가 같은 주제로 진행한 외부 강연에 대한 후기입니다.

"저는 병렬 알고리즘이나 병렬 컴퓨팅에 대해서 아무것도 몰랐는데,
강의를 들은 후에는 병렬 컴퓨팅에 자신감을 가지게 되었어요."

"기존 C++ 프로그램으로는 해결을 못 했던 알고리즘이 많았는데,
이 강의를 통해서 실시간 처리가 가능하게 개선할 수 있었어요!"

"강의를 들은 후 면접을 볼 때 병렬 컴퓨팅에 경험이 있다고 했더니 면접관들이 엄청 놀라셨어요.
대학생 레벨에서는 CUDA나 병렬 컴퓨팅 강의가 찾기 쉽지 않다고 하더라고요."


CUDA 프로그래밍 정복 로드맵 🛩️

  • CUDA 프로그래밍 강의는 주제에 대한 집중도를 높이고자 7개 시리즈, 총 24시간 이상의 강의로 기획되었습니다.
  • 각 강의는 다시 6개 이상의 섹션으로 구성되며, 섹션마다 독립적인 주제를 다루고 있습니다. (현재 강의인 파트 0는 2개의 섹션으로 Introduction만 제공합니다.)
  • 강의에서 사용한 슬라이드가 PDF 파일로 제공되며, 실습 예제가 설명된 섹션에서는 사용한 프로그램 source code가 제공됩니다.

파트 0 (1시간 무료 강의) 

  • MPC, CUDA 소개 - MPC와 CUDA에 대한 전체적인 소개를 하는 introduction 부분입니다.

파트 1 (3시간 40분)

  • CUDA kernel 개념 - CUDA 프로그래밍의 시작인 CUDA kermel의 개념을 학습하고, 병렬 컴퓨팅이 작동하는 것을 확인하실 수 있습니다.

파트 2 (4시간 15분)

  • vector addition - 1차원 배열 형태인 vector (벡터) 끼리의 연산을 다양한 예제로 제시하고, AXPY 루틴을 실제로 CUDA로 구현합니다.

파트 3 (4시간 5분)

  • memory hierarchy - CUDA 프로그래밍의 핵심인 메모리 구조를 학습합니다. 예제로 matrix addition, adjacent difference 등을 구현합니다.

파트 4 (3시간 45분)현재 강의

  • matrix transpose & multiply - 2차원 배열 형태인 matrix(매트릭스, 행렬)끼리의 연산을 다양한 예제로 제시하고, GEMM 루틴을 CUDA로 구현합니다.

파트 5 (3시간 55분)

  • atomic operation & reduction - CUDA 컨트롤 플로우에 대한 이해와 더불어, atomic operation, reduction 등의 문제 정의부터 해결책까지 학습합니다. GEMV 루틴도 CUDA로 구현합니다.

파트 6 (3시간 45분)

  • search & sort - CUDA 아키텍처를 이용해서, search-all 문제나 even-odd sort, bitonic sort, counting merge sort 등을 효과적으로 구현하는 예제를 학습합니다.

CUDA 프로그래밍과
대규모 병렬 컴퓨팅 정복 완료!


Q&A 💬

Q. 유료 강의 수강평은 어떤가요?

유료 강의가 (1) ~ (6) 으로 순차적으로 오픈되어서, 수강평이 흩어져있고, 아직 비공개입니다. 유료 강의는 현재 다음과 같은 수강평들을 받았습니다.

  • 하나의 예제에서 다양한 테크닉을 적용해 보면서 성능을 최대한으로 끌어올리는 과정을 자세히 설명해주셔서 도움이 많이 되었습니다.
  • 메모리 구조나 로직들을 시각화하여 설명해 주시니 이해도 훨씬 수월했습니다.
  • 막연한 AI 공부 중, 디바이스에 대한 심화내용을 더할 수 있어 좋습니다.
  • 소프트웨어 설치가 잘 설명되고 소스 코드도 제공되어서 실습하기 편했습니다.

Q. 비전공자도 들을 수 있는 강의인가요?

  • C++ 프로그래밍은 어느 정도 경험이 있으셔야 합니다. 최소한, C 프로그래밍을 하신 경험은 있으셔야 합니다. 모든 예제가 되도록 평이하게 작성되었지만, 모두 C++/C 코드로 제공되며, malloc, memcpy 등의 함수가 제공하는 기능 정도에 대해서는 별도로 설명하지 않습니다.
  • 다만, 컴퓨터 구조 (레지스터, 캐시 메모리 등), 운영 체제 (타임 쉐어링 등), 컴파일러 (코드 생성, 코드 최적화) 등에 대한 이해가 있으시면, 강의 내용을 더 깊게 이해하실 수 있습니다.
  • 이 강의의 최초 설계는 4년제 대학, 컴퓨터 전공, 졸업반 학생들의 심화 학습용이었습니다.

Q. 강의를 듣기 전 준비해야 할 것이 있나요? 수강 관련 참고 사항(갖춰야 할 환경, 기타 유의 사항 등)이 있나요?

  • 실습을 위한 NVIDIA CUDA가 작동하는 하드웨어 환경은 미리 확보하셔야 합니다. NVIDIA 의 GeForce 그래픽 카드가 장착된 PC/노트북이 꼭 필요합니다.
  • 일부 클라우드 환경에서도 NVIDIA GeForce 그래픽 카드를 사용할 수 있지만, 클라우드 환경의 설정은 자주 바뀌고, 유료인 경우가 많아서, 클라우드 환경이라면, 그래픽 카드 사용 방법은 수강생 본인이 해결하셔야 합니다. 

Q. 수업 내용을 어느 수준까지 다루나요?

  • 파트 0에서 출발해서, 파트 1에서 파트 6로 올라갈수록, 더 깊은 이론과 더 많은 이해도를 요구합니다. 
  • 반드시 파트 0에서 파트 6의 순서대로, 정주행해서 수강하시기를 강력히 권고드립니다.
  • 파트 6의 마지막 부분에서 다루는 counting merge sort는 전문 연구자들도 금방 따라가기에는 어려운 정도의 문제입니다. 다만, 차근차근 따라갔던 off-line 수강생들은 앞부분의 학습을 바탕으로, 무난하게 이해했다는 경우가 더 많았습니다. 

Q. 수강 기한을 설정하는 이유가 있나요?

  • 수강 기한을 설정한 것은, 컴퓨터 분야 특성상 그 정도의 시간이 지나면 이 강의 내용이 이미 옛날 이야기가 될 가능성이 크기 때문입니다.
  • 그때쯤엔, 새로운 강의에서 다시 찾아뵙겠습니다. 😄

Q. 동영상에 자막이 들어가 있나요?

  • 네. 현재는 모든 동영상에 자막이 들어가 있습니다.
  • 다만, 추후에 추가되는 동영상 일부에는 동영상 자막이 없을 수도 있습니다.

강의 자료에 사용한 폰트 관련 사항 ✔️

  • 동영상과 PDF 파일에서는 Google / Adobe의 무료 폰트만 사용하였습니다. 
  • 한글 폰트는 "본고딕" Noto Sans KR, 영문 폰트는 Source Sans Pro, Source Serif Pro를 사용하였고,
  • 다음 링크에서 모두 무료로 다운로드할 수 있습니다. 다운로드 후에는 압축 해제 후, 마우스 오른쪽 버튼으로 PC/노트북 등에 설치 가능합니다.
  • https://fonts.google.com/noto/specimen/Noto+Sans+KR에서, "download family" 로 ZIP 파일로 다운로드 후 설치
  • https://fonts.google.com/specimen/Source+Sans+Pro에서, "download family" 로 ZIP 파일로 다운로드 후 설치
  • https://fonts.google.com/specimen/Source+Serif+Pro에서, "download family" 로 ZIP 파일로 다운로드 후 설치

이런 분들께 추천드려요!

🎓
학습 대상은
누구일까요?
배열/행렬/이미지처리/통계처리/정렬 등을 C++C 기반 병렬컴퓨팅/병렬처리로 가속하려는 분
직접 개발한 프로그램을 병렬 컴퓨팅/CUDA/쿠다 로 가속시키려는 분
NVIDIA CUDA 프로그래밍/CUDA 컴퓨팅을 기초부터 공부하시려는 분
GPU 병렬처리/병렬컴퓨팅의 이론과 실제를 골고루 공부하시려는 분
📚
선수 지식,
필요할까요?
C++ 또는 C 프로그래밍 경험
컴퓨터 구조, 레지스터, 캐시, 타임 쉐어링 등에 대한 지식이 있으면 더 좋습니다

안녕하세요
드립커피+한모금더 입니다.
드립커피+한모금더의 썸네일

꽤 오랜 시간동안 프로그래머, 또한 개발자와 강사로서 활동해 오고 있습니다.

병렬 처리, CUDA, 3D 그래픽스, OpenGL, OpenCL, Vulkan 에 대한 🏃

용역, 외주, 개발, 상품화, 강의, 자문, 과제 등등을 수행 중 입니다 🙊

커리큘럼 총 40 개 ˙ 3시간 40분의 수업
이 강의는 영상, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 1. 22. matrix copy - 행렬 복사
22-0 opening - 오프닝 미리보기 01:03
22-1 matrix copy, host version - 행렬 복사, CPU로 처리하기 (섹션 전체 PDF 파일 포함) 08:22
22-2 matrix copy, memcpy version - 행렬 복사, memcpy 함수 사용 (섹션 전체 source code 포함) 04:30
22-3 matrix copy, device version - 행렬 복사, CUDA 디바이스 버전 (optional - common.cpp 포함) 08:48
22-4 tiled approach - 타일 방식 처리 09:19
22-F closing - 클로징 00:48
섹션 2. 23. matrix transpose - 전치 행렬
23-0 opening - 오프닝 미리보기 00:54
23-1 transpose, device version - 전치 행렬 구하기, CUDA 디바이스 버전 (섹션 전체 PDF 파일 포함) 06:54
23-2 transpose, tiled appoach - 타일 방식으로 전치 행렬 구하기 (섹션 전체 source code 포함) 06:03
23-3 bank conflict - 메모리 뱅크 충돌 현상 07:54
23-4 bank optimized - 메모리 뱅크 최적화 05:08
23-F closing - 클로징 00:27
섹션 3. 24. matrix multiplication - 행렬 곱하기
24-0 opening - 오프닝 미리보기 00:57
24-1 matrix multiplication, CPU version - CPU에서 행렬 곱하기 (섹션 전체 PDF 파일 포함) 08:03
24-2 outer k - CPU에서 루프 순서 바꾸기 (섹션 전체 source code 포함) 06:41
24-3 matrix multiplication, CUDA version - CUDA에서 행렬 곱하기 05:33
24-4 aligned tile - 타일 구조로 행렬 곱하기 08:29
24-5 variable size - 임의 크기의 행렬로 확장 09:00
24-F closing - 클로징 01:19
섹션 4. 25. GEMM - general matrix-to-matrix multiplication
25-0 opening - 오프닝 미리보기 00:50
25-1 GEMM problem - GEMM 문제 설명 (섹션 전체 PDF 파일 포함) 05:18
25-2 GEMM, CPU version - CPU 에서 GEMM 루틴 구현 (섹션 전체 source code 포함) 06:10
25-3 GEMM, aligned tile - 타일 구조로 GEMM 루틴을 CUDA에서 구현 09:17
25-4 GEMM, general size - 임의 크기의 행렬로 확장 05:37
25-F closing - 클로징 00:40
섹션 5. 26. speed check - 실행 속도 체크
26-0 opening - 오프닝 미리보기 00:50
26-1 CUDA memory hierarchy - CUDA 메모리 계층 구조 (섹션 전체 PDF 파일 포함) 05:03
26-2 speed program - 스피드 체크 프로그램 (섹션 전체 source code 포함) 12:05
26-3 L1 cache - Level 1 캐시 메모리 06:23
26-4 memory clear - 메모리 클리어 함수들 10:05
26-F closing - 클로징 00:45
섹션 6. 27. floating point numvers - 부동소수점 방식 실수
27-0 opening - 오프닝 미리보기 01:22
27-1 IEEE 754 - 플로팅 포인트 숫자 국제 표준 (섹션 전체 PDF 파일 포함) 05:13
27-2 precision limits - 정밀도 한계 (섹션 전체 source code 포함) 12:34
27-3 get sum - 합계 구하는 함수 구현 05:51
27-4 sin cos problem - 싸인 코싸인 문제 12:33
27-5 fast math - CUDA fast math 옵션 11:01
27-F closing - 클로징 00:34
강의 게시일 : 2022년 10월 19일 (마지막 업데이트일 : 2023년 04월 17일)
수강평 총 2개
수강생분들이 직접 작성하신 수강평입니다.
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
몽크in도시 thumbnail
5
행렬 곱하기가 다양하게 구현될 수 있다는 점이 특이했고, CPU 구현에서도 루프 구조를 바꾸면 더 빨라진다는 점은 몰랐던 것이었습니다. 보통 랭귀지 책에 나오는 수준이 아니라, 실전 코딩을 배웠다는 느낌입니다.
2023-07-19
지식공유자 드립커피+한모금더
안녕하세요.🌞 좋은 평가를 해주셔서 감사합니다. 🍀 늘 행복한 시간 되세요.
2023-07-26
하지 thumbnail
5
최적화 부분이 특히 여러모로 도움이 많이 됩니다.
2023-10-06
지식공유자 드립커피+한모금더
안녕하세요.🌞 좋은 평가를 해주셔서 감사합니다. 🍀 늘 행복한 시간 되세요.
2023-10-06
연관 로드맵
이 강의가 포함된 잘 짜여진 로드맵을 따라 학습해 보세요!