Я укажу пару очевидных вещей:
1.) double EV = 0;
объявляется вне внешнего цикла. Поэтому оно будет доступно всем потокам. Таким образом, у вас будет состояние гонки при EV = myEVFunc();
и при каждом доступе к EV
.
Решением этого является объявление его внутри цикла. Это сделает его приватным для каждого потока.
#pragma omp parallel for
for(short a1 = 1; a1 <= 6; ++a1)
{
++myArray[a1-1];
if(....)
{
--myArray[a1-1];
continue;
}
double EV = myEVFunc();
if(EV...)
...
2.) Другая (сортирующая) проблема заключается в том, что ваш внешний цикл имеет только 6 итераций. Таким образом, вы не получите более 6 потоков. Кроме того, вы можете получить проблемы с балансировкой нагрузки, скажем, с 4 ядрами ...