Device에서 mpi 기능

FDTD의 경우에는 Multicore workstation으로 시뮬레이션하면 MPI 기능으로 수행해 시간을 단축 시킬 수 있습니다(저의 경우 14core CPU를 하나 사용하다가 2개의 CPU를 사용했더니 시간이 반으로 줄어 들었습니다.).

DEVICE Charge Solution을 이용할 때는 MPI 기능을 사용할 수 없나요? (DEVICE Charge Solution 시간이 너무 오래 걸립니다;:wink: (예를 들면 다음 예제를 Device Charge Solution에서 수행했을 때… https://kb.lumerical.com/en/pic_modulators_interleaved_junction_microring.html --> interleaved_modulator.ldev)

아래의 링크는 FDTD와 varFDTD의 경우에만 MPI 기능을 사용할 수 있는 것 처럼 나옵니다.
https://kb.lumerical.com/en/user_guide_run_linux_solver_command_line_mpi.html

DEVICE Charge Solution 사용 시, Multicore workstation에서 CPU수를 늘리더라도 이점이 없나요?

감사합니다.

유상화 드림

FDTD 와 varFDTD 는 하나의 시뮬레이션 파일에서 시뮬레이션 영역을 쪼개어 multi-cores 나 multi-computers 에서 MPI 를 이용하여 distributed computing 을 하는 것이 효율적입니다. 하지만, DEVICE, HEAT, EME, FDE 등 Lumerical 의 다른 제품은 이런 형태의 distributed computing 에 적합하지 못한 특성을 가지고 있어서, 이들 제품에서는 MPI 가 적용되지 않고 있습니다.


대신, 이들 제품에서도 multi-threading 을 이용하여 CPU 의 multicore 를 활용을 할 수 있는데, 사용하는 mesh 와 algorithm 상의 차이로 인해, FDTD 의 MPI 를 이용한 경우만큼 속도면에서 큰 차이를 보지 못할 수도 있습니다.

너무나도 자세한 설명 감사합니다.
답변에서 애매한 부분이 있어서 추가 설명을 요청 드립니다.

위 설명은 하나의 CPU 안에서 Multiple cores 사용함에 따른 이점이 있는데…이건 MPI 테크닉은 아니고 Multi-threading 이고…Multi-threading은 Multi computer에 하나의 Job을 분배할 수 없다는 설명인데요…

질문1. 그러면 Multi-threading 기술은 여러 컴퓨터간 병렬처리는 어렵지만 하나의 CPU 안에서 Multi cores 사이에 병렬처리는 가능하다는 것인가요?
질문2. FDTD의 경우에는 Core 수가 증가하면 속도가 증가하다가 Core간 연산량의 증가로 어느 갯수 부터는 오히려 감소하는 경향을 보이는데…DEVICE에서도 사용 코어 갯수의 최적화된 값이 있는 것인가요?
질문3. 그리고 CPU를 한 개 더 달았을 때는 Multi computer를 사용하는 경우와 마찬가지가 되어서 Job을 분배할 수 없다라고 이해하면 되나요? (저의 상황을 예로들어 설명하면…제가 사용중인 workstation 에는 CPU 소캣 2개 RAM 소캣 16개로 되어 있는 메인 보드가 탑재되어 있는데 여기서 CPU 1개와 RAM 8개 만 구성해서 사용해오고 있다가…최근에 시뮬레이션 속도를 향상 시키고자 나머지 비어있는 소캣에 추가로 CPU 1개와 RAM 8개를 장착하였습니다. FDTD의 경우 속도가 2배 가까이 빨라졌습니다. Device는 속도 향상을 체감하기 어려웠습니다.)

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 자체의 한계성에서 비롯되는 것입니다.