병렬 프로그래밍시 생각할 점

이찬영·2021년 8월 3일
0

OS

목록 보기
3/35

Identifying tasks(태스크 인식)

프로그램을 분석하여 독립된 태스크로 나눌 수 있는 영역을 찾아야 한다. 각 태스크는 각자 다른 코어에서 병렬적으로 실행 가능하여야 한다.

Data spliting (데이터 분리)

테스크가 접근하고 연산하는 데이터는 개별 프로세서에서 사용할 수 있도록 나눌 수 있어야한다.

Balance(균형)

병렬로 실행될 수 있는 태스크를 찾아내는것도 중요하지만 찾아낸 태스크를 균등하게 분배하는것도 중요하다. 하나의 프로세서에 80%의 처리를 하고 다른 프로세서에 20%처리를 한다고 가정하자. 만약 두 프로세서가 처리한 데이터를 동기화해야한다면 80% 처리하는 프로세서 (당연히 더 많은 일을 하니까)에 맞춰질 것이다. 이것은 context switching 비용과 동기화 코드 수행을 생각하면 두 프로세서에 병렬적으로 실행할 가치는 없을 것이다.

Data dependency(데이터 종속성)

병렬적으로 실행되는 태스크가 같은 데이터에 접근하게 되면 레이스 컨디션이나 데드락이 발생할 수 있다. (레이스 컨디션과 데드락은 따로 찾아보도록)

Testing and Debugging(테스트 및 디버깅)

멀티 프로세서에서 병렬적으로 실행되는 프로그램은 테스트와 디버깅하는데 어려움이 존재한다.

0개의 댓글