병렬 프로그래밍과 DOD
-
Upload
kiheon-park -
Category
Technology
-
view
1.703 -
download
3
description
Transcript of 병렬 프로그래밍과 DOD
병렬 프로그래밍( GPG.8 TBB 를 이용한 다중 스레드 행위자 기반 아키텍쳐 &
데이터 중심 디자인 )
CSO 클라이언트 파트박기헌
멀티 코어의 활용 동시성 찾기 과제의 분해 자료 지향 설계
게임에서의 동시성 찾기 그래픽 시스템과 물리 시스템은 자료 주도적
( Data-Driven ) 게임 플레이 시스템은 사건 주도적 ( Event-
Driven )
행위자 기반 프로그래밍( Actor-Based Programming )
프로그래밍 및 처리의 기본 단위가 행위자(Actor) 인 프로그래밍 패러다임
객체 (Object) 와 비슷하나 스스로 정보를 처리하는 능력으로 객체와 구분 됨
메서드 호출이 아닌 메시지 전달을 통해 소통 및 상호 작용
행위자 클래스 구성 내부 상태 메시지 대기열 메시지 처리 메시지 소비
메시지 메시지 대기열 성능이 행위자의 전반적인 성능
영향 미침 . 메시지 대기열에 사용할 컨테이너로 GPG08
에서는 tbb::concurrent_queue 를 사용 tbb::concurrent_queue 는 스레드에 안전한
다중 생산자 다중 소비 대기열 (MPMC) 하지만 Actor 의 기능은 MPSC 이기 때문에
tbb::concurrent_queue 는 오버 스펙
메시지 전달시 고려 사항 다른 행위자의 상태를 조회해야 하는 경우
비동기이기 때문에 조회가 까다로울 수 있다 . 약속 기법을 사용해 수신자가 전달자에게 상태를
알려주도록 한다 . 순차적인 메시지 처리
열쇠 넣기 -> 문 열기 메시지가 순서대로 도착할 보장이 없음 .
순차 행위자를 통해 메시지 순서를 보장 . 또는 타임 스탬프를 이용해 먼저 온 메시지를 처리
자료 주도적 디자인Data – Oriented Design
객체 지향적 씬 그래프( OOP - Scene Graph)
데이터 중심 씬 그래프( DOD - Scene Graph)
DOD 코드 예제
iCache - 600
m_postion - 600
m_mod - 600
~20 Cyh-cles
m_aimDir - 100
iCache - 600
m_postion - 600
m_mod - 600
~20 Cyh-cles
m_aimDir - 100
iCache - 600
m_postion - 600
m_mod - 600
~20 Cyh-cles
m_aimDir - 100
iCache - 600
m_postion - 600
m_mod - 600
~20 Cyh-cles
m_aimDir - 100
어느 클래스의 멤버 함수를 4 번 호출
7680ms 가 소요 됨
DOD 코드 예제
iCache - 600
positions - 600
mod - 600 Cycle ~20 airDir - 100
Cycle ~20
Cycle ~20
Cycle ~20
1980ms 가 소요 됨
DOD 의 장점 병렬화 캐쉬 친화적 최적화 모듈화
참고 Game Programming Gems 8 MultiProcessor Game Loop : Uncharted
2 Introduction to Data-Oriented Design :
Dice