Распараллеливание функции в разных портах с использованием OpenMP без барьера - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу запустить функцию 96 раз параллельно.Функция запускает сервер симулятора робота в указанном порту.

В этой программе я запускаю 24 потока 4 раза.Однако, с барьером, программа должна ждать завершения 24 потоков, чтобы продолжить.

Зная, что потоки имеют разное время выполнения.Когда требуется огромное время, это замедляет время выполнения.

Есть ли какой-либо другой способ заставить все 96 потоков (или серверов-роботов) выполняться одновременно, с учетом динамического разделения портов?

int id=0;

for(int i=0; i<4; i++)
{
    #pragma omp parallel 
    {
        #pragma omp sections
        {
            #pragma omp section 
            {
                function(id, 11369);// id of the robot, port
            }
            #pragma omp section
            {
                function(id+1, 11370);
            }
            //...
            //...
            //...
            #pragma omp section
            {
                function(id+23, 11393);
            }
        }
        #pragma omp barrier
        #pragma omp single
        {
            id=id+24;
        }
    }
}
...