MPI에 대한 기본적인 질문이 있습니다. MPI와 여러 프로세스에 익숙하지 않으므로이 점에 대해 나와 함께 알려주십시오. 나는 MPI (Boost 라이브러리 사용)를 광범위하게 사용하여 병렬 작업을 허용하는 C++ (RepastHPC)의 시뮬레이션 환경을 사용하고 있습니다. 특히, 시뮬레이션은 각각의 클래스 (예 : 에이전트)의 여러 인스턴스로 구성되며, 서로 상호 작용하고 정보를 교환해야합니다. 이제 다중 프로세스에서 발생합니다 (MPI에 대한 기본적인 이해가 있음). 자연스런 질문이나 두려움은 서로 다른 프로세스의 에이전트가 서로 연결할 수 없기 때문에 더 이상 상호 작용하지 않는다는 것입니다 (이것은 MPI의 전체 개념과 상반됩니다).MPI 기본 정보
설명서를 읽은 후에 Boost.MPI의 사용 가능한 라이브러리 (위의 언급 패키지의 라이브러리)가 모든 통신 및 패키지를 프로세스간에 앞뒤로 전송합니다. 즉 각 프로세스 다른 프로세스의 인스턴스 복사본을 가지고 있습니다 (이것은 값으로 호출하는 형식입니다. 원래 인스턴스는 복사본 만있는 프로세스에서 변경할 수 없습니다). 그런 다음 업데이트가 수행되어 복사본 인스턴스의 원본은 원본과 동일한 정보를 가지고 있습니다.
즉, 시뮬레이션의 최종 결과에 관해서는 하나의 프로세스에서 전체 작업을 수행하는 것과 같습니다. 다르게 말해서, 다중 프로세스는 단지 속도를 높이고 시뮬레이션의 디자인을 변경하지 않기 때문에 (따라서 나는 그것에 대해 걱정할 필요가 없다)?
여러 프로세스에서 실행할 때 올바른 결과를 만들어야하는 병렬 실행 용 소프트웨어를 제작하는 모든 사람에게 설계 목표가됩니다. 당신이 참조하는 소프트웨어가 이러한 목표를 달성했는지 이해하기 위해 어떤 테스트를 실행 했습니까? 물론 직렬 실행의 결과를 사용하여 병렬 실행의 결과를 확인하는 것은 직렬 실행 자체가 올바른 결과를 산출한다는 확신에 달려 있습니다. –
빠른 응답을 보내 주셔서 감사합니다. 처음에는 문제를 잘못 들었고 현재 소프트웨어를 사용하지 않고 있으므로 더 많이 사용하고 있으므로이 시점까지는 어떤 테스트도 실행하지 않았습니다. 그러나 이것은 확실히 좋은 출발점입니다.나는 소프트웨어 설계자들이 제대로 일을했다는 것에 의심의 여지가 없다. 내 질문은 소프트웨어의 일반적인 목적이 직렬 실행에서와 같이 병렬 실행에서 동일한 결과를 얻는 것이 아닌지에 관한 것이다. – Tartaglia
테스트에 대해서는 생각할 수있는 방법 중 하나입니다. 제대로 작동하는지 확인하려면 다음과 같이하십시오. 1. 두 개의 사과로 된 두 개의 에이전트 (ID 1, ID 2)를 만들고 두 명의 에이전트 (ID 3, ID 4)는 각각 두 개의 오렌지를 부여받습니다. 2. 각 요원이 요원 목록을 살펴보고 누군가 다른 열매를 맺을 때마다 요원에게 제공하십시오. – Tartaglia