다음 질문에 대해서는 2 개의 프로세서가있는 듀얼 코어 (프로세서 당 2 코어) 머신을 가정합니다. 총 4 개의 "코어"가 있습니다. 그래서 몇 가지 자연적인 질문 발생 :멀티 코어 시스템에서 다중 인스턴스 프로그램
가정하자 나는 각 실행에서 별개의 입력 데이터로, 간단한 시리얼 프로그램을 작성하고 내장, 말, 비주얼 스튜디오를 .. 그리고 말하자면, 두 번 같은 프로그램을 실행. 동일한 프로세서에서 실행되고 있습니까? 또는 별개의 프로세서? 얼마나 많은 RAM 메모리가 각각에 할당됩니까? 1 프로세서 (2 코어) 또는 총 RAM에 RAM 메모리가 있습니까? 두 프로그램은 별개의 프로세서에서 실행되며 각각 1 개의 프로세서 (2 코어)의 RAM 메모리가 있어야한다고 생각합니다. 하지만 나는 100 % 확실하지 않습니다. Linux에서 동작이 조금 다를 수 있습니까?
내 프로그램이 MPI와 같은 분산 메모리 병렬 인터페이스를 사용하여 작성되었다고 가정하고 np 인수 (예 :)에서 2 개의 프로세서로 한 번 실행했습니다. 프로그램에서 두 프로세서 (사실상 4 코어 모두)를 사용합니까? 이것은 -np 인수에 대해 최적의 값입니까? 즉, 내가 -np 3 또는 -np 4를 사용하여 동일한 작업을 수행했다면; 추가 이점이 없다고 가정하는 것이 맞습니까? 다시 생각해 보겠습니다. 그러나 나는 100 % 확실하지 않습니다. 나는 또한 내가 4보다 높을 수 있다고 가정한다 (-np 5, -np 6 등). 이러한 경우 프로세스가 np> 4 값에서 메모리를 확보하기 위해 어떻게 경쟁합니까? 성능이 np> 4보다 나빠질까요? 나는 그렇다고 생각합니다. 아마도 이것은 문제의 크기에 부분적으로 의존 할 것이지만, 100 % 확실하지는 않을 것입니다.
다음으로 MPI로 작성된 병렬 프로그램의 두 인스턴스 (각각 둘 다 다른 입력 데이터가있는 -np 2)를 실행했다고 가정합니다. 첫째로, 이것은 가능한가? 나는 그것이 양쪽 프로세서에서 각각 실행된다고 가정합니다. 두 프로그램은 어떻게 동기화되며 개별적으로 메모리를 어떻게 개별적으로 경쟁합니까? 이것은 적어도 프로그램을 시작하는 순서에 기초해야한다는 것입니다. 아마도?
마지막으로 내 프로그램이 OpenMP와 같은 공유 메모리 병렬 인터페이스를 사용하여 작성되었으며 한 번 실행했다고 가정합니다. 공유 메모리 병렬 처리를 최대한 활용하기 위해 얼마나 많은 "스레드"를 실행할 수 있습니까? 2 또는 4입니까? (이후 2 코어 2 코어 각각). 내 짐작으로 4 살이다. 4 개의 코어가 모두 단일 공유 메모리 장치의 일부이기 때문에? 그 맞습니까? 답이 4면; 4 개 이상의 스레드에서 실행하는 것이 합리적입니까? 나는 이것이 심지어 작동한다는 것을 확신하지 못한다. (MPI와는 달리, 우리가 할 수 있다고 믿는다. -np 5, -np 6 등등).
마지막으로 공유 메모리 병렬 프로그램의 인스턴스를 각각 다른 입력 데이터로 실행한다고 가정합니다. 이것이 가능하다고 가정하고 개별 프로세스가 어떻게 든 메모리 경쟁을 할 것이라고 가정합니다. 아마도 프로그램이 시작된 순서 일 것입니다.
@Cantos : 답변 해 주셔서 감사합니다. 하지만 좀 더 정교하게 신경 쓰겠습니까? 질문에는 세 가지 범주 (직렬, MPI 및 openMP)가 있었으며 첫 번째 대답에 답하는 것처럼 보입니다. 하지만 다시 한 번 감사드립니다! –
@Cantos : 나는 당신이 지금 편집 한 것을 본다. 어쨌든, 나는 그 긴 질문을 인정한다. 다시 한번 감사드립니다. –
@ user545591 : 가장 좋은 답변은 나만의 테스트에서 나옵니다. –