#pragma omp critical
{ labelA: ... }
...
#pragma omp critical
{ labelB: ... }
Пусть поток 1 выполняет оператор, помеченный меткой labelA.
Может ли поток 2 войти во вторую критическую секцию, т.е. приступить к выполнению оператора, помеченного меткой labelB?for( ... ; ... ; ... )
for( ... ; ... ; ... ) {
…
}
}
без информационной зависимости их итераций друг от друга формально можно преобразовать в функцию-ядро CUDA?for( ... ; ... ; ... ) {
…
}
без информационной зависимости итераций друг от друга формально можно преобразовать в функцию-ядро CUDA?clerr = clEnqueueNDRangeKernel(
qE, // queue1 - очередь
kernel, // запускаемое ядро
2, // количество измерений сетки потоков
NULL, // в стандарте этот аргумент пока не задействован
{ 1000, 1000}, // размерности сетки потоков по ее измерениям
{ 32, 32 }, // размерности группы потоков по ее измерениям
0, NULL, &kEvent // связь с событиями не задана
);