c++ - 我如何在android studio中使用openmp

标签 c++ android-ndk openmp

我使用 android-ndk-r10d 在 android studio 中使用 C++ 进行编码。现在我想使用 openmp 并将代码添加到 Android.mk 中:

LOCAL_CFLAGS += -fopenmp
LOCAL_LDFLAGS += -fopenmp

并将代码添加到 myapp.cpp 中:

#include <omp.h>
#pragma omp parallel for
for(int i = 1, ii = 0; i < outImage[0]->height; i+=2, ii = i>>1) {
 /* Do work... */
}

但是 gradle 构建完成时出现错误只是因为 [#pragma omp parallel for] 我该如何处理语法错误?

最佳答案

可能是编译器不喜欢 for() 语句的复杂结构。 OpenMP 喜欢提前知道步数。我也怀疑 OpenMP 可以处理 2 个循环变量(i 和 ii)。尝试一个具有固定限制的简单循环,例如

int kmax = (outImage[0]->height - 1) / 2; // not sure this is right

#pragma omp parallel for
for( int k=0; k<kmax; k++)
{
    int i=k*2 + 1; // not sure this is right
    int ii = i>>1;
    /* Do work ... */
}

关于c++ - 我如何在android studio中使用openmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31715060/

相关文章:

c++ - 尝试在 C++ 中打开浏览器

c++ - 存储点的四叉树移动

c++ - 组装的 C++ 似乎包含多余的指令

android-ndk - 如何在android(NDK)中建立c-ares库

OpenMP,taskwait 是否意味着刷新

c - 是否可以在没有线程0的情况下运行omp?

c++ - 压入 STL 堆栈是通过引用传递的,但是堆栈是否复制了值?

android - 在 Android : undefined function assert 上编译 C++ 程序

android - 将 C++ 添加到 Android Studio 2.2

c++ - OpenMP 并行化停止工作