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

 
Ashes: 这并没有帮助。

详细地告诉我们你做了什么。从你如何拿下AMD APP SDK开始。

顺便说一下,也许你没有在ParallelTester_00-01x脚本中的CLContextCreate()函数 中插入一个等于0的参数(它可能在主机(即CPU)上执行)。在我的帖子里并没有写到这一点。

 
Mathemat:
详细地告诉我们你做了什么。从你如何拿下AMD的APP SDK开始。

通过运行相应的Setup.exe,Uninstall,卸载了AMD APP SDK。重新启动了。

安装了英特尔OCL(intel_ocl_sdk_1.5_x64_setup.exe),仅运行时间。重新启动了。

运行MT5 - 没有结果。根据你的建议固定了登记处。重装的MT5--无奈之举。

我按照mql5的 建议添加了路径,我试着用和不用引号,用x64,和x32 在每次修改注册表后--我再次使用MT5,我使用--同样的老鸡蛋,只有一个侧视图。

现在HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors看起来像这样。

(默认)REG_SZ (未指定值)

C:\Program Files (x86)\Intel\OpenCL SDK1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

 
Ashes: 现在HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors看起来像这样。

(默认)REG_SZ (未指定值)

C:\Program Files (x86)\Intel\OpenCL SDK\1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

你在那里看过吗?例如,我在这个路径上没有任何东西(但我只下载并安装了运行时,也许这就是为什么没有)。

其次,我只是做了intelocl.dll,没有做全路径。反正它可能是在运行时安装时注册的。

P.S. 实验了完整的路径。Metatrader没有看到完整路径的OpenCL(两个都是)。但如果我只设置intelocl.dll作为名称,一切都会立即变得可见,甚至不用重启电脑。

我不知道如何从系统中现有的两个同名的文件中选择 "正确 "的文件。

请在此报告这一过程。不过,这很有趣,也许有一些细微的差别。我自己在这方面纠结了很久,我确实 "搞 "出了一个结果,我非常喜欢。

P.P.S.顺便说一下,当我在英特尔资源上时,他们建议卸载完整的英特尔SDK并重新安装。也就是说,不仅仅是卸载,还要进入system32和sysWOW64目录,删除所有与intelocl有关的东西。这些是intelocl*.dll、opencl*.dll和其他文件。在这里的某个地方是http://software.intel.com/en-us/forums/intel-opencl-sdk/。 当我找到它时,我将抛出一个更精确的链接。

有用的链接:http://software.intel.com/en-us/articles/opencl-release-notes/

而这里--特别有用:http://software.intel.com/en-us/forums/showthread.php?t=102023&o=a&s=lr, 那里有Uri Levy(英特尔)的建议可能真的有帮助。无论如何,这仍然是一个手鼓游戏。

 
MetaDriver(p. 53):

这是在CPU上(在我的例子中是设备1)。

把CLContextCreate(device)参数拉到了脚本参数中。 你可以在所有的选项中摸索。

有趣的是这一点。

630版上的这个脚本不知为何没有这样运行。没有消息,进入一个循环,把石头加载到100%。而且不会超过合理的时间。但我已经有了英特尔运行时。

 
Mathemat:

有趣的是如何。

630版上的这个脚本不知为何没有这样运行。没有消息,进入一个循环,百分之百加载石头。而且不会超过合理的时间。但我已经有了英特尔运行时。

重新编译,对我有用。

2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 326.6
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==4.15901 at 208 pass
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40825 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==4.15901 at 208 pass
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 125 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

附加的文件:
 
MetaDriver: 我重新编译了它,它对我有用。

这是在CPU上吗?好吧,如果是这样,你吓到我了......

我兴奋得太早了。我运行了它,但它没有任何意义。 EA日志中没有一个条目。但剧本启动后,立即填满了整块石头。换句话说,它敲打了一些东西,但没有到达CLContextCreate()(如果它到达了那里,就会说些什么,不是吗?)

新的东西。看起来英特尔运行时并不理解在AMD SDK上编译的代码。我把OCL_Device设置为0和-1。没有影响。

一般来说,你不能选择平台,这很不方便。我希望有可能做到这一点。我已经厌倦了重新安装。

 
Mathemat:

这是在CPU上吗?好吧,如果是这样,你吓到我了......

不,在GPU上。但OpenCL设备是可以选择的。在CPU上。

2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 74.28571428571429
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==3.53209 at 36 pass
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40560 ms
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==3.53209 at 36 pass
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 546 ms
2012.04.21 06:19:37     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

我兴奋得太早了。我运行了它,但它没有任何意义。 EA日志中没有一个条目。但剧本启动后,立即填满了整块石头。也就是说,它敲打着什么东西,但没有进入CLContextCreate()(如果它有,就会说些什么,对吗)。

新的东西。这就像英特尔运行时不理解在AMD SDK上编译的代码。我把OCL_Device设置为0和-1。没有影响。

一般来说,你不能选择平台,这很不方便。如果有这样的机会,是很理想的。我已经厌倦了重新安装。

哦,伙计,这是一个勒索软件)。

好的,这里是源代码。做你想做的事。

该代码在AMD SDK上无法编译。至少OCL代码是这样的。OCL程序是在执行mql代码的过程中编译的。OCL snap-in的EX5文件只编译了mql/ocl-driver桥接函数。我不认为它们被编译成了不同的机器代码,这取决于驱动程序的制造商。尽管只有开发者才能完全澄清这一点。

附加的文件:
 
MetaDriver: 代码不能在AMD SDK上编译。
这是可以理解的,我说得很差(好吧,我不是一个专业的编码员)。但它仍然取决于OpenCL "库 "的供应商(内部函数本身,而不是API)。
 
Mathemat:

你在那里检查过吗?例如,我在这个路径上没有这样的东西(但我只下载并安装了运行时,也许这就是为什么没有)。

其次,我只是做了intelocl.dll,没有做全路径。反正在安装运行时时,它可能已经被注册了。

...

光秃秃的 "intelocl.dll "是首批被检查的对象之一。在x64和x86文件夹中都有一个该名称的文件。

 
Ashes: 光秃秃的 "intelocl.dll "是首批被检查的对象之一。在x64和x86文件夹中都有一个该名称的文件。

我不知道那时该怎么做。我一直在折磨自己,寻找解决方案,直到支持团队 给我一个提示。可能不是一个完整的解决方案,但它在我的电脑上确实有效。

可能首先要学习的是如何干净地删除以前的SDK的痕迹。