如何安装并使用OpenCL 计算 - MQL5

文章推薦指數: 80 %
投票人數:10人

这种情况下,MetaTrader 5 终端探测到了直接从某个MQL5 程序启动OpenCL 的4 种方法:一种显卡来自NVIDIA (OpenCL 1.1),另一种来自AMD (OpenCL 1.2),根据安装的驱动程序, ... MetaTrader5示例指标专家测试者交易交易系统积分指标EA交易统计分析采访MetaTrader4示例指标专家测试者交易交易系统积分指标EA交易统计分析 您喜欢这篇文章? 分享或-发布链接! 使用MetaTrader5新的可能性 相似文章 DoEasy函数库中的图形(第九十一部分):标准图形对象事件。

对象名称更改历史记录 DoEasy函数库中的图形(第九十部分):标准图形对象事件。

基本功能 在MQL5中使用AutoIt DoEasy函数库中的图形(第八十九部分):标准图形对象编程。

基本功能 固化价格动作止损或固化RSI(智能止损) EnglishРусскийEspañolDeutsch日本語Português한국어FrançaisItalianoTürkçe 到包裹 MetaTrader5— 示例 如何安装并使用OpenCL计算 25三月2014,07:12 MetaQuotes MetaQuotes 8579评论,20812主题 0 15011 MetaTrader5客户端中的OpenCL 从可以在MQL5中编写OpenCL程序开始,已经一年多过去了。

发现的任何OpenCL设备的条目,现在都可以在MetaTrader5终端启动时在“日志”中看到,如下所示。

这种情况下,MetaTrader5终端探测到了直接从某个MQL5程序启动OpenCL的4种方法:一种显卡来自NVIDIA(OpenCL1.1),另一种来自AMD(OpenCL1.2),根据安装的驱动程序,还有两个IntelCore-i7CPU工具选项。

如果您的计算机已有一个适用的1.1或更高版本的OpenCL设备,您可以放心地略过描述部分,直接前往性能对比,从而亲眼见证允许并行计算给各种任务带来的性能增益。

OpenCL令人着迷!但是,尝到在其EA交易、指标或脚本中使用并行计算甜头的用户并不太多,因为他们不清楚有哪些新的可能、也不具备所需的知识。

问题在于,启动任何使用OpenCL的MQL5程序,都要求安装相应的软件。

正因如此,有大量的用户都不能运行Mandelbrot系列脚本,还有MQL5.community论坛中的许多其它可用程序。

本文中,我们会向您介绍如何将OpenCL安装到您的计算机,这样您就能够亲眼看到在MQL5中使用并行计算的巨大优势了。

我们不会研究为MQL5中的OpenCL编写程序的详情,因为网站上已有两篇一流的文章讲述了这一主题:《OpenCL:连接并行世界的桥梁》和《OpenCL:从朴素到更具深度的编程》。

什么是OpenCL? OpenCL是由KhronosGroup集团于2008年开发的并行编程开放标准。

这一标准允许您利用异构系统中的不同架构,开发可以在GPU或CPU上并行运行的应用程序。

换而言之,OpenCL使得计算某任务时运用所有CPU核心或GPU的庞大运算能力成为了可能,并由此缩短了程序的执行时间。

因此处理大工作量和资源消耗大的计算等相关任务时,使用OpenCL非常有利。

举个例子,说到MQL5,处理某个按多交易品种和时间框架对历史数据执行复杂且冗长分析特定脚本时,绩效增益极其可观(要注意的是,打算采用并行执行的MQL5程序,应利用OpenCLAPI以特殊方式编写)。

OpenCL支持 MQL5中对于OpenCL的支持始于2010年6月发布的1.1版本。

所以,为了使用并行计算,您需要拥有一种适合此标准的较新的软件和硬件。

也就是说,要注意的是,开始使用OpenCL之前,您的PC上有无显卡并不太重要-一个CPU就够了。

这就意味着,OpenCL几乎适用于每一位想要缩短其MQL5程序执行时间的用户。

在分布式运算速度方面,CPU当然远远落后于其对手-显卡。

但是,优秀的多核CPU在实现速度大幅提升方面也算不错。

我们回到讨论的主题上来。

前面提过,对于并行计算,您既可以用显卡,亦可用CPU。

市场中的相关设备生产商主要有三家:Intel、AMD和NVidia。

下表中列出的,就是这三家生产商支持OpenCL1.1的设备和操作系统的相关信息: 生产商 设备 操作系统 Intel CPU:Corei3,i5,i7-用于PC;Xeon-用于服务器;XeonPhi-用于协处理器(了解更多)。

Windows7,8;openSUSE;RedHat. AMD 显卡:6400系列及以上版本的AMDRadeonHD显卡;5400系列及以上版本的ATIRadeonHD显卡;ATIFirePro显卡A300、S、W、V系列;5400系列及以上版本的ATIMobilityRadeonHD;ATIFireProM7820M5800(readmore)。

基于K8及更新架构的CPU:Opteron、Athlon64、Athlon64FX、Athlon64X2、Sempron、Turion64、Turion64X2、Phenom、PhenomII(了解更多)。

APU(混合型CPU/GPU处理器):A、C、E、E2、G、R系列CPU。

WindowsVistaSP2,7,8;openSUSE11.x;Ubuntu11.04;RedHat6.x。

NVidia GPU(带有CUDA架构):Tesla、Quadro、GeForce(了解更多)。

WindowsXP、Vista、7、8Linux以及Mac操作系统(了解更多) 此外,开发商KhronosGroup官方网站上还提供有关每个OpenCL版本所需软硬件的完整信息。

确保您的计算机上至少有一种可用设备(CPU或GPU),而且已安装的操作系统要支持OpenCL1.1。

如已满足上述要求,您则可以放心地前往下一部分-讲解不同硬件生产商的OpenCL设置方式。

  设置OpenCL 如果您的计算机上已经安装了必要的软硬件,要开始使用MetaTrader5中的并行计算,您需要做的只是为自己的一个设备设置OpenCL。

根据您打算使用的硬件-GPU或CPU,OpenCL的设置流程会有所不同。

如果MetaTrader5终端发现支持OpenCL的显卡,您只需将其驱动程序升级为最新版本。

只有在您的计算机没有相应的显卡时,才需要安装针对CPU的SDK。

重要须知:如果您装有带OpenCL支持的显卡,则无需为CPU的OpenCL模拟安装什么软件版本!除非是试验要求,否则OpenCL显卡所提供的优势根本勿庸置疑。

下述几个段落,将根据生产商分别讲解OpenCL的设置流程。

您可以通过相应的链接访问相关的设置说明: IntelCPU设置; AMDGPU设置; AMDCPU设置; NVidiaGPU设置。

1.Intel 为了能在IntelCPU上使用OpenCL,您需要下载并安装IntelSDKforOpenCLApplications(OpenCL应用程序Intel软件开发套件)。

为此,请访问开发商的官网下载页面。

图1.1.OpenCL专用IntelSDK下载页面 您可以在这里找到有关OpenCL的一般信息,以及可供下载的产品列表。

要下载可用产品,请单击页面右上角的CompareandDownloadProducts(对比并下载产品)按钮。

图1.2.可用产品与安装要求相关信息 单击后,您会看到一个窗口,其中包含支持处理器类型和操作系统的产品要求相关信息。

选择并通过单击产品图标上方的Download(下载)按钮下载适用产品。

图1.3.SDK下载链接 会有另一个带下载链接的窗口弹出。

选择32位或64位的SDK并下载。

稍等几分钟,待下载结束后,运行得到的文件。

确认SDK组件的安装,并将文件解压缩到一个文件夹中。

图1.4.开始OpenCL专用IntelSDK的安装 您会看到安装窗口出现IntelSDKforOpenCLApplications,支持OpenCL1.2。

单击Next(下一步),并遵循安装说明。

图1.5.接受终端用户许可协议 接受《许可协议》的条款和条件。

此后,窗口中就会出现待安装的组件-单击Next继续。

图1.6.SDK与VisualStudio的集成 如果您的PC上已装有MicrosoftVisualStudio2008软件(或更新版本),为方便OpenCL使用,会提示您与其集成。

之后,您只需要选择能够访问已安装组件的用户,指定SDK安装位置并单击Install(安装)。

图1.7.安装 安装过程将持续几分钟。

成功完成后,屏幕上即会出现结果。

单击Finish(完成)以完成安装进程。

图1.8.完成安装   2.1.AMD显卡与APU 要安装某AMD显卡专用的OpenCL,我们要将其驱动程序升级到最新版本。

可通过驱动程序下载页面完成。

图2.1.1.AMD驱动程序下载页面 如果您知道显卡规格,那么填写页面左侧的表单,即可轻松找到驱动程序。

于所有表单字段中选好必要选项后,请单击DisplayResults(显示结果)以查找相应的驱动程序。

图2.1.2.AMD驱动程序下载 该系统会在CatalystSoftwareSuite(驱动程序软件套装)中提供几种驱动,其中就包括OpenCL驱动程序。

下载驱动程序并运行得到的文件。

图2.1.3.确认显卡类型和驱动版本的应用程序下载页面 您也可以通过单击页面右上角的对应链接,使用DriverAutodetect(驱动程序自动检测)系统(图2.1.1.)。

会提醒您下载AMDDriverAutodetect应用程序-照此下载并启动该程序。

图2.1.4.检测并下载适用驱动的应用程序 该应用程序会对系统进行分析,并允许您下载适合的显卡驱动。

下载该应用程序并运行得到的文件。

InstallManager(安装管理器)会让您选择将文件解压的目标文件夹-选定并单击Install。

图2.1.5.AMD驱动程序安装管理器 弹窗中会出现一份《终端用户许可协议》。

我们需要接受其条款和条件。

之后,我们选择Express(快速)安装,指定AMD驱动程序的安装位置,再单击Next。

图2.1.6.安装 安装过程将持续几分钟。

完成后,屏幕上即会显示相关消息。

图2.1.7.完成安装   2.2.AMDCPU 要为AMDCPU安装OpenCL,我们需要下载并安装最新版本的AMDAPPSDK。

为此,请访问开发商官网上的下方页面。

图2.2.1.AMDAPPSDK下载页面 此页面会提供一些SDK相关信息,并对OpenCL进行说明。

这里需要我们找到并单击描述下方的GotoDownloads(前往下载)链接。

图2.2.2.可供下载SDK表 在页面的底部,您会看到一个表,其中包含各种操作系统(32位或64位)最新的SDK版本以及下载链接列表。

单击相应链接以选择需要的版本。

您会看到《终端用户许可协议》页面。

接受协议开始下载。

运行下载的安装程序后,会提示您将安装文件解压到某个文件夹。

之后,就是安装上述包含您的CPU专用的AMDAPPSDK的AMD驱动程序。

而驱动程序的安装流程,请见上文2.1节的图2.1.5-2.1.7。

  3.NVidia 如果您有一个NVidia显卡,那么您需要将其驱动程序升级到最新版本,才能安装OpenCL。

您可以在开发商网站上的驱动程序下载页面下载。

图3.1.NVidia驱动下载页面 此页面会为您提供相关选项,手动或自动查找所需驱动程序。

如用手动选项,您需要选择产品类型、序列、操作系统并单击Search(搜索)。

系统会找到适合您显卡的最新驱动程序,并提醒您下载。

图3.2.选定驱动程序下载 如您选择了选项2,则需要单击GraphicsDrivers(显卡驱动),之后就会要求您利用GPU_ReaderJava应用程序扫描您的系统。

图3.3.运行此应用程序,以确定显卡类型和驱动版本 单击Run(运行)运行此应用程序。

等待几秒,即能看到显卡相关信息、安装驱动的当前版本以及推荐的最新驱动版本。

单击Download进入下载页面,如图3.2.所示。

图3.4.自动识别显卡类型与驱动版本的结果 单击DownloadNow(马上下载),并单击AgreeandDownload(同意并下载)按钮接受《NVidia软件许可协议》。

图3.5.接受许可协议并下载驱动程序 由此,我们得到了显卡的最新版本驱动程序。

之后,我们运行得到的文件-会要求您将驱动安装文件解压到某个文件夹中。

解压后即开始安装。

首先,您需要再一次接受《NVdia软件许可协议》的条款和条件。

图3.6.安装第一阶段,接受《许可协议》 之后,选择Express安装选项,并单击Next。

此外,您还可以选择安装NVidiaExperience附加程序。

图3.7.选择安装选项 之后,驱动程序立即开始安装,同时还有NVidia最新动态的相关宣传。

图3.8.安装 就这些了。

驱动程序安装完毕,我们只需重启系统,即可在MetaTrader5中使用OpenCL了。

图3.9.完成安装   性能对比 OpenCL_Sample.mq5专为展示MQL5中使用OpenCL的诸多优势而编写。

它会计算某些组中两个变量的函数值,并利用图形标签(OBJ_BITMAP_LABEL)在图表窗口中显示结果。

有两种计算方式-使用OpenCL和不使用OpenCL。

而这些代码块也分别以WithOpenCL()和WithoutOpenCL()函数的形式实施: //+------------------------------------------------------------------+ //|Scriptprogramstartfunction                                    | //+------------------------------------------------------------------+ voidOnStart()   { //...   Print("\nCalculationswithoutOpenCL:");   WithoutOpenCL(values1,colors1,w,h,size,const_1,const_2); //---calculationswithOpenCL   Print("\nCalculationswithOpenCL:");   WithOpenCL(values2,colors2,w,h,size,const_1,const_2); //...   } //+------------------------------------------------------------------+ //|CalculationswithoutusingOpenCL                  | //+------------------------------------------------------------------+ voidWithoutOpenCL(float&values[],uint&colors[],constuintw,constuinth,                   constuintsize,constuintconst_1,constuintconst_2)   { //---storethecalculationstarttime   uintx=GetTickCount(); //---calculationoffunctionvalues   for(uinti=0;i



請為這篇文章評分?