성능 분석

병렬 프로그램의 확장성(scalability)을 조사하는 방법으로 가장 적절한 것은?

  1. A최대 코어 수에서 한 번만 측정한다
  2. B스레드나 코어 수를 1, 2, 4, 8…로 늘려 가며 실행 시간을 측정하고, 속도 향상률이 어떻게 늘어나는지 그래프로 만든다
  3. C코어 하나만으로 여러 번 측정한다
정답과 해설 보기

정답: B. 스레드나 코어 수를 1, 2, 4, 8…로 늘려 가며 실행 시간을 측정하고, 속도 향상률이 어떻게 늘어나는지 그래프로 만든다

코어 수를 바꿔 가며 속도 향상률을 측정하면, 이상적으로는 코어 수에 비례하여 늘지만 실제로는 병렬화할 수 없는 부분, 동기화나 통신, 메모리 대역폭 부족 등으로 어떤 수부터 증가가 둔해집니다. 어디서 증가가 멈추는지 보면 무엇이 제약이 되는지에 대한 단서를 얻을 수 있습니다. 비교 기준은 병렬화하지 않은 가장 빠른 순차 프로그램으로 하는 것이 공정합니다.

  • A. 한 번만으로는 증가 양상을 알 수 없습니다.
  • B. 올바릅니다. 어디서 증가가 멈추는지 알 수 있습니다.
  • C. 병렬화의 효과를 알 수 없습니다.
이 분야 연습하기 분야로 돌아가기

성능 분석의 다른 문제

  1. 8코어로 병렬 실행했더니 1코어일 때보다 6배 빨라졌다. 병렬 효율은 얼마인가?
  2. 성능을 측정하기 위한 장치를 넣은 탓에 측정하려는 프로그램의 동작 자체가 바뀌어 버리는 현상을 무엇이라 부르는가?
  3. 프로그램 성능을 개선할 때의 진행 방식으로 가장 적절한 것은?
  4. 대량의 데이터를 처리하는 프로그램에서 가장 큰 속도 향상을 얻을 가능성이 높은 개선은?
  5. 소프트웨어 개발에서 변경할 때마다 벤치마크를 자동으로 실행하고 결과를 기록해 두는 목적으로 올바른 것은?