Так как никто не ответил в течение нескольких дней, я просто сообщу, что узнал самостоятельно:
Безопасна ли связь с обеими этими библиотеками?
Вот самая полезная страница, которую я нашел по этой теме:
http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/compiler_c/optaps/common/optaps_par_openmp_multiple_compilers.htm
Корпорация Intel рекомендует, чтобы, если вы собираетесь смешивать внутреннюю многопоточность OpenMP IPP с вашей собственной многопоточностью OpenMP, вы ссылаетесь на libiomp5 вместо библиотеки OpenMP вашего компилятора. Текущая версия libiomp5 обеспечивает «совместимость с исходным кодом и взаимодействие на уровне объекта» с OpenMP для gcc, но только если вы используете gcc «4.42» (sic; я предполагаю, что они имеют в виду 4.4.2) или более позднюю версию.
Есть ли способ узнать, какая версия OpenMP поддерживает libiomp5.so?
Да. Установите переменную среды KMP_VERSION = 1, затем запустите ваше приложение. Вы получите отладочный вывод, напечатанный libiomp5, на вашу консоль. Если вы используете IPP v7 или новее, одна строка будет выглядеть примерно так:
Intel(R) OMP API version: 3.0 (200805)
Если вы используете IPP 6, он не сообщит вам версию API, но сообщит, когда он был создан и с какой версией компилятора Intel. Затем вы можете проверить, какая версия OpenMP поддерживается этим компилятором. (11.0 была первой версией компилятора Intel, поддерживающей OpenMP v3.0.)