C 使用OpenMP并行化if-else语句
因此,我有下面的并行代码,我想知道是否可以分配单独的线程来使用OpenMP运行if和else语句,从而加快进程C 使用OpenMP并行化if-else语句,c,openmp,C,Openmp,因此,我有下面的并行代码,我想知道是否可以分配单独的线程来使用OpenMP运行if和else语句,从而加快进程 for(i=1; i<=NI; i++) { for(j=1; j<=NJ; j++) { x = rand()/((float)RAND_MAX + 1); if(x < 0.5) { old[i][j] = 0; } else { old[i][j] = 1;
for(i=1; i<=NI; i++) {
for(j=1; j<=NJ; j++) {
x = rand()/((float)RAND_MAX + 1);
if(x < 0.5) {
old[i][j] = 0;
} else {
old[i][j] = 1;
}
}
}
for(i=1;i为什么要这样做?代码不会同时运行如果
分支,它会运行第一个分支或其他分支
一个分支。使用omp parallel for
来并行循环
#pragma omp parallel for private(i,j,x) shared(old)
for(i=1; i<=NI; i++) {
for(j=1; j<=NJ; j++) {
x = rand()/((float)RAND_MAX + 1);
if(x < 0.5) {
old[i][j] = 0;
} else {
old[i][j] = 1;
}
}
}
#专用(i,j,x)共享(旧)的pragma omp并行
对于(i=1;i为什么要这样做?代码不会同时运行,如果
分支,它会运行第一个分支或其他分支。使用omp parallel for
来并行循环
#pragma omp parallel for private(i,j,x) shared(old)
for(i=1; i<=NI; i++) {
for(j=1; j<=NJ; j++) {
x = rand()/((float)RAND_MAX + 1);
if(x < 0.5) {
old[i][j] = 0;
} else {
old[i][j] = 1;
}
}
}
#专用(i,j,x)共享(旧)的pragma omp并行
对于(i=1;i为什么要这样做?代码不会同时运行,如果
分支,它会运行第一个分支或其他分支。使用omp parallel for
来并行循环
#pragma omp parallel for private(i,j,x) shared(old)
for(i=1; i<=NI; i++) {
for(j=1; j<=NJ; j++) {
x = rand()/((float)RAND_MAX + 1);
if(x < 0.5) {
old[i][j] = 0;
} else {
old[i][j] = 1;
}
}
}
#专用(i,j,x)共享(旧)的pragma omp并行
对于(i=1;i为什么要这样做?代码不会同时运行,如果
分支,它会运行第一个分支或其他分支。使用omp parallel for
来并行循环
#pragma omp parallel for private(i,j,x) shared(old)
for(i=1; i<=NI; i++) {
for(j=1; j<=NJ; j++) {
x = rand()/((float)RAND_MAX + 1);
if(x < 0.5) {
old[i][j] = 0;
} else {
old[i][j] = 1;
}
}
}
#专用(i,j,x)共享(旧)的pragma omp并行
对于(i=1;i删除if-else子句并使用old[i][j]=1-x=0.5
;删除if-else子句并使用old[i][j]=1-x=0.5
;删除if-else子句并使用old[i][j]=1-x=0.5
;删除if-else子句并使用old[i][j]=1-x=0.5
;。也可以使用old[i][j]=1在没有条件分支的情况下执行此操作-x@Zboson只是风格问题。没有理由我会在我的答案中纠正OP的编程风格。生成的程序集是相同的。程序集是相同的?这很有趣(+1)。我没有弄错编译器。@Zboson我使用godbolt.org进行简化测试,您的结果可能会有所不同。也可以使用old[I][j]在没有条件分支的情况下执行此操作=1-x@Zboson只是风格问题。没有理由我会在我的答案中纠正OP的编程风格。生成的程序集是相同的。程序集是相同的?这很有趣(+1)。我没有弄错编译器。@Zboson我使用godbolt.org进行简化测试,您的结果可能会有所不同。也可以使用old[I][j]在没有条件分支的情况下执行此操作=1-x@Zboson只是风格问题。没有理由我会在我的答案中纠正OP的编程风格。生成的程序集是相同的。程序集是相同的?这很有趣(+1)。我没有弄错编译器。@Zboson我使用godbolt.org进行简化测试,您的结果可能会有所不同。也可以使用old[I][j]在没有条件分支的情况下执行此操作=1-x@Zboson只是风格问题。我没有理由在回答中纠正OP的编程风格。生成的程序集是相同的。程序集是相同的?这很有趣(+1)。我没有弄错编译器。@Zboson我使用godbolt.org进行简化测试,结果可能会有所不同。