intel compiler + openmp + x64
Posted: Mon Jun 17, 2013 1:07 pm
Добрый день!
Подскажите, что делать в такой ситуации:
Есть цикл, который распараллелен с помощью OpenMP
Например:
#pragma omp parallel for
for( int indexW = 0; indexW < w; indexW ++ )
{
BYTE &dst = img.at( indexW );
dst /= 2;
}
Вокруг него поставлены маркеры VMProtectBeginUltra.
для разработки использую visual studio 2008 + intel C++ composer XE 2011 Update 7.
Программа падает на этом цикле, если используется следующее сочетание:
1) платформа - x64
2) компилятор - intel
3) конфигурация - release
4) openmp включен
Во всех остальных вариантах - работает, то есть например, если исопльзовать компилятор из visual studio - все в порядке
архив с проектом, исходником и бинарниками.
https://www.dropbox.com/s/66dmahkfzgiov ... _clean.zip
На самом деле проблема была в реальном проекте, начал копать и оказалось, что даже в таком простом месте воспроизводится бага. В исходном проекте было немного по-другому. Там было два цикла, оба распараллелены через openmp. У одного именованный маркер сохранялся и был виден в GUI VMprotect, а у другого - маркер почему-то отображался неименованным. Ну и программа падала.
Подобные штуки у меня периодически всплывают и решать приходится перестановкой маркера или инструкций местами. Что я делаю не так? Или это бага компилятора/vmprotect?
Подскажите, что делать в такой ситуации:
Есть цикл, который распараллелен с помощью OpenMP
Например:
#pragma omp parallel for
for( int indexW = 0; indexW < w; indexW ++ )
{
BYTE &dst = img.at( indexW );
dst /= 2;
}
Вокруг него поставлены маркеры VMProtectBeginUltra.
для разработки использую visual studio 2008 + intel C++ composer XE 2011 Update 7.
Программа падает на этом цикле, если используется следующее сочетание:
1) платформа - x64
2) компилятор - intel
3) конфигурация - release
4) openmp включен
Во всех остальных вариантах - работает, то есть например, если исопльзовать компилятор из visual studio - все в порядке
архив с проектом, исходником и бинарниками.
https://www.dropbox.com/s/66dmahkfzgiov ... _clean.zip
На самом деле проблема была в реальном проекте, начал копать и оказалось, что даже в таком простом месте воспроизводится бага. В исходном проекте было немного по-другому. Там было два цикла, оба распараллелены через openmp. У одного именованный маркер сохранялся и был виден в GUI VMprotect, а у другого - маркер почему-то отображался неименованным. Ну и программа падала.
Подобные штуки у меня периодически всплывают и решать приходится перестановкой маркера или инструкций местами. Что я делаю не так? Или это бага компилятора/vmprotect?