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

CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기 대시보드

(5)
3개의 수강평 ∙  110명의 수강생

49,500원

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

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

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

✍️
이런 걸
배워요!
시리즈 전체 - GPU를 이용한 CUDA의 대규모 병렬 컴퓨팅
이 강의는 - 파트 (2) - 벡터(1D배열) 병렬로 동시에 더하기
업데이트 - 2023년 7월, "리마스터링"🍀(일부 음원/영상)
로드맵 "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시간 이상의 강의로 기획되었습니다.
  • 로드맵 강의 "CUDA 프로그래밍" 도 제공되고 있습니다. 꼭 체크해 보세요. 
  • 각 강의는 다시 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 에 대한 🏃

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

커리큘럼 총 50 개 ˙ 4시간 19분의 수업
이 강의는 영상, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 10. elapsed time - 프로그램의 수행 시간 측정
10-0 opening - 오프닝 미리보기 01:05
10-1 elapsed time - 소요 시간 (섹션 전체 PDF 파일 포함) 07:05
10-2 C++11 - C++ 2011년 버전 (섹션 전체 source code, common.cpp 포함) 04:46
10-3 chrono header file - C++ <chrono> 파일 소개 03:45
10-4 chrono - C++ <chrono> 설명 07:30
10-5 clock - clock() 함수 소개 06:32
10-6 Windows CPU time - 윈도우즈 CPU time 측정 시, 주의 사항 01:12
10-7 argc, argv - C/C++ argc, argv 사용법 07:52
10-F closing - 클로징 00:38
섹션 1. 11. CUDA kernel launch - CUDA 커널 함수의 실행
11-0 opening - 오프닝 미리보기 00:35
11-1 process and thread - 프로세스와 쓰레드의 구별 (섹션 전체 PDF 파일 포함) 13:39
11-2 CUDA programming model - CUDA 프로그래밍 모델 (전체 섹션에 사용한 source code 없음) 06:57
11-3 ID and dimension - 쓰레드 ID, 블락 ID, dimension 09:49
11-4 kernel launch - 커널 실행 06:41
11-5 layout example - 그리드 레이아웃 예제 08:21
11-6 CUDA architecture and threads - CUDA 시스템 구조와 쓰레드 07:32
11-7 thread and block queue - 쓰레드와 블락 큐 처리 02:51
11-F closing - 클로징 01:14
섹션 2. 12. vector addition - 1차원 배열 (벡터) 더하기
12-0 opening - 오프닝 미리보기 01:03
12-1 problem description - 문제 설명 (섹션 전체 PDF 파일 포함) 04:10
12-2 vector addition, host version - 벡터 더하기, CPU로 해결하기 (섹션 전체 source code 포함) 09:08
12-3 vector addition, CPU kernel - 벡터 더하기, CPU 커널 함수 07:25
12-4 CUDA kernel - CUDA 커널 구현 07:58
12-5 vector addition, device version - 벡터 더하기, CUDA 디바이스 구현 08:59
12-F closing - 클로징 00:57
섹션 3. 13. Giga Addition - 기가 단위 벡터 더하기
13-0 opening - 오프닝 미리보기 01:06
13-1 giga addtion, single core - 기가 단위 더하기, 싱글 코어 (섹션 전체 PDF 파일 포함) 04:49
13-2 giga addition, device version - 기가 단위 더하기, CUDA 구현 (섹션 전체 source code 포함) 09:17
13-3 kernel clock - CUDA 커널의 clock 함수 사용 05:50
13-4 elapsed usec - 소요된 micro-second 계산 03:46
13-5 giga addition, clock version - 기가 단위 더하기, 커널 clock 함수 사용 05:01
13-6 processing arguments - 아규먼트 처리 06:03
13-F closing - 클로징 01:45
섹션 4. 14. AXPY and FMA - AXPY 루틴과 FMA 연산
14-0 opening - 오프닝 미리보기 01:40
14-1 SAXPY, device version - single precision, AXPY, CUDA 구현 (섹션 전체 PDF 파일 포함) 10:35
14-2 FMA - FMA 연산 설명 (섹션 전체 source code 포함) 08:55
14-3 LERP, device version - linear interpolation, CUDA 구현 06:53
14-4 LERP, FMA version - linear interpolation, FMA 연산 사용 04:14
14-F closing - 클로징 02:09
섹션 5. 15. thread and GPU - 쓰레드와 GPU 구조
15-0 opening - 오프닝 미리보기 00:59
15-1 CUDA hardware - CUDA 하드웨어 (섹션 전체 PDF 파일 포함) 04:45
15-2 scalability - CUDA의 확장성 (섹션 전체 source code 포함) 06:55
15-3 thread, warp - 쓰레드와 와프 06:07
15-4 warp scheduling - 와프 스케줄링 09:10
15-5 resource restriction - 자원 사용의 제한 04:20
15-6 warp, lane - 와프와 레인 06:50
15-7 lane id rules - 레인 ID 부여 규칙 설명 01:49
15-F closing - 클로징 01:05
강의 게시일 : 2022년 10월 11일 (마지막 업데이트일 : 2023년 07월 26일)
수강평 총 3개
수강생분들이 직접 작성하신 수강평입니다.
5
3개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
하지 thumbnail
5
실습면에서 좀 아쉬운 면이 있지만, 설명이 자세해서 이해하기 쉽습니다
2023-09-07
몽크in도시 thumbnail
5
프로그램의 시간 측정을 다루는 부분은 CUDA 외에 다른 프로그램에서도 바로 적용할 수 있어서 많은 도움이 되었습니다. 뒤에 AXPY 문제들은 BLAS 에서 실제 제공하는 루틴이더군요. BLAS로 작성했던 코드들을 가속시킬 수도 있겠다는 생각이 들었습니다. 재미있는 강의 였습니다!
2023-05-27
지식공유자 드립커피+한모금더
안녕하세요.🌞 좋은 평가를 해주셔서 감사합니다. 도움이 되셨다니 다행입니다. 감사합니다. 🍀
2023-05-31
sanha hwang thumbnail
5
좋은 강의 감사합니다.
2023-04-10
지식공유자 드립커피+한모금더
감사합니다. 좋은 하루 되세요.
2023-04-10
연관 로드맵
이 강의가 포함된 잘 짜여진 로드맵을 따라 학습해 보세요!