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

 
Ashes:

2012.03.05 17:43:16 终端 CPU: GenuineIntel(R) Core(TM) i3-2100 CPU @ 3.10GHz with OpenCL 1.1 (4 units, 3092 MHz, 4008 Mb, version 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.734767766287369

[...]也许我有 "错误系统的手榴弹"?(我指的是AMD SDK版本)。

棒极了。我从网上找到的最普通的商店购买了核心、主板、内存和冷却器。总共花了大约6千美元。也许他们无意中从未来塞给我一块鹅卵石。

也许是因为SDK的原因。我认为这不值得在内存上出错,默认情况下,它只能是DDR-III。而且不管是不是单通道,它肯定会有影响,但不是那么可怕的。

 
Mathemat:

有趣的是。fyords 卡的性能更强(GeForce GT 440),而计算时间则长了一个数量级。

我不知道计算速度是否取决于分辨率(我有1920x1080),因为桌面也吃东西(Aero主题)?

也许这就是为什么它需要更长的时间来计算。

 
fyords: 我想知道计算速度是否取决于分辨率(我有1920x1080),因为桌面也会吃东西(Aero主题)?

是的,有可能。你的Windows Aero性能指数显示什么?这是我的。


我不需要那些打蝴蝶结的东西,所以它被关掉了。

P.S. 检查了。没有任何影响。

 

上次测试(2011年12月3日)正常通过,但现在出现了一些故障,但视频的得分是6.8。也许这就是问题所在(故障)。新的硬件没有安装。可能是新硬件的问题,那我就等新的版本,到时再做测试。

 

x32

x32

x64

x64

cpu-z

1

2

 

我添加了哑巴遗传学,并将其循环到最大化。 我得到了一个优化器,在相当于500天历史的5分钟开盘价 的模拟数据上拟合了一个单层网格(每个输入有16个指标)。

请测试。

在这一点上,我认为搅拌成功完成,因为优化器的测试是不充分的。;)

谁的速度慢了(与其他人相比)--现在你知道该为什么而保存了;-)

因此,我的结果。

2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Full time of optimization == 14 sec 305 ms
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Optimization is closing. Best result == 1.91356 at 92 generation.
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 92: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 91: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 90: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 89: MaxResult==1.91356
.............
.........

让我最后一次解释我的手指:这是一个原始的神经网络专家顾问的完整优化周期。

// 好吧,几乎是一个专家顾问。在这个 "专家顾问 "的代码中进行额外的计算,以便它能够足够真实地计算出利润。

//不会超过(在账户时间上。通过智能实现)那些已经存在的计算。也就是说,减速可以是,例如,两方面的。

附加的文件:
 
MetaDriver:

我添加了愚蠢的遗传学,并在最大化中进行循环。 我得到了一个优化器,在相当于500天历史的5分钟开盘价 的模拟数据上拟合一个单层网格(每个输入有16个指标)。

请测试。

...

谢谢。))

...

NJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:06 Generation 36: MaxResult==2.29423
NO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:08 Generation 37: MaxResult==2.29426
FE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:10 Generation 38: MaxResult==2.29426
PJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 39: MaxResult==2.29427
HO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 40: MaxResult==2.29427
QE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 41: MaxResult==2.29427
EJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 42: MaxResult==2.29427
LP 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 43: MaxResult==2.29427
KE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 44: MaxResult==2.29427
DI 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Optimization is closing. Best result == 2.29427 at 44 generation.
KO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Full time of optimization == 81 sec 917 ms 
 

MetaDriver,非常感谢你。你已经完成了你的拉票工作,获得了A。同时,你给了我一个机会来检查我没有独立显卡的 "无马 "配置,并感到非常、非常惊讶。

运行你的优化器。它是这样的。

2012.03.05 23:00:12     Terminal        CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80 GHz with OpenCL 1.1 (2 units, 2793 MHz, 7912 Mb, version 2.0)
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Full time of optimization == 58 sec 141 ms
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Optimization is closing. Best result == 1.87689 at 60 generation.
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 60: MaxResult==1.87689
2012.03.06 04:24:33     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 59: MaxResult==1.87689
2012.03.06 04:24:32     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 58: MaxResult==1.87689
2012.03.06 04:24:31     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 57: MaxResult==1.87689

假设每一代计算的时间差不多,我们得到与你的法拉利相比,我的 "塔齐 "大约慢了6.5-7倍,就像上次一样(每60代58.14秒~0.97秒/代)。

2 Graff: 如果你能在测试期间禁用独立显卡,在石头的集成显卡上运行测试,这将是非常有趣的(同时并看看英特尔在从Lynnfield到Sandy Bridge过渡期间在这方面的进展)。

但要做到这一点,你必须下载AMD的OpenCL SDK。它不会使你的独立卡变得更糟(它有自己的驱动程序),但你可以在你的PC上获得OpenCL 1.1,尽管我不是100%确定它能工作。

但如果你拒绝,我也不会生气。

[删除]  

从mql4论坛重新发布。

同事们,你们在使用OpenCL时将会有很多困惑和碰壁。不要期待容易的结果。

有很多选择,因为OpenCL是一种软件技术,它是以视频驱动为铰链的。事实上,视频驱动成为一个小的操作系统。一路上挂着的所有东西:UltraVNC、MSI afterbufner、Agnitum OutPost网络控制互动和其他一千多个程序都会阻碍OpenCL的正常运行。

也就是说,即使你设法使OpenCL适用于简单的线程计算,仍有另一个不可逾越的障碍需要克服,即:对于复杂的计算--GPU的技术(32位部分 IEEE支持)和操作 游戏卡超频时的精度损失)精度仍不足以满足严肃的科学计算。此外,尽管nVidia GPU在几乎所有现代显卡上都有64位双精度处理,但AMD显卡只在一些顶级系列上有。nVidia也有一个错误,但不同的是--他们与微软结盟,因此他们臭名昭著的CUDA(和OpenCL)实际上不能在例如Server 2003上工作,但同时又能在Server 2008甚至旧的Win XP上正常工作--只是由于微软的一些营销考虑。

OpenCL是用于快速流式的不准确的32位计算,如卷积或过滤。
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
AlexEros: 游戏卡超频时的精度损失

谁会给它超频?获得10-15%的计算速度,但由于只有一只蜜蜂的死亡而有可能出现计算错误?好吧,我们不是在玩一个游戏,不画一百个顶点并不影响任何特别的东西......。

OpenCL是用于快速流式不精确的32位计算,如卷积或过滤。

让我们做一个告诫。计算必须是非常庞大和沉重的,才能考虑到精度的损失。整合是一个大规模的求和/乘法,它是一个沉重的案例。

将两个数字相加,再乘以第三个数字(每个数字都有32位的计算精度,足以满足实际计算的需要),并将结果写入某个单元,作为循环的一个迭代结果,在GPU内部不以任何其他方式使用是一回事。

另一件事是用最慢收敛的莱布尼兹数列在10亿次迭代中计算π (这个数列被普遍用来演示OpenMP技术)。


在第二种情况下,当使用32位数字时,确实存在着失去准确性的危险,因为10亿个数字被加在一起。Terver说,在99.7%的情况下,产生的误差不会超过一个数字乘以2*10^5的精度。现在这很严重--而且不总是这样。

没有人阻止开发者在一个诚实的CPU上进行几次精确的计算,以估计真实的误差。

在我看来,只要有合理的预防措施,这项技术是可以使用的。如果你使用两家制造商的现代处理器(AMD APU Llano或甚至英特尔Sandy Bridge),你可能会暂时忘记独立显卡:如果我的速度快100倍或只有25倍,这有什么区别......也不会有蜜蜂死亡,因为我也不打算对处理器进行超频。