Можно ожидать небольшого выигрыша во втором, потому что каждый является форком / объединением (или функциональным эквивалентом) потоков OMP дважды, а не один раз. Имеет ли это какое-то реальное значение для вашего кода - эмпирический вопрос, на который лучше всего отвечают измерения.
Второй также может иметь более существенное преимущество, если работа в двух циклах независима, и вы можете запустить второй в любое время, и есть причина ожидать некоторого дисбаланса нагрузки в первом цикле. В этом случае вы можете добавить предложение nowait
к первым t omp for
и, вместо того, чтобы все потоки ожидали окончания цикла for, тот, кто сделал первый, может немедленно перейти к работе над вторым циклом. Или можно поместить два блока кодов каждый в section
или task
. В общем, вы имеете большой контроль над тем, что делают потоки и как они это делают в параллельном разделе; тогда как когда вы заканчиваете параллельный раздел, вы теряете эту гибкость - все должно объединиться, и все готово.