2016-11-02 2 views
4

일반 컨텍스트 : 내가 해결사 FORTRAN90로 작성된 상당히 큰 비어 - 스톡스 (유한 차분)을 개발 한줄리아 병렬 속도 향상 성능

. 그것은 적응 형 그리드 (따라서로드 밸런스 문제)를 가지고 있으며 병렬화하기 위해 다양한 기술 (MPI, OpenMP & OpenMP-MPI hyrbid)을 시도했습니다. 그러나, Amdahl의 법칙에 따르면 병렬 계산에서는 96-97 %의 계산을 수행합니다. 또한 메쉬의 일반적인 크기는 2 억 포인트이며, 나중에 증가해야합니다.

검색어 : 그것을 유지하고 기존 코드에 추가 기능을 추가하는 것은 매우 지루한 될 이후 지금

, 나는, 줄리아로 전환 할 생각입니다.

문제는 줄리아의 병렬 성능에 대한 좋은 대답을 찾을 수 없다는 것입니다. 나는 많은 인터넷을 보았을뿐만 아니라 인터넷을 검색했다. 대부분의 사람들은 Julia가 병렬 컴퓨팅에 매우 적합하다고 말하면서 일부는 직렬 코드에 비해 경과 시간의 감소를 보여주는 막대 차트를 제공하기도합니다. 그러나 일부 답변/동영상은 상당히 오래된 것이므로이 새로운 언어의 성격이 높아짐에 따라 조금 신뢰할 수 없습니다.

따라서 언어가 수천 개의 코어까지 확장 될 수 있는지 알고 싶습니다.

추가 정보 :

은 여전히 ​​천 개 코어의 몇 선형에 가까운 성능을 달성하기 위해 기존 코드의 속도 향상을 개선하기 위해 열심히 노력하고 있습니다. 해답은 겹침 지점을 타임 스텝 당 3-4 번 교환해야합니다. 따라서 엄청난 통신 오버 헤드가 발생합니다. 그러나 코드의 비 적응 그리드 버전은 최대 20k 코어를 쉽게 확장합니다.

필자는 Julia가 데이터 통신에 InfiniBand 표준을 병렬로 사용하지 않는다는 것을 읽었습니다.

+0

아니지만 도움이 될 수도 있습니다 : [병렬 줄리아의 사용 사례] (http://link.springer.com/chapter/10.1007/978-3-319-32152-3_17). 그것을 Google 학자를 사용하여 발견했습니다. 불행히도, paywalled입니다 –

+0

@FelipeLema 감사합니다! 흥미로운 기사입니다. 그러나, 당신이 옳게 말했듯이 그것은 질문에 대답하지 않습니다. – Soni

답변

1

다음은 pde 제약 매개 변수 추정 문제에 대한 스케일링 결과이지만 관심있는 코어의 수와 거의 일치하지 않습니다. https://arxiv.org/abs/1606.07399. 수천 개의 코어에 대한 예제는 보지 못했습니다.

기본적으로 Julia는 노드 내의 통신 및 노드의 TCP/IP에 공유 메모리를 사용하므로 기본적으로 infiniband가 지원되지 않습니다. 그러나 언어는 사용자 지정 전송을 구현할 수 있으며 누군가가 어떤 시점에서 infiniband 지원을 추가한다고 생각하지만 빠른 Google 검색으로 구현을 찾을 수 없습니다.