멀티코어와 동기화

병렬 프로그램에서 코어 수를 늘려도 성능이 기대만큼 늘지 않는 원인으로 해당하지 않는 것은?

  1. A락 대기 등 스레드 간 동기화가 많은 것
  2. B스레드별 작업량에 큰 편차가 있는 것
  3. C각 스레드가 자신 전용 데이터만 읽고 쓰는 것
정답과 해설 보기

정답: C. 각 스레드가 자신 전용 데이터만 읽고 쓰는 것

병렬화의 효과를 방해하는 주된 원인으로는 병렬화할 수 없는 부분(암달의 법칙), 락이나 배리어로 인한 대기, 공유 데이터나 거짓 공유로 인한 캐시 라인의 오감, 작업의 편차, 메모리 대역폭 부족 등이 있습니다. 각 스레드가 자신 전용 데이터만 다룬다면 다른 스레드와의 통신이나 대기가 생기지 않으므로, 이상적인 병렬화에 가까워집니다.

  • A. 동기화 대기는 성능 향상을 방해하는 대표적인 원인입니다.
  • B. 작업의 편차는 느린 스레드를 기다리는 시간을 만듭니다.
  • C. 맞습니다. 전용 데이터만이라면 성능 향상을 방해하지 않습니다.
이 분야 연습하기 분야로 돌아가기

멀티코어와 동기화의 다른 문제

  1. 루프의 반복을 여러 스레드로 나눌 때, 반복마다 계산량이 크게 들쭉날쭉한 경우에 적합한 나누기 방법은?
  2. 배열의 모든 요소의 합계를 여러 스레드로 구할 때, 성능을 위해 적합한 방법은?
  3. 읽기-쓰기 락(reader-writer lock)의 특징으로 올바른 것은?
  4. 카운터가 있는 세마포어(counting semaphore)의 사용법으로 가장 적절한 것은?
  5. 캐시 일관성(coherency)과 메모리 일관성 모델(consistency model)의 차이로 올바른 것은?

이 분야의 비교