Q1
그러면 Multi-threading 기술은 여러 컴퓨터간 병렬처리는 어렵지만 하나의 CPU 안에서 Multi cores 사이에 병렬처리는 가능하다는 것인가요?
A1. DEVICE 는 FDTD 처럼 하나의 시뮬레이션파일을 여러 영역으로 쪼개어 사용을 할 수 없고 않고, 전체를 있는 그대로 시뮬레이션을 합니다. 따라서, FDTD 와 같은 의미의 distributed computing 이 적용되지 않습니다. 즉, multi-threading 은 distribute-computing (하나의 컴퓨터를 사용할 때는 multi-processing 과 같은 의미)과는 구분되는 기능입니다. 아래의 링크를 보면, multi-processing 과 multi-threading 의 차이점이 나와있습니다.
Q2
FDTD의 경우에는 Core 수가 증가하면 속도가 증가하다가 Core간 연산량의 증가로 어느 갯수 부터는 오히려 감소하는 경향을 보이는데…DEVICE에서도 사용 코어 갯수의 최적화된 값이 있는 것인가요?
A2. FDTD 의 경우에는 distributed computing 이 적용되어 그와 같은 core 수에 대한 관계가 있지만, DEVICE 는 distributed computing 이 적용되지 않습니다. 따라서, core 수의 영향을 동일한 관점에서 비교하기가 힘듭니다. 다만, thread 수는 manually 설정을 해줄 수 있는데, 기본설정에서와 같이 최대수의 thread 를 사용하는 것이 가장 효과적일 것으로 생각됩니다.
Q3
그리고 CPU를 한 개 더 달았을 때는 Multi computer를 사용하는 경우와 마찬가지가 되어서 Job을 분배할 수 없다라고 이해하면 되나요? (저의 상황을 예로들어 설명하면…제가 사용중인 workstation 에는 CPU 소캣 2개 RAM 소캣 16개로 되어 있는 메인 보드가 탑재되어 있는데 여기서 CPU 1개와 RAM 8개 만 구성해서 사용해오고 있다가…최근에 시뮬레이션 속도를 향상 시키고자 나머지 비어있는 소캣에 추가로 CPU 1개와 RAM 8개를 장착하였습니다. FDTD의 경우 속도가 2배 가까이 빨라졌습니다. Device는 속도 향상을 체감하기 어려웠습니다.)
A3. CPU 가 하나더 달려서 multi-computer 처럼 간주되어 distributed computing 이 되지 않는 것은 아니며, 이는 DEVICE 자체가 시뮬레이션 영역을 쪼개지 않고 있는 그대로 시뮬레션하도록 되어있는 software 자체의 한계성에서 비롯되는 것입니다.