Android ndk 如何在android本机代码中并行运行OpenMP?

Android ndk 如何在android本机代码中并行运行OpenMP?,android-ndk,openmp,Android Ndk,Openmp,我目前正在使用OpenMP的#pragma将Android应用程序的本机循环代码分发到并行线程,如下所示: #pragma omp parallel shared(variable1) shared(variable2) shared(variable3) private(array_1) private(array_1) private(array_1) { LOG(INFO) << "Running inside thread: " <<

我目前正在使用OpenMP的#pragma将Android应用程序的本机循环代码分发到并行线程,如下所示:

#pragma omp parallel shared(variable1) shared(variable2) shared(variable3) private(array_1) private(array_1) private(array_1)
{
    LOG(INFO) << "Running inside thread:  " << omp_get_thread_num();
    #pragma omp for
    for (int c = 1; c <= itrloopLim; c++) {
        ...
    }
}

我遇到了完全相同的问题,编译时没有错误,但应用程序在启动时立即崩溃

事实证明,您需要使用“-static openmp-fopenmp”标志。基本上,您的构建梯度必须如下所示:

    externalNativeBuild {
        cmake {
            arguments "-DANDROID_ARM_NEON=ON"
            cppFlags "-static-openmp -fopenmp"
        }

第一行是说您没有在机器上安装OpenMP运行时。。。(您可能需要libomp.so)。
    externalNativeBuild {
        cmake {
            arguments "-DANDROID_ARM_NEON=ON"
            cppFlags "-static-openmp -fopenmp"
        }