OpenCL:MQL5中的内部实现测试 - 页 60

 
Mathemat:

是的,MD,你在光秃秃的CPU上做得不是很好。不过,英特尔在所有地方都是如此......

哦,来吧,你有一个伟大的显卡。

我不敢碰它。 我曾经卸载过它,发现自己几乎完全处于黑暗之中--Windows把它和一些不合适的驱动程序挂上了。 我不得不在1%的能见度条件下重新插入AMD APP SDK。 这很有趣...:)) 敲打所有的按钮,第一百次...................
 
MetaDriver: 是的,我在挠头,不过可能是司机歪了,我不敢碰它。
有趣的是:即使是原生驱动也是歪打正着--无论是英特尔还是AMD。让我们希望这只是一个增长问题。
 

朋友们,你们能不能告诉我,在纯CPU上的OpenCL是否只在MQL5中提供这种加速,还是在其他语言中也提供这种加速?

你是否做了以下比较:MQL5 + OpenCL VSC++ + 全编译器优化

我怀疑并不是OpenCL有多酷,而是MQL5本身缺乏优化。

P.S. 我有一个i7 2700K,我将尝试(当我到达那里时)在一个干净的CPU上测试它。

 
Mathemat:
有趣的是:即使是原生驱动也是歪的--对英特尔和AMD都是如此。让我们希望 这只是一个增长问题。
是的,我希望在几年内不会发生这种情况,一切都会顺利进行。目前,我还有其他问题--要学习如何正确编程这个东西......:)
 
hrenfx:

朋友们,你们能不能告诉我,在纯CPU上的OpenCL是否只在MQL5中提供这种加速,还是在其他语言中也提供这种加速?

你是否做了以下比较:MQL5 + OpenCL VSC++ + 全编译器优化

我怀疑并不是OpenCL有多酷,而是MQL5本身缺乏优化。

P.S. 我有一个i7 2700K,将尝试(当我到达那里时)在一个干净的CPU上测试。

不,我们没有。

去吧!好东西。

基本上,最多十分钟就能把代码移植到C++中(在裸露的CPU上算)。 如何在C++中使用OpenCL,我只在一本入门书中看到过,从未尝试过。 实际上,我希望我有。

 
hrenfx: 我怀疑不是OpenCL的问题,而是MQL5本身缺乏优化。

是的,这很合乎逻辑。我最近在ixbt论坛上与一位持有相同观点的CPU分析师进行了讨论。讨论从这里 开始(我的绰号是tamehtaM)。请不要因为我的无能而踢我。但我有一个印象,菲利德 也是过犹不及:他经常谈论IGP--甚至在它,IGP,要么不存在,要么太弱。

我在这个主题中的第一篇帖子是在我还不知道如何正确安装英特尔OpenCL运行时时写的。事实上,我仍然不确定它是否设置正确。但它已经比AMD APP SDK上好了三倍左右。

加速的数字是痛苦的,这是肯定的。而当优化出现时,它们显然应该变得更低。

有趣的是,即使没有这些优化,第五次也比第四次快。

而加速本身并不是主要的事情。主要的是运行时间的绝对数字。他们肯定不会变得更糟。更准确地说,他们不应该变得更糟。

 
Mathemat:

这显然是一个独立的卡,而不是一个CPU:这样的速度在仿真中很难实现。而设备的数量已经是5个,这真是令人毛骨悚然。

如果你不介意运行稍作修改的代码,请在这里公布结果。在代码中,各种OpenCL设备的计算被放入一个循环中(它们应该是快速的),而x86上的计算,即最长的计算,只被执行一次。它将会很长,但脚本本身只执行一次。

我意识到,我已经让你感到厌烦了。但无论如何,这将是支持团队的好信息。

下面是结果。

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Cpu的结果 MachResult==1.41575 at 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Social indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CPU时间=301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Gpu上的结果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Social indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) GPU时间 = 687 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!设备编号=4
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Gpu上的结果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Count indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) GPU时间 = 234 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!设备编号=3
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Gpu上的结果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Count indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) GPU时间 = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!设备编号=2
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Gpu上的结果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Count indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) GPU时间 = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!设备编号=1
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Gpu上的结果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Count indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) GPU时间 = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!设备编号=0

 
casinonsk:

下面是结果。

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Cpu的结果 MachResult==1.41575 at 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Social indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CPU时间=301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Gpu上的结果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Social indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) GPU时间 = 687 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!设备编号=4

所以,现在很清楚,设备=4是裸体CPU。而 GPU时间=687毫秒--相当一致。对你来说,它工作得很好。

我不明白为什么 CPU时间的执行时间会这么长。我的核心频率低得多(2.8GHz),却有大约235000毫秒。

要么你的内存很低,要么内存很慢,要么CPU被一些可怕的资源密集型任务长期超载。这一点并不清楚。时间比率的数字是不自然的高。

 
Mathemat:

所以,现在很清楚,设备=4是裸露的CPU。而 GPU时间=687毫秒--相当一致。对你来说,它工作得很好。

我不明白的是,为什么执行时间 CPU时间这么长。我有大约235000毫秒--在更低的核心频率(2.8GHz)下。

要么你的内存很低,要么内存很慢,要么CPU被一些可怕的资源密集型任务长期超载。这一点并不清楚。时间比率的数字是不自然的高。

专家顾问正在进行优化,它的内核有点多了。

16Gb内存

 
casinonsk: 专家顾问正在进行优化,核心部分的负荷有点大。

然后一切就都清楚了。试着在优化结束后运行同一个脚本。它可能会加载所有的核心。

在没有其他东西阻挡的情况下,看一个光秃秃的高端CPU是非常有趣的。