Я хочу знать поведение компилятора VC++ с /openmp. Я использую стороннюю библиотеку (OpenMVG), которая поставляется с cmakefilelist. Поэтому я сгенерировал решение Visual Studio для его компиляции. CMake распознает возможности openmp компилятора, и в VS все компилируется нормально. Но когда дело доходит до выполнения, я получаю разные результаты каждый раз, когда запускаю программу. А если я запускаю 2 экземпляра программы одновременно, то результаты еще хуже. Поэтому я немного заглянул в исходный код и обнаружил, что openmp используется с итераторами списка и карты.
#pragma omp parallel
for (Views::const_iterator iter = sfm_data.GetViews().begin(); iter != sfm_data.GetViews().end() && bContinue; ++iter)
{
pragma omp single nowait
{
... process ...
}
}
Я искал в Интернете, и кажется, что Visual Studio поддерживает только openMP 2.0. Так поддерживает ли он итераторы списков? Может ли это быть проблемой? Как openMP 2.0 ведет себя с итераторами списка?
Заранее спасибо за любой ответ
single
. Рассматривали ли вы возможность подать заявку на GitHub? - person Hristo Iliev   schedule 19.12.2016