OpenCL 与 OpenMP 性能对比 [关闭]

2024-05-11

是否有研究比较 OpenCL 与 OpenMP 的性能?具体来说,我对使用 OpenCL 启动线程的开销成本感兴趣,例如,如果将域分解为大量单独的工作项(每个工作项由一个线程执行一项小工作),而 OpenMP 中的重量级线程则为该域被分解为子域,子域的数量等于核心的数量。

看来 OpenCL 编程模型更针对大规模并行芯片(例如 GPU),而不是具有更少但更强大内核的 CPU。

OpenCL 能否有效替代 OpenMP?


我见过的基准测试表明,在相同硬件上运行的 OpenCL 和 OpenMP 通常在性能上相当,或者 OpenMP 的性能稍好一些。然而,我还没有看到任何我认为具有决定性的基准,因为它们大多缺乏对其方法的详细解释。然而,有一些有用的事情需要考虑:

  • OpenCL 在运行时编译内核时总会有一些额外的开销。任何基准测试要么需要单独列出这个时间,要么使用预编译的本机内核,要么运行足够长的时间以使内核编译无关紧要。

  • OpenCL 的实现会有所不同。像 NVidia 这样的 GPU 供应商没有动力确保他们基于 CPU 的 OpenCL 实现尽可能快。没有一个 OpenCL 实现可能像良好的 OpenMP 实现一样成熟。

  • OpenCL 规范基本上没有提及基于 CPU 的实现如何在底层使用线程,因此任何关于线程是相对轻量级还是重量级的讨论都必然是特定于实现的。

  • 当您在 CPU 上运行 OpenCL 代码时,您的工作项不必很小且数量众多。您可以按照与 OpenMP 相同的方式来分解问题。

即使 OpenCL 的开销更大,也可能有其他原因更喜欢它。

  • 显然,如果您的代码可以充分利用 GPU,您将需要 OpenCL 实现。 CPU 上的 OpenCL 性能可能足够好,以至于不值得为没有强大 GPU 的用户维护 OpenMP 后备代码路径。

  • 良好的基于​​ CPU 的 OpenCL 实现意味着您将自动受益于 CPU 和 OpenCL 实现支持的任何指令集扩展。使用 OpenMP,您必须做额外的工作以确保您的可执行文件包含 SSEx 和 AVX 代码路径。

  • OpenCL 向量原语可以帮助您表达一些显式并行性,而不会因使用 SSE 内在函数而牺牲可移植性和可读性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCL 与 OpenMP 性能对比 [关闭] 的相关文章

随机推荐

  • 无法在 Android 中调整 Web 视图的大小

    我正在尝试调整大小Web View在安卓中 第一次单击时 Web 视图会扩展为新大小 但第二次单击时 它不会恢复为我指定的旧大小 任何帮助表示赞赏 public class MainActivity extends Activity Rel
  • 如何在 ListView 中的禁用项目之间添加分隔线? - 棒棒糖

    在禁用项目 不可点击 之间添加分隔线ListView http developer android com reference android widget ListView html对于 Lollipop 之前的 Android 我重写适
  • 多语言网站的 .htaccess 规则

    我正在重新设计 PHP 多语言网站 en es de fr ru 的 URL 该网站的 URL 是这样的 www mysite com page www mysite com page subpage1 www mysite com pag
  • css动画移动元素位置

    我的 CSS 动画有这个问题 我有一个元素位置绝对居中于页面中间 当我放置动画时 它会向右移动 当动画完成时 它会移回到页面中间 这是代码 keyframes motto from opacity 0 transform translate
  • Android Studio 中的 Gradle 构建失败(无法从缓存中读取 testArtifacts.bin)

    代码中没有错误 但构建失败并出现以下错误 Error Could not read entry app packageDebug from cache taskArtifacts bin Users sibidharan Developer
  • iOS 中通过 USB 进行反向端口转发

    我在桌面上有一个 Web 套接字服务器 在 iPhone 设备上有一个客户端 我想使用 USB 而不是任何网络与他们通信 我已经使用 adb reverse 在 android 上实现了它 但无法找到适用于 iOS 的任何解决方案 我尝试使
  • 使用 CSS 将 Div 分成 2 列

    我一直在尝试使用 CSS 将 div 分成两列 但我还没有设法让它工作 我的基本结构如下 div div div div div div div div div div div div div div 如果我尝试将右侧和左侧 div 浮动到
  • 使用 d3 进行多级/分组轴标签

    我想知道是否有一种简单的方法可以在 d3 中添加多级 分层 分组轴标签 例如 如果我有一个折线图 其中 x 轴的月份名称跨越多年 那么我还希望将年份作为月份名称下方的标签 因此它看起来像这样 Oct Nov Dec Jan Feb Mar
  • 通过自定义文本更改库存文本中的 WooCommerce 产品可用性

    我想更改库存数量后面的 有库存 文字 我尝试在我的 WordPress php 编辑器中添加此 PHP 代码 但它不起作用 你知道为什么吗 谢谢 add filter woocommerce get availability text bb
  • 通过 id 从通用列表中删除对象

    我有一个像这样的域类 public class DomainClass public virtual string name get set public virtual IList
  • 有效,但未捕获引用错误:当我在控制台中键入数组时未定义数组

    我用 js 制作了一个 Tic Tac Toe 游戏 我有几个数组 一个用于 html td 元素 网格 用于查看它们之前是否被点击过 boolGrid 还有一个用颜色检查结束条件 colorgrid 我使用 var 关键字及其内容在全局范
  • UIToolbar setBackgroundColor 没有完全改变颜色

    我正在尝试设置 a 的背景颜色UIToolBar 我尝试从 IB 的属性检查器中选择颜色 并尝试通过编程方式设置它setBackgroundColor UIColor 两种解决方案都有效 但只是部分有效 颜色与白色混合了大约 50 并且工具
  • WPF MVVM 在窗口关闭时调用 ViewModel Save 方法

    我已经弄清楚如何从我的 ViewModel 关闭窗口 现在我需要从另一侧解决窗口关闭问题 当用户单击窗口的关闭按钮时 我需要在 ViewModel 中触发 Save 方法 我正在考虑将 Command 属性绑定到 Window 的关闭事件
  • *.default不是构造函数,带有导入的js插件

    我尝试创建一个简单的表单验证 并通过示例项目中的纱线链接注册它以测试设置 但这绝对行不通 我不知道如何继续 export default class Proofr constructor console log test 然后生成这个 脚本
  • 如果我只有 apk 文件,如何在 robotsium 中使用 R.id

    我想测试来自游戏市场的应用程序 当我尝试使用时遇到问题 solo clickOnView solo getView cn wps moffice eng R id writer edittoolbar saveBtn cn cn 无法解析为
  • ASP.NET 页面中的 WMV 文件

    如何在 ASP NET 网页中嵌入 WMV 文件 我希望它作为一个播放器可见 而不仅仅是一个链接 是否有 ASP NET 控件可以实现此目的 我在 VS 2008 工具栏上没有看到这个 在帮助中也找不到 我还没有准备好将此网站转移到 Sil
  • 如何将注销的用户重定向到 Java EE/JSF 中的主页? [复制]

    这个问题在这里已经有答案了 我需要只允许登录用户访问我的应用程序的大部分页面 我正在使用 JSF 2 开发 Java 企业应用程序 有谁知道我该怎么做 也许有一个配置文件 我在主页中有一个登录组件 我希望用户在单击页面上除少数项目之外的任何
  • 使用 SP 包中的 SpatialPoints() 转换坐标参考系 (CRS) 以创建空间数据框

    Issue 我有一个形状文件我已将其导入到 R 中 并为正在进行的分析选择了感兴趣的变量 我的最终目标是插值点数据 海豚 ID 获取海面温度 SST 堆栈中每个单独的光栅文件的值70 栅格来自名为 ncin SST 的对象 该对象是使用函数
  • 区分 Web 路由调用与 API 路由调用?

    In my web php文件中 我有一条如下所示的路线 Route get HomeController getFeed 而在我的api php文件中 我有一条如下所示的路线 Route get feeds HomeController
  • OpenCL 与 OpenMP 性能对比 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有研究比较 OpenCL 与 OpenMP 的性能 具体来说 我对使用 OpenCL 启动线程的开销成本感兴趣 例如 如果将域分解