태크놀로지

멀티코어 프로그래밍 개요 & 병렬컴퓨터 본문

멀티코어

멀티코어 프로그래밍 개요 & 병렬컴퓨터

원택 2020. 9. 2. 19:46

한국산업기술대학교 게임공학부 정내훈 교수님 멀티코어 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의 증가에 따른 성능향상이 높아야 한다. (기존 프로그램보다 더 느려질수 있음)

 

이어서 다음 포스팅에 멀티쓰레드 프로그래밍시 쓰레드와 프로세서와의 관계에 대해 작성하도록 하겠습니다.


출처

한국산업기술대학교 게임공학부 정내훈 교수님 강의 - 멀티코어 프로그래밍