Я использую MPI для своего кода C ++ для распараллеливания function1
, который сам вызывается несколько раз в цикле.Внутри этой функции большинство распределенных задач занимают одинаковое время вычислений, за исключением одной «большой» задачи, которую я буду называть taskL
в следующем.К сожалению, это taskL
в основном последнее задание в моем function1
.Для решения taskL
я включил библиотеку Fortran, которая сама распараллеливается внутри.Таким образом, когда я выполняю свою программу параллельно, первая часть function1
становится быстрее, а моя taskL
решается медленнее, поскольку каждый работник решает taskL
теперь только на одном ядре.В целом это делает всю программу еще медленнее.
Мой подход к решению этой проблемы состоял в том, чтобы вызывать функцию решения taskL
только от корневого работника, но она все еще не использует ЦП, предоставленный ведомым.
Итак, у меня есть два вопроса:
- Есть ли способ «сообщить» MPI, что root может использовать мощность ЦП ведомых устройств?
- ИлиЕсть другой подход к решению этой проблемы (или эта проблема просто не подходит для использования MPI)?
Надеюсь, я смог объяснить проблему понятным способом.