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

 
Mathemat:

好了,最后,我们一直在等你。如果你准备进行实验,请安装英特尔OpenCL Runtime(链接 说明)。

在不改变任何内容的情况下运行该脚本,并像你以前的同事那样从 "专家 "标签中发布日志。脚本在你的宝石上运行大约需要3分钟,请忍耐一下。同时,我们将看到OpenCL是如何在最酷的裸机Sandy Bridge石头上运行的。

如果你没有耐心,或者你认为这超出了你的能力,那也没关系,没有冒犯的意思。

P.S. 这个脚本的目的是看看在没有任何独立视频龙的情况下,一个裸露的CPU能做什么。我怀疑在正确插入Intel Runtime的情况下,这个脚本的加速度会在200左右甚至略高。

有些人怀疑英特尔OpenCL Runtime是否正确安装。

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1347.164383561644

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==0.9316 at 10253 pass

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 4


 
casinonsk:

有人怀疑英特尔OpenCL Runtime是否正确安装。

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms

你可能将CLContextCreate()参数设置为0以外的其他参数。好吧,我让你不要改变任何东西!我的意思是说,你不要改变任何东西。我们已经知道你的双头视频龙的能力。但似乎你甚至有好几个。

根据我的粗略估计,在CLContextCreate(0),你应该有CPU时间=180000毫秒和GPU时间=900毫秒(大约)。对于这样一个CPU来说,你的第一次运行时间 是很奇怪的。也许它被其他任务所累?

你能不能按我所附的脚本运行--不改变 代码中的 任何内容 ,一个字符也不 改变

P.S. 当然,也许device = 0对应的不是CPU而是其他东西。好吧,那就实验吧(从0到3)。理论上,最高的GPU时间应该对应于裸露的CPU,即主机。

 
Mathemat:

你没有把零作为CLContextCreate()的一个参数,而是设置了其他的参数。好吧,我让你不要改变任何东西!我的意思是说,你不要改变任何东西。我们已经知道你的双头视频龙的能力。但你似乎有好几个。

根据我的粗略估计,在CLContextCreate(0),你应该有CPU时间=180000毫秒,GPU时间=900毫秒(大约)的数字。对于这样一个CPU来说,你的第一次运行时间 是很奇怪的。也许它被其他任务所累?

你能不能按我所附的脚本运行--不改变任何东西,不 改变 任何一个字符

P.S. 当然,也许device = 0对应的不是CPU而是其他东西。好吧,那就实验吧(从0到3)。理论上,最高的GPU时间应该对应于裸露的CPU,即主机。

我没有改变参数!按原样运行。

根据视频,是的,它是2x590。

我又用CLContextCreate(0)1,2,3试了一下,结果和以前一样。

问题可能出在英特尔OpenCL Runtime 上。

 
casinonsk:

没有改变参数!按原样开始。

用CLContextCreate(0)1,2,3再次运行,结果与之前一样。

所有的结果都是一样的?我不相信...那么,这个脚本不可能在光秃秃的CPU上有GPU时间=219ms。在最好的情况下,它将是约800毫秒,但不是约200毫秒。

这是我的典型结果(我有奔腾G840 CPU)。

2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 88.40817091454272
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==1.05116 at 7785 pass
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    CPU time = 235873 ms
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==1.05116 at 7785 pass
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    GPU time = 2668 ms
2012.04.22 22:19:10    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!
2012.04.22 22:19:10    ParallelTester_00-01x (EURUSD,H1)    CLGetInfoInteger() returned 1

好吧,让我们继续前进。

 
Mathemat:

所有的结果都是一样的吗?我不相信...那么,这个脚本不可能在光秃秃的CPU上有GPU时间=219ms。最好是约800毫秒,但不是约200毫秒。

好吧,算了。

我刚刚用CLContextCreate(0)又试了一次

 2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1265.405982905983

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==1.48772 at 2051 pass

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 296105 ms

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==1.48772 at 2051 pass

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 234 ms

2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!

2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 5


 
casinonsk: 刚用CLContextCreate(0)又试了一次

这显然是在独立的卡上,而不是在CPU上:在仿真上有这样的速度是很难做到的。而你拥有的设备数量已经是5个,这让人毛骨悚然。

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

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

我有一个有趣的结果 ))明 白了,不是设备的总数,而是当前的数量。

2012.04.22 22:02:51     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0

虽然计算正在进行中,但我将在准备好后公布。

顺便说一下,CLGetInfoInteger() 和CL_DEVICE_COUNT在帮助中都没有出现。

PS.结果

2012.04.22 22:02:51     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        GPU time = 11357 ms
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Gpu МахResult==1.68487 at 9198 pass
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 1
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        GPU time = 998 ms
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Gpu МахResult==1.68487 at 9198 pass
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        CPU time = 428706 ms
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Cpu МахResult==1.68487 at 9198 pass
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        CpuTime/GpuTime = 429.565130260521
 
fyords: 顺便说一下,帮助中没有CLGetInfoInteger()或CL_DEVICE_COUNT。

PS.结果

更新你的帮助,你的帮助已经过时了。

2.你有

2012.03.04 22:27:16     Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 295.73)
2012.03.04 22:27:16     Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 (4 units, 2812 MHz, 2048 Mb, version 2.0)

很可能,第一个数字11357毫秒是指主机(裸CPU),第二个数字998毫秒是指显卡。大致说来,主机上的增益顺序与AMD OpenCL上实现的加速相当一致(在4核Athlon II上约为38倍)。虽然真的不多,但应该更多,接近50-60的地方。很有可能是你的记忆力非常慢。

当然,CpuTime/GpuTime的数字只针对最后计算的设备。

 
Mathemat:

1.更新帮助,你的帮助显然已经过时了。

2.当然,CpuTime/GpuTime的数字只针对最后计算的设备。

1.手动更新,一切都在那里,谢谢你,但帮助没有和终端及元编辑一起更新吗?

2.是的,但仍然很好)。

 
papaklass:

以你的硬件来说,这几乎是清楚的,你只有主机是一个OpenCL设备。另一方面,很奇怪,你之前怎么会得到这么高的结果(第51页)。

2012.04.08 13:28:01     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       OpenCL init OK!
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       GPU time = 7145 ms
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Result on Gpu МахResult==3.86669 at 1682 pass
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       CPU time = 422888 ms
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Result on Cpu МахResult==3.86669 at 1682 pass
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       CpuTime/GpuTime = 59.18656403079076

由于某些原因,我无法将光标从代码插入 中取出。如果我引用某人的话,也是同样的胡言乱语。这是一个论坛的错误吗?

更有可能是论坛引擎的错误,但并不总是如此。我通常点击HTML栏,在最后一个标签后手动插入几个字母。然后我再回到帖子的视觉编辑模式。