Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 쓰레드
- Multithread
- 유니크포인터
- material
- 메모리관리
- 복사생성자
- 멀티코어
- 멀티코어 프로그래밍
- 한국산업기술대학교
- observer pattern
- 프레임워크
- random access
- Atomic
- EFFECTIVE C++
- 옵저버 패턴
- 옵저버
- vector
- stl
- C
- Design Pattern
- 디자인패턴
- 게임공학과
- sequential
- c++
- MultiCore
- 스마트포인터
- thread
- 멀티쓰레드
- multi-core
- Unreal
Archives
- Today
- Total
태크놀로지
멀티코어 프로그래밍 개요 & 병렬컴퓨터 본문
한국산업기술대학교 게임공학부 정내훈 교수님 멀티코어 1주차 강의
교재소개
모리스 헐리히, 니르 샤비트 "멀티프로세서 프로그래밍" 한빛미디어, 2009
장점: 멀티프로세서 프로그래밍 기초를 전부 언밀하게 다룸
단점: 알고리즘 위주로 실제 구현과는 차이가 있음
기타: 치명적인 번역오류, 자바를 사용한 구현
좀더 쉬운책 -> 프로그래머가 몰랐던 멀티코어 CPU 이야기
강의의 흐름
1.멀티쓰레드 프로그래밍의 필요성 / 작성시 문제점
2. 논블록킹 알고리즘의 필요성
3. 논블로킹 알고리즘 작성 테크닉 및 실습
4. 정리 및 상용라이브러리 소개
왜 멀티코어 프로그래밍을 하냐?
요즘 멀티코어를 사용하지 않는곳이 없다.
컴퓨터의 종류
직렬 컴퓨터 (Serial computer = Single core computer)
- 하나의 CPU만을 갖는 컴퓨터
- 듀얼코어가 대중화 되기 이전의 대부분의 컴퓨터
- 우리가 배운 자료구조/알고리즘은 전부 직렬 컴퓨터를 가정하고 있음.
- *현재 멸종*
병렬 컴퓨터 (Parallel computer)
- 여러개의 CPU가 동시에 명령들을 실행하는 컴퓨터
- 직렬 컴퓨터의 속도 제한을 극복하기 위해 제작
- *현재 컴퓨터*
병렬 컴퓨터에 대해서
병렬 컴퓨터의 사용목적
- 여러 개의 작업을 빨리 실행하기 위해서
- 하나의 작업을 보다 빨리 실행하기 위해서
병렬 프로그램
- 기존의 프로그램을 병렬 컴퓨터에서 실행했을 경우 속도증가는 0%
- 동시에 여러개의 명령흐름이 실행되는것을 가정하고 다시 프로그래밍 해야함 => 병렬 프로그래밍
병렬 프로그램의 특징
- 실행된 프로세수 내부 여러 곳이 동시에 실행됨
- 병렬로 실행되는 객체(Context(CPU 레지스터값을 모아놓은곳)로 불림) 사이의 협업(동기화 또는 SYNCHRONIZATION)이 필수
- 크게 공유메모리(Shared Memory) 모델과 메시지 패싱 모델이 있음
- 공유메모리 모델: Context(=thread) 사이의 정보공유를 공유메모리 모델을 통해서
- 메시지 패싱: Context사이의 메시지를 보냄 (수업때 다루지 않을꺼임)
*병렬로 실행되는 객체들의 커뮤니케이션(동기화)가 중요하다!
병렬 프로그램 요구사항: 정확성과 성능
- 여러 흐름에서 동시 다발성으로 호출해도 문제 없이 실행되는 알고리즘이 필요.
- Context의 증가에 따른 성능향상이 높아야 한다. (기존 프로그램보다 더 느려질수 있음)
이어서 다음 포스팅에 멀티쓰레드 프로그래밍시 쓰레드와 프로세서와의 관계에 대해 작성하도록 하겠습니다.
출처
한국산업기술대학교 게임공학부 정내훈 교수님 강의 - 멀티코어 프로그래밍
'멀티코어' 카테고리의 다른 글
멀티쓰레드 프로그래밍은 어디서 사용되고 있는가? (0) | 2020.09.13 |
---|---|
멀티쓰레드 프로그래밍으로 덧셈프로그램 만들기 (이외 방법) (0) | 2020.09.13 |
멀티쓰레드 프로그래밍으로 덧셈프로그램 만들기 (0) | 2020.09.08 |
멀티코어 하드웨어 소개 (0) | 2020.09.04 |
멀티코어 프로그래밍에서의 쓰레드와 프로세스의 관계 (0) | 2020.09.02 |