OpenCL:MQL5中的内部实现测试 - 页 50 1...434445464748495051525354555657...70 新评论 Rashid Umarov 2012.04.08 15:37 #491 Mathemat: 这就是诀窍的意义所在。如果至少有一个外部GPU,CLContextCreate()里面的参数不能明确选择CPU。不应该是这样的 -https://www.mql5.com/ru/docs/opencl/clcontextcreate参数 设备 [in] 系统中OpenCL设备的数量,按顺序排列。可以指定其中一个值,而不是一个特定的数字:CL_USE_ANY - 可以使用任何可用的支持OpenCL的设备; CL_USE_GPU_ONLY- 禁用OpenCL仿真,只能使用专用的OpenCL设备(显卡)。 Документация по MQL5: Работа с OpenCL / CLContextCreate www.mql5.com Работа с OpenCL / CLContextCreate - Документация по MQL5 Sceptic Philozoff 2012.04.08 15:53 #492 Rosh: 不应该是这样的 -https://www.mql5.com/ru/docs/opencl/clcontextcreate我想是的,不应该是这样。但从哪里得到这个数字,然后选择合适的?https://www.mql5.com/ru/docs/opencl/clgetinfointeger? 但只有一个属性--设备的数量,CL_DEVICE_COUNT。我的系统里有一个,这就是为什么它返回1。 Документация по MQL5: Работа с OpenCL / CLGetInfoInteger www.mql5.com Работа с OpenCL / CLGetInfoInteger - Документация по MQL5 Renat Fatkhullin 2012.04.08 15:56 #493 记住要升级到最新的619版本并重新编译程序。在这个版本中,OpenCL的初始化原则已经改变。 Rashid Umarov 2012.04.08 16:05 #494 Mathemat:我想是的,不应该是这样。但你从哪里得到这个数字,然后选择正确的数字? 你应该尝试指定CL_USE_GPU_ONLY,那么显卡将被占用,不需要这个数字。 Sceptic Philozoff 2012.04.08 16:17 #495 Rosh: 你应该尝试指定CL_USE_GPU_ONLY,那么显卡就被占用了,不需要这个数字。 这是可以理解的。但我想指定CPU--带独立显卡。我如何做到这一点? Sceptic Philozoff 2012.04.08 19:26 #496 棒极了!所以HD4200不是一个OpenCL设备,是吗?看起来这里真的有纯粹的CPU仿真。我喜欢它!如果我可以教i3做这件事呢... 我开始隐约怀疑为什么AMD APP SDK不能在i3的MT5上正常工作:不是所有的核心都是真实的,而且AMD没有超交易技术。也许,这就是为什么驱动器在某种程度上是扭曲的。或者说,窍门就在MT5中,它能正式识别该设备,但实际上却没有任何作用? Vladimir Gomonov 2012.04.08 19:40 #497 Mathemat: 诀窍是这样的。如果至少有一个外部GPU,CLContextCreate()里面的参数不能明确选择CPU。这是在CPU上(在我的例子中是设备1)。2012.04.08 21:03:01 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) CpuTime/GpuTime = 74.73506433823529 2012.04.08 21:03:01 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) Result on Cpu МахResult==4.54091 at 2233 pass 2012.04.08 21:03:01 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.08 21:03:01 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) CPU time = 325247 ms 2012.04.08 20:57:36 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) Result on Gpu МахResult==4.54091 at 2233 pass 2012.04.08 20:57:36 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.08 20:57:36 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) GPU time = 4352 ms 2012.04.08 20:57:32 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) OpenCL init OK! 把CLContextCreate(device)参数 拉到了脚本参数中。 你可以在所有的选项中摸索。// 也许仍然有一个秘密的臭味相投的组合?:)) 附加的文件: ParallelTester_00-02-316x7x3j.ex5 28 kb Sceptic Philozoff 2012.04.08 20:12 #498 2012.04.08 22:01:08 Terminal CPU: GenuineIntel Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 8040 Mb, version 2.0 (sse2))2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CpuTime/GpuTime = 26.95192501511792 2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Result on Cpu МахResult==4.98137 at 1628 pass 2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CPU time = 267417 ms 2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Result on Gpu МахResult==4.98137 at 1628 pass 2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) GPU time = 9922 ms 2012.04.08 22:01:22 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) OpenCL init OK!谢谢,我不知道...好吧,我毫不怀疑这个比例会是3比1左右:你有3倍的核心,74.735/26.952 ~ 2.77。这是个好消息:更多的核心意味着更多的收益!AMD在这里也保住了--由于核心数量的原因!。但我想知道其他人会有什么--比如说,拥有i5 Sandy Bridge的人?如果有人有推土机E,它可能真的很酷...。尽管它可能不是,因为这有点像FPU的问题。 测试日志 - 算法交易, 交易机器人 Andrey Dik 2012.04.08 21:24 #499 MetaDriver:而在这次测试中,由于某种原因,我的铁器撕碎了你的。2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) CpuTime/GpuTime = 161.0007722007722 2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) Result on Cpu МахResult==4.85831 at 2497 pass 2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) CPU time = 208496 ms 2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) Result on Gpu МахResult==4.85831 at 2497 pass 2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) GPU time = 1295 ms2012.04.09 01:06:07 ParallelTester_00-02-316x7x3j (EURUSD,H1) OpenCL init OK!下面是在OpenCL CPU上的测试(所有4个核心都是100%的负载)。2012.04.09 01:11:15 ParallelTester_00-02-316x7x3j (EURUSD,H1) GPU time = 68547 ms2012.04.09 01:10:07 ParallelTester_00-02-316x7x3j (EURUSD,H1) OpenCL init OK!GPU有480个苍蝇,CPU有4个,相差120倍,也就是说,一次可以完成120倍的计算,但CPU只落后于GPU的68547/1295=52.9倍。这意味着CPU线程比GPU线程快,但GPU获胜只是因为它可以同时执行更多的任务。我弄得对吗? 在CPU上的扩展比100%少很多(大约76%),而不是4倍,只有3倍的加速208496/68547=3.04虽然,这个测试的具体内容可能会影响它。 测试日志 - 算法交易, 交易机器人 Sceptic Philozoff 2012.04.08 21:46 #500 安德烈,我想你搞错了:MD 在这里只在CPU上发布了这个测试,没有显卡,也就是说直接选择CPU模拟。根据我的理解,你的第一个测试是在显卡上。而你的OpenCL仿真显卡的结果(你的第二个测试),即使与我的相比,似乎也是可疑的低(我在 "GPU "上有大约10秒)。 如果我有什么误解,请纠正我。 1...434445464748495051525354555657...70 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这就是诀窍的意义所在。如果至少有一个外部GPU,CLContextCreate()里面的参数不能明确选择CPU。
不应该是这样的 -https://www.mql5.com/ru/docs/opencl/clcontextcreate
参数
设备
[in] 系统中OpenCL设备的数量,按顺序排列。可以指定其中一个值,而不是一个特定的数字:CL_USE_ANY - 可以使用任何可用的支持OpenCL的设备; CL_USE_GPU_ONLY- 禁用OpenCL仿真,只能使用专用的OpenCL设备(显卡)。
我想是的,不应该是这样。但从哪里得到这个数字,然后选择合适的?
https://www.mql5.com/ru/docs/opencl/clgetinfointeger? 但只有一个属性--设备的数量,CL_DEVICE_COUNT。
我的系统里有一个,这就是为什么它返回1。
我想是的,不应该是这样。但你从哪里得到这个数字,然后选择正确的数字?
你应该尝试指定CL_USE_GPU_ONLY,那么显卡将被占用,不需要这个数字。
棒极了!所以HD4200不是一个OpenCL设备,是吗?
看起来这里真的有纯粹的CPU仿真。我喜欢它!
如果我可以教i3做这件事呢...
我开始隐约怀疑为什么AMD APP SDK不能在i3的MT5上正常工作:不是所有的核心都是真实的,而且AMD没有超交易技术。也许,这就是为什么驱动器在某种程度上是扭曲的。
或者说,窍门就在MT5中,它能正式识别该设备,但实际上却没有任何作用?
诀窍是这样的。如果至少有一个外部GPU,CLContextCreate()里面的参数不能明确选择CPU。
这是在CPU上(在我的例子中是设备1)。
把CLContextCreate(device)参数 拉到了脚本参数中。 你可以在所有的选项中摸索。
// 也许仍然有一个秘密的臭味相投的组合?:))
2012.04.08 22:01:08 Terminal CPU: GenuineIntel Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 8040 Mb, version 2.0 (sse2))
2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CpuTime/GpuTime = 26.95192501511792
2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Result on Cpu МахResult==4.98137 at 1628 pass
2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CPU time = 267417 ms
2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Result on Gpu МахResult==4.98137 at 1628 pass
2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) GPU time = 9922 ms
2012.04.08 22:01:22 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) OpenCL init OK!
谢谢,我不知道...
好吧,我毫不怀疑这个比例会是3比1左右:你有3倍的核心,74.735/26.952 ~ 2.77。这是个好消息:更多的核心意味着更多的收益!AMD在这里也保住了--由于核心数量的原因!。
但我想知道其他人会有什么--比如说,拥有i5 Sandy Bridge的人?
如果有人有推土机E,它可能真的很酷...。尽管它可能不是,因为这有点像FPU的问题。
而在这次测试中,由于某种原因,我的铁器撕碎了你的。
2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) CpuTime/GpuTime = 161.0007722007722
2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) Result on Cpu МахResult==4.85831 at 2497 pass2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) CPU time = 208496 ms
2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) Result on Gpu МахResult==4.85831 at 2497 pass
2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) GPU time = 1295 ms
2012.04.09 01:06:07 ParallelTester_00-02-316x7x3j (EURUSD,H1) OpenCL init OK!
下面是在OpenCL CPU上的测试(所有4个核心都是100%的负载)。
2012.04.09 01:11:15 ParallelTester_00-02-316x7x3j (EURUSD,H1) GPU time = 68547 ms
2012.04.09 01:10:07 ParallelTester_00-02-316x7x3j (EURUSD,H1) OpenCL init OK!
GPU有480个苍蝇,CPU有4个,相差120倍,也就是说,一次可以完成120倍的计算,但CPU只落后于GPU的68547/1295=52.9倍。这意味着CPU线程比GPU线程快,但GPU获胜只是因为它可以同时执行更多的任务。我弄得对吗?
在CPU上的扩展比100%少很多(大约76%),而不是4倍,只有3倍的加速208496/68547=3.04
虽然,这个测试的具体内容可能会影响它。
安德烈,我想你搞错了:MD 在这里只在CPU上发布了这个测试,没有显卡,也就是说直接选择CPU模拟。根据我的理解,你的第一个测试是在显卡上。
而你的OpenCL仿真显卡的结果(你的第二个测试),即使与我的相比,似乎也是可疑的低(我在 "GPU "上有大约10秒)。
如果我有什么误解,请纠正我。