20160308

동시성 프로그램의 이해
– Uniprocessor의 성능 한계에 도달했다는 것이 병렬 프로그램의 도입을 부추기고 있다. 1980~2000년대에는 매년 50%의 성능 향상이 있었음. 당시에는 기술의 발전으로 클럭 속도가 높아졌고 이것이 성능 향상으로 이어졌다. 그리고 Instruction-level Parallelism(ILP)를 활용해 명령어 내부의 병렬성을 사용하기도 했다. 그리고 캐시 시스템을 개선하기도 했다.
– 2000년대 중반부터 uniprocessor에서의 성능 개선은 멈추게 되었다. 클럭이 너무 높아졌고, 열이 너무 많이 발생했다. 그리고 에너지 절감에 대한 요구도 증가했다. 파이프라인을 더 깊게 할 수도 없었다. Diminishing return도 문제였다. Control dependence가 문제가 되었다. 5~7개의 명령어마다 branch instruction 있고, 이것이 성능 저하의 원인이 되었다. 메모리가 느리다는 것도 문제이다. Data dependence도 문제. 설계 복잡도가 높은 것도 문제. 아직도 여전히 uniprocessor의 성능을 높이고자 하는 시도는 있음. Out-of-order의 수준을 높이는 방식이 있었음. Instruction window를 늘리거나 superscalar를 늘리는 방식. Data-level parallelism을 높이려는 시도가 있었음.
– Uniprocessor 성능 향상에는 한계에 다다랐고, 멀티 코어를 통해 성능을 향상하고자 하는 시도가 많아졌다. 한 개의 코어에서 diminishing return을 얻기보다는, 여러 개의 코어를 두어 성능을 높이고자 하는 것. 이론적으로는 성능이 두 배가 되어야겠지만, 실제로는 그렇지 않다. 메모리 시스템이 코어의 수에 대해 확장성이 있지 않기 때문이고, 동기화가 문제이기도 하다.
– 한편, 멀티코어 전력 소모는 static + dynamic power로 이루어진다. Staic power가 같다고 할 때, 전력 소모는 V^2에 비례한다. 높은 frequency는 높은 voltage를 필요로 하고, 따라서 더 높은 dynamic power를 요구하게 된다.
– 프로세서 간 통신을 위해 두 가지 방법을 쓸 수 있다. Message passing은 프로세서끼리 메시지를 사용해 통신하는 것. Shared memory에서는 여러 개의 프로세서가 메모리를 공유함으로써 통신하는 것. Shared memory를 사용한 공유는 implicit하다는 특징이 있다. 따라서 언제 어떤 공유 메모리를 접근하는지 모른다는 문제가 있음. 많은 경우에 message passing 방식으로 통신을 하고 있음(MPI). 모든 슈퍼컴퓨터가 MPI를 통해 구현되어 있음. Shared memory multiprocessor는 한 개의 운영체제로 운영됨. Implicit communication이라는 특징이 있음. Implicit하기 때문에, load/store의 순서가 결정적이지 않을 수 있다는 문제가 있음. 따라서 이를 해결하기 위한 메커니즘이 필요함. MPI 방식에서는 이런 문제가 생기지 않음.
– 일반적으로 서버들은 두 개의 소켓을 갖는다. 한 개의 소켓은 공간 효율이 떨어지고, 네 개의 소켓은 너무 비싸다.
– 어플리케이션에 따라 프로세서 수 증가에 선형 이상의(superlinear) 성능 향상을 보이기도 함. 하지만 diminishing return 이 더 일반적이다.
– 바다에 대한 시뮬레이션을 네 개의 쓰레드로 한다면? 전체를 네 개의 파티션으로 나눠서 진행. 그렇다면 통신은 파티션 경계에서 일어날 것. 입자간 상호작용은 입자가 계속 움직이기 때문에 조금 더 어려워짐. Ray tracing은 ray 단위로 나눌 수 있을 것.
– Task, process, processor에 대한 개념. 전체 job을 여러 개의 task로 나누고, 이를 실제 프로세스에 할당한다. 그리고 프로세스간의 상호작용을 결정한다. 이후에 이를 프로세서에 올려 실제로 연산을 수행한다.

Advertisements
Tagged with: , , , , , , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 98,786 hits
%d bloggers like this: