Будучи уверенным, что mpi разделил работу между ядрами


Как вы знаете, mpi может запускать множество процессов, даже если есть только один процессор с одним ядром. Допустим, у меня есть двухъядерный одноядерный процессор. Если я запускаю программу с mpiexec.mpich -np 2 ./out, как я могу быть уверен, что работа была разделена между двумя ядрами?

1 2

1 ответ:

Вероятно, самый простой способ для вас подтвердить, что вы работаете на обоих ядрах, - это сделать что-то вроде плотного цикла while, который увеличит использование процессора:

#include <mpi.h>

int main(int argc, char** argv)
{
    MPI_Init(&argc, &argv);

    while(1) {}
}

Затем вы можете посмотреть на ваше использование с чем-то вроде top, чтобы убедиться, что это то, что вы ожидаете.

Если вы хотите иметь четкий контроль над тем, где выполняются ваши процессы, MPICH имеет варианты, позволяющие вам это сделать. Вы можете узнать все параметры на странице wiki . Есть флаги, которые можно связать. для ядер, аппаратных потоков, сокетов и т. д.