OpenMPI를 사용하여 서로 다른 노드에서 실행하려는 mutlithreaded 응용 프로그램 (병렬이 아님)이 있습니다.노드에서 코어 1 개만 사용하는 OpenMPI상의 스레드 응용 프로그램
노드에서 응용 프로그램을 실행할 때 CPU 사용률이 300 %가됩니다 (맨 위 명령). 나는 이것이 3 개의 프로세서가 100 % (4 코어 노드) 사용된다는 것을 가정합니다.
OpenMPI를 사용하여 동기화 된 동일한 프로세스를 실행할 때 CPU 사용률이 100 % 밖에되지 않습니다. 이는 모든 스레드가 노드의 CPU 1 개에 국한된다는 의미입니다.
노드에서 예약 된 1 개의 작업에 대해 노드의 모든 CPU를 사용하도록 프로그램을 만들 수있는 방법이 있습니까?
OMP_NUM_THREADS를 보았지만 도움이되지 않습니다. OpenMPI가 자체 스레드를 생성하여 작업을 창출 할 때 사용되는 것 같습니다.
너무 많은 문제없이 MPI 응용 프로그램 내에서 openMP 스레드를 생성 할 수 있어야합니다. OMP_NUM_THREADS 시도를 언급했지만 코드 내에서'omp_set_num_threads (4)'를 사용해 보았습니다. MPI 환경이 OMP_NUM_THREADS (그냥 추측)를 망칠 수 있습니다. –