현재 산란 문제의 해결을 위해 도메인 분해 방법을 개발 중입니다. 기본적으로 Helmholtz BVP 시스템을 반복적으로 해결하고 있습니다. 삼각 메쉬 또는 사면체 메쉬에 유한 요소 방법을 사용하여 방정식을 이산합니다. 박사 학위 논문에 대한 코드를 개발 중입니다. 나는 deal.ii 또는 DUNE와 같은 기존의 유한 요소 라이브러리를 알고 있으며 영감을주는 디자인과 API로 학습 목적을 위해 훌륭하다고 생각하지만 작은 응용 프로그램을 처음부터 개발하고 싶었습니다.
직렬 버전을 실행하고 있고 병렬화하려는 시점에 있습니다. 결국, 최소한 원칙적으로 병렬화하기 쉬운 알고리즘을 공식화하는 것이 도메인 분해 프레임 워크의 장점 중 하나입니다. 그러나 실제로는 고려해야 할 많은 세부 사항이 있습니다. 메시 관리도 그 중 하나입니다. 응용 프로그램이 많은 CPU로 잘 확장되는 동안 높은 해상도를 얻으려면 모든 CPU에서 전체 메시를 복제하는 것이 비효율적입니다.
고성능 컴퓨팅 환경에서 유사한 응용 프로그램을 사용하는 개발자에게이 문제를 처리하는 방법을 문의하고 싶었습니다.
분산 메쉬 관리를위한 p4est 라이브러리가 있습니다. 균일 한 메쉬 만 사용하는 데 관심이 있고 삼각 메쉬를 다듬을 수 있는지 확실하지 않기 때문에 AMR이 필요하지 않으므로 과잉이 될 수 있습니다. 또한 균일 한 메쉬를 만든 다음 메쉬 파티 셔너 중 하나에 공급하고 출력의 사후 처리를 수행 할 수도 있습니다.
가장 간단한 방법은 특정 파티션과 관련된 메시 정보를 포함하는 각 파티션에 대해 별도의 파일을 만드는 것 같습니다. 이 파일은 단일 CPU에서 읽을 수 있으며,이 CPU는 메시의 해당 부분에 개별 시스템의 조립을 담당합니다. 물론 일부 글로벌 파티션 연결 / 이웃 정보도 프로세스 간 통신을 위해 모든 CPU에서 읽은 파일에 저장해야합니다.
다른 어떤 접근법이 있습니까? 여러분 중 일부가 공유 할 수 있다면, 업계에서 일반적으로 사용되는 방법 또는이 문제를 처리하는 데 관련된 정부 연구 기관은 무엇입니까? 나는 병렬 유한 요소 솔버를 프로그래밍하는 것에 익숙하지 않아서이 문제에 대해 올바르게 생각하고 있는지 여부와 다른 사람들이 어떻게 접근하고 있는지 느끼고 싶었습니다. 관련 연구 기사에 대한 조언이나 조언은 대단히 감사하겠습니다!
미리 감사드립니다!