강좌

병렬처리 개념 강좌: #6 설계 관련 팁

하늘흐늘 2021. 11. 9. 11:57
반응형

병렬 처리를 설계할 때 생각해 보면 좋은 것들은 아래와 같습니다.

  1. 병렬적으로 처리될 수 있도록 프로그램을 설계합니다. 프로그램에 따라서 단일 처리를 병렬 처리를 하기 위해서는 단순히 API를 사용하는 것 이상으로 프로그램 디자인 형태가 병렬 처리에 적합해야 하고 때때로 병렬처리를 위하여 수정해야할 수도 있습니다. 처음 디자인시 병렬 처리에 적합하도록 설계하면 좋습니다.
  2. 쓰레드를 고려하지 않고 단일 쓰레드 환경에서 작업 태스크 중심으로 설계를 합니다. 병렬처리는 앞에 설명한 대로 크게 2가지의 처리 형태를 가집니다. 멀티 쓰레드 사용 형태 보다는 이 CPU 관련 작업의 성능 향상을 할 수 있는 2가지 형태에 적합하도록 설계하는 것이 좋습니다.
  3. 로직의 디버깅을 위하여 병렬처리 뿐만 아니 단일처리에서도 동작하도록 설계합니다. 병렬 처리로 만들어 놓고 버그가 있어 병렬처리로 디버깅하는 것은 쉽지 않습니다. 이런 경우를 대비하여 단일 처리에서도 동작하도록 같이 개발하여 놓는 것이 버그 수정에 좋습니다. 물론 병렬처리 시에만 일어나는 버그가 아닌 이상 단일 처리 모드에서 버그를 수정하는 것이 좋습니다.
  4. 성능 하락을 막기 위하여 동기화 관련 문제는 가급적 회피하는 것이 좋으면 어쩔 수 없는 경우에만 제한적으로 동기화 관련 객체를 사용하는 것이 좋습니다. 또한 TBB나 PPL같은 경우 컬렉션의 동기화 문제와 관련해서 락프리 동시성 컬렉션을 지원하므로 해당 컬렉션을 사용하는 것도 좋습니다.
  5. 병렬 처리를 원활하게 하기 위해서 프로그램이나 개발 언어에 적절한 라이브러리와 개발 툴을 선택하는 것이 좋습니다.

반응형