OpenMP 在NDK中使用

2023-05-21,,

最近在用NDK R9编译so,打开-fopenmp

LOCAL_CFLAGS += -pie -fPIE  -shared  -fopenmp
LOCAL_LDFLAGS += -pie -fPIE -shared  -fopenmp
后运行core dump

openmp 在android上crash的解决方案

http://www.cnblogs.com/octave/p/5942907.html

这是个GOMP已知的问题,参见 bug42616, bug52738。如果在非主线程上使用openmp指令或者函数,会crash。这是因为在android上gomp_thread(libgomp/libgomp.h文件中)函数对于用户创建的线程返回NULL 

解决方法: 将#pragma omp parallel for 运行在主线程

其他解决方式未试

在mk中去掉 $(LOCAL_PATH)/collage_polygon.cpp
$(LOCAL_PATH), 编译出来so 速度有很大提升,不知道是否是ndk隐藏bug

《OpenMP 在NDK中使用.doc》

下载本文的Word格式文档,以方便收藏与打印。