我想做的是
我正在编写C/c++代码,以构建适用于所有平台(IOS/Android/Windows(移动的/桌面)/Mac/Linux)的产品
"我都做了些什么"
是的,有许多在线链接谈论OpenMp与不同处理器和操作系统的兼容性,但很难从中得出合乎逻辑的结论,因为许多都是老文章或帖子,特别是针对移动的目标的。
参考编号:Link
根据我的分析,是的,openMp可以与所有桌面操作系统(Windows/Mac/Linux)一起工作,现在几乎所有的电脑都有多核处理器。所以根本不会有任何问题。
有人能帮我找到以下问题的答案吗?
1.OpenMP是否可与苹果设备(iPad/iPhone)兼容?如果是,是否有任何特定设备与OpenMP不兼容?似乎OpenMP在Xcode 4.4之前一直在IOS中处于活动状态。但是,在最新版本的xcode中,我无法看到任何OpenMP选项。例如:Link
1.我希望所有高端Android手机都有1个以上的内核和基于ARM的。根据我的信念,openMp应该在NDK构建的帮助下与Android平台一起工作。我的理解正确吗?
3条答案
按热度按时间omjgkv6w1#
我不能回答1。因为我没有任何ios设备,也没有开发环境。
关于2.是的,所有高端安卓设备都有1个以上的内核。实际上,即使是低端安卓设备也很难找到只有1个内核的。但并不是所有安卓设备都是基于arm的,也有双核和四核x86和x86_64设备以及arm 64-v8 a设备。
NDK支持所有这些架构,从第9版开始也支持openmp。使用gcc(默认为编译器),并在 Android.mk Makefile中将
-fopenmp
添加到NDK模块的CFLAGS和LDFLAGS中:06odsfpq2#
xcode clang没有包含openmp,但是你可以用-Xpreprocessor -fopenmp自己构建。
iq3niunx3#
iOS中没有对OpenMP的官方支持,但通过
-Xclang -fopenmp
标志,我们可以在Apple的Clang中启用隐藏的OpenMP支持。不幸的是,苹果没有提供库也,你可能会注意到
brew install libomp
提供给你一个libomp.a
,但这是为macOS编译,你不能链接到iOS应用程序。因此,我们需要自己编译它以用于iOS:
上面的代码将创建一个静态库
libomp.a
,下面是我创建一个支持iOS和iPhone模拟器的
OpenMP.xcframework
的实现:https://github.com/flyinghead/flycast/pull/805/