Когда вызывается функция, вызывается ли она несколько раз, особенно в цикле?Вопрос немного расплывчатый - может быть, да (он вызывается тысячи раз в каждом из нескольких сотен несвязанных мест -> миллионов) или, возможно, нет (он вызывается один раз в каждом из ста несвязанных мест, и вы попадаете в эти части кодатысячи раз -> миллионы).
В первом случае, тогда да, распараллеливание «карты», то есть независимое применение функции к множеству случаев, очень просто и очень хорошо OpenMP.
Во втором случае, если функция вызывается миллион раз, но каждый раз один раз, тогда нет.Там есть повтор выполнения, но нет выставленного параллелизма ;нет списка задач, которые должны быть выполнены одновременно, и которые могут быть выполнены независимо.Все, что вы можете сделать там, если функция, вероятно, будет вызываться с повторяющимися параметрами, это использовать мемоизацию, которая представляет собой компромисс между временем памяти и вычислений, а не методом распараллеливания.
Во втором случае этоможет случиться так, что вы можете реструктурировать код так, чтобы одновременно выполнялась куча этих вызовов функций, открывая параллелизм и позволяя распараллеливать, но это не то, что OpenMP (или любая модель параллельного программирования) может автоматически сделать для вас,