강좌

병렬처리 개념 강좌: #5 설계 관련 3가지 생각 포인트

하늘흐늘 2021. 11. 8. 11:48
반응형

병렬처리 설계를 할 때 살펴보아야 할 3가지 포인트가 있습니다.

1. 확장성(Scaling)
코어 개수의 변화에 따라 성능이 더욱 좋아지도록 설계를 하여야 합니다. 데이터 병렬처리에서 100개의 데이터를 처리한다고 하였을 때 코어가 2개일 때는 각각 50개씩, 코어가 4개일 때는 각각 25개씩 처리할 수 있게 설계하는 것 같은 것이 좋은 예일 것입니다. 

2. 적절성(Correctness)
병렬 처리를 통한 성능 향상에 최적화되도록 설계를 하여야 합니다. 병렬처리 프로그래밍은 멀티 쓰레드가 동시에 한 자원에 접근하였을 때 발생하는 동기화 문제가 발생할 수 있습니다. 또한 데드락 문제도 발생할 수 있습니다. 이는 멀티 쓰레드의 개별 쓰레드처럼 병렬 처리의 각각의 쓰레드도 처리를 위하여 자원을 사용하기 때문입니다. 또한 동기화 문제로 인하여 성능 저하도 생각해 보아야 합니다. 병렬 처리는 멀티 쓰레드처럼 IO 관련 처리 성능이 아닌 CPU 관련 처리 성능을 향상시키는 것이기 때문에 가급적이면 동기화 문제를 피하는 것이 좋습니다.

3. 유지보수성(Maintainability)
병렬처리는 별도로 구현하기 보다는 OpenMP, Intel Threading Building Block(TBB), MS Parallel Patterns Library(PPL) 등의 표준 라이브러리를 사용하는 것이 좋습니다. 닷넷이라면 닷넷에 포함되어 있는 라이브러리를 사용하는 것이 좋습니다. 라이브러리 선택은 C라면 OpenMP, C++라면 TBB나 PPL을 선택할 수 있는데 윈도우 쪽이라면 PPL의 접근성이 좋습니다. 단지 리눅스나 유닉스 혹은 멀티 OS를 지원해야 한다면 TBB가 좋은 선택일 듯 싶습니다. 

반응형