【问题标题】:OpenMP on iOS/AndroidiOS/Android 上的 OpenMP
【发布时间】:2012-02-28 09:31:32
【问题描述】:

跨平台的 GCC 支持 OpenMP……但这是否意味着所有目标平台都支持 OpenMP?具体来说,iOS 和 Android**...随着手机/平板电脑转向四核,在游戏中不使用所有内核将是一个巨大的劣势。

** 作为一个非移动开发者,我不知道你是否可以为 Android 编写 C++ 应用程序?

【问题讨论】:

    标签: android c++ ios cross-platform openmp


    【解决方案1】:

    情况不一定如此。示例:http://groups.google.com/group/android-ndk/browse_thread/thread/a547eac5446035b4?pli=1

    并非所有目标 GCC 平台都支持 OMP。它当然不适用于 Gameboy Advance,例如,即使 GCC 可以针对 ARM/Thumb 架构。

    在 iOS 方面,我不确定是否支持 OMP,但 Apple 可能会强烈鼓励使用他们的 Grand Central Dispatch 库,专注于异步任务队列(Apple 确实以理想的方式推动了该库)应用程序永远不应停止并显示加载图标,这与仅用于加速顺序处理的并行循环完全不同。

    作为一名非移动开发人员,我不知道您是否可以编写 C++ 应用程序 首先是安卓?

    是的,带有 Android NDK 的 C 和 C++ 是支持构建原生 Android 应用程序的两种语言,而 iOS 专注于 C、C++ 和 Objective-C。

    【讨论】:

    • 关于 Apple 自己的库 - 我特别需要可以在不同平台上运行的代码,我想 Apple 的东西足够不同,会引入太多问题。 GCC 不就是让 iOS OpenMP 实现使用 GCD吗?
    • 确实如此。理论上,您的基本 OMP 并行可以使用代码块和 GCD 至少使用 dispatch_apply 来实现。到目前为止,我还没有看到 clang 对它的任何支持,而且 Apple 往往有点像一个专有的控制狂,所以我不确定我们在不久的将来看到 OMP 支持有多大希望。当 Apple 创建像 GCD 这样的东西时,他们通常会根据我所看到的他们的业绩记录来推动它支持更多跨平台的解决方案。
    • 如果您正在寻找可移植的解决方案,您可能会最好使用可以位于 C++ 之上的东西,就像不需要编译器实际承认它的线程构建块一样上班。
    • ...然而,据我所知,目前还没有一个单一的 C++ 解决方案适用于所有这些平台。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多