我试图使用OpenMP在函数中并行化这个for循环,但是当我编译代码时,仍然有一个错误=(
错误1错误C3010:‘返回’:跳出OpenMP结构化块不允许。
我正在使用Visual 2010 C++编译器。有谁可以帮我?我很感激你的建议。
int match(char* pattern, int patternSize, char* string, int startFrom, unsigned int &comparisons) {
comparisons = 0;
#pragma omp for
for (int i = 0; i < pattern
我开发了一个分布式内存MPI应用程序,它涉及网格的处理。现在我想用OpenMP应用共享内存技术(本质上是一个混合并行程序),看看它是否能变得更快,或者更高效。我很难使用OpenMP,特别是使用嵌套的for循环。我的应用程序包括每隔半秒钟将网格打印到屏幕上,但是当我用OpenMP并行它时,执行速度会慢10倍,或者根本不执行。控制台屏幕滞后并刷新自己的随机/意外数据。换句话说,这是完全错误的。看看下面的函数,它用于打印:
void display2dGrid(char** grid, int nrows, int ncolumns, int ngen)
{
//#pragma omp pa
我有一个带有C++的OpenMP程序。在并行区域中存在包含#pragma omp task的并行区域。现在,我想知道如何根据任何正在运行的线程满足的条件来终止并行区域。
#pragma omp parallel
{
#pragma omp task
{
//upon reaching a condition i would like to break out of the parallel region. (all threads should exit this parallel region)
}
}
我正在写一些代码,这将肯定受益于试图集成openmp的一些软件,我正在编写。我是openmp的新手,在测试一些非常基本的测试代码时(见下文),我注意到在激活openmp的情况下执行时间非常长(#杂注行)。任何洞察力都是非常值得欣赏的。
int main()
{
int number=200;
int max = 2000000;
for(int t=1; t<max; t++)
{
double fac = 0.0;
#pragma omp parallel for reduction(+:fac)
for(int n=
我正在尝试在OpenMP中并行化一个基于范围的for循环,方法是使循环的每次迭代都成为一个OpenMP段。我想这样做:
#pragma omp parallel sections
{
for ( auto x : range ) {
#pragma omp section
// LOTS OF CODE HERE
}
}
然而,这并不起作用--编译器抱怨这个节必须在#杂注omp节构造中。是我做错了什么,还是OpenMP不够聪明,不能理解这一部分在for循环中?