文章 "OpenCL:从朴素到更具深度的编程" - 页 2 12 新评论 Sceptic Philozoff 2012.06.06 14:06 #11 denkir: 例如,您可以添加一些统计计算。我已经打算这么做了,(很有可能)只是收集大量历史数据。不过这与 muves 无关。我讨厌 muves - 我有权这么做:)同步报价。这是一项适用于 CPU 而非 GPU 的任务。不是每个任务都适合 GPU,不是吗?最好选择一个合适的,因为 GPU 就是用来做这个的。这将是一个二维数组。我想,在未来的文章中,它将会是一个三维阵列。与此同时,如何使用 GPU 缓冲区显示任意维度的数组也会变得很清楚。 Denis Kirichenko 2012.06.06 14:08 #12 Mathemat:已经打算这样做了,(很可能)只是收集一个大型故事的统计数据....。我认为在未来的文章中将会是三维的。与此同时,如何将任意维度的数组写入 GPU 缓冲区以及如何使用它也将变得清晰明了。好极了!让我们拭目以待... Sceptic Philozoff 2012.06.08 16:49 #13 denkir: 记录终端中所有工具的历史报价。比方说一分钟,同步报价。它们也需要同步吗?附注:我看了帮助,发现这是必要的。 Sceptic Philozoff 2013.06.27 01:45 #14 考虑到硬件升级,我重新计算了文章的结果。一年前:英特尔奔腾 G840 CPU(2 核 @ 2.8 GHz)+ AMDHD4870 显卡。最近:CPU Intel Xeon E3-1230v2(4 核/8 线程 @ 3.3 GHz;略低于 i7-3770)+ AMD HD 显卡。6 870.图中显示了 OpenCL 的计算结果(水平方向 - 文章中应用的优化次数):计算时间垂直显示,单位为秒。脚本 "在 CPU 上一击即中"(在一个内核上,不使用 OpenCL)的执行时间 随算法变化而变化,在 95 秒正负 25 秒之内。正如我们所看到的,一切似乎都很清楚,但仍然不是很明显。双核 G840 显然是局外人。这也在意料之中。进一步的优化并未对执行时间造成太大影响,执行时间从 4 秒到 5.5 秒不等。需要注意的是,即使在这种情况下,脚本执行的加速度值也超过了 20 倍。在两款不同年代的显卡(古老的 HD4870 和更现代的 HD6870)之间的竞争中,我们几乎可以认为 6870 是赢家。除了最后的优化阶段,古老的怪物 4870 仍然取得了名义上的胜利(尽管它几乎一直落后)。老实说,原因不明:着色器更小,频率也更低--但它还是赢了。让我们假设这是显卡世代发展的变数。或者是我的算法有误:)坦率地说,我对至强很满意,它在所有优化方面都优于古老的 4870,与 6870 几乎不相上下,最后甚至击败了它们。我并不是说在任何任务中都会如此。但这项任务的计算难度很大,毕竟是两个 2000 x 2000 大小的矩阵相乘!结论很简单:如果你已经有了像 i7 这样的 CPU,而且 OpenCL 计算时间不长,那么你可能不需要额外的强大加热器(显卡)。另一方面,在漫长的计算过程中,以 100% 的速度加载石头长达几十秒的时间并不令人愉快,因为在这段时间内电脑会 "失去响应速度"。 Winsor Hoang 2015.01.15 04:54 #15 你们好您能否举例说明 OpenCL 如何加快 EveryTick 模式下的 EA回测 速度?目前,我在 EveryTick 模式下运行 14 年的数据需要 18 分钟。 如果 OpenCL 可以将测试时间缩短 50%,我相信很多交易者都会感兴趣。 Lorentzos Roussos 2023.04.26 13:49 #16 这篇文章写得很好,但我不明白将行 的传输从循环外部移到 私有内存如何会加快速度。 同样的传输操作无论如何都会发生,我的代码没有受到任何影响,当然每个情况都不一样。(不过,添加了某些东西之后,0 影响意味着某些东西加快了速度,但却没有收益)。 这部分内容在 OpenCL 源代码中: " REALTYPE rowbuf[ COLSROWS ]; \r\n" " for( int col = 0; col < COLSROWS; col ++ ) \r\n" " rowbuf[ col ] = in1[ r * COLSROWS + col ]; \r\n" 将其移出紧缩循环的位置 谢谢 Juan Calvo 2024.02.18 19:21 #17 感谢您的文章,这是一次很好的学习,期待着将其付诸实践 12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我已经打算这么做了,(很有可能)只是收集大量历史数据。不过这与 muves 无关。我讨厌 muves - 我有权这么做:)
同步报价。
这是一项适用于 CPU 而非 GPU 的任务。不是每个任务都适合 GPU,不是吗?最好选择一个合适的,因为 GPU 就是用来做这个的。
这将是一个二维数组。
我想,在未来的文章中,它将会是一个三维阵列。与此同时,如何使用 GPU 缓冲区显示任意维度的数组也会变得很清楚。
已经打算这样做了,(很可能)只是收集一个大型故事的统计数据....。
我认为在未来的文章中将会是三维的。与此同时,如何将任意维度的数组写入 GPU 缓冲区以及如何使用它也将变得清晰明了。
好极了!让我们拭目以待...
它们也需要同步吗?
附注:我看了帮助,发现这是必要的。
考虑到硬件升级,我重新计算了文章的结果。
一年前:英特尔奔腾 G840 CPU(2 核 @ 2.8 GHz)+ AMDHD4870 显卡。
最近:CPU Intel Xeon E3-1230v2(4 核/8 线程 @ 3.3 GHz;略低于 i7-3770)+ AMD HD 显卡。6 870.
图中显示了 OpenCL 的计算结果(水平方向 - 文章中应用的优化次数):
计算时间垂直显示,单位为秒。脚本 "在 CPU 上一击即中"(在一个内核上,不使用 OpenCL)的执行时间 随算法变化而变化,在 95 秒正负 25 秒之内。
正如我们所看到的,一切似乎都很清楚,但仍然不是很明显。
双核 G840 显然是局外人。这也在意料之中。进一步的优化并未对执行时间造成太大影响,执行时间从 4 秒到 5.5 秒不等。需要注意的是,即使在这种情况下,脚本执行的加速度值也超过了 20 倍。
在两款不同年代的显卡(古老的 HD4870 和更现代的 HD6870)之间的竞争中,我们几乎可以认为 6870 是赢家。除了最后的优化阶段,古老的怪物 4870 仍然取得了名义上的胜利(尽管它几乎一直落后)。老实说,原因不明:着色器更小,频率也更低--但它还是赢了。
让我们假设这是显卡世代发展的变数。或者是我的算法有误:)
坦率地说,我对至强很满意,它在所有优化方面都优于古老的 4870,与 6870 几乎不相上下,最后甚至击败了它们。我并不是说在任何任务中都会如此。但这项任务的计算难度很大,毕竟是两个 2000 x 2000 大小的矩阵相乘!
结论很简单:如果你已经有了像 i7 这样的 CPU,而且 OpenCL 计算时间不长,那么你可能不需要额外的强大加热器(显卡)。另一方面,在漫长的计算过程中,以 100% 的速度加载石头长达几十秒的时间并不令人愉快,因为在这段时间内电脑会 "失去响应速度"。
你们好
您能否举例说明 OpenCL 如何加快 EveryTick 模式下的 EA回测 速度?目前,我在 EveryTick 模式下运行 14 年的数据需要 18 分钟。 如果 OpenCL 可以将测试时间缩短 50%,我相信很多交易者都会感兴趣。
这篇文章写得很好,但我不明白将行 的传输从循环外部移到 私有内存如何会加快速度。
同样的传输操作无论如何都会发生,我的代码没有受到任何影响,当然每个情况都不一样。(不过,添加了某些东西之后,0 影响意味着某些东西加快了速度,但却没有收益)。
这部分内容在 OpenCL 源代码中:
将其移出紧缩循环的位置
谢谢