본문 바로가기

CS/오퍼레이팅 시스템

18. 멀티코어 프로그래밍

Multi core : 코어가 여러개라는 것은 여러 스레드가 동시 수행 가능하다는 것이다

 

두가지 프로그래밍 방식이 있음

- Data parallelism

  동일한 일을 수행하고 있지만 수행 대상 데이터가 다름

  데이터를 여러 subset으로 나누고 각 코어에 다른 데이터 같은 일을 수행시킴

- Task parallelism

  각 코어가 유니크한 연산을 수행. 데이터도 다를 수 있음

 

- concurrent : 동시성, 병행성

- parallelism : 병렬성

프로그래밍이 더  어려움 

각 코어에 어떤 스레드를 할당할지, 코어간의 밸런스, 데이터를 효과적으로 분배, 

특정 코어에서 산출한 데이터를 다른 코어에서 사용할 수도 있음, 테스트와 디버깅이 어려움,

소프트웨어 설계 측면에서 새로운 어프로치가 필요함