文章 "如何安装并使用 OpenCL 计算"

 

新文章 如何安装并使用 OpenCL 计算已发布:

MQL5 为 OpenCL 提供原生支持已逾一年。但是,见证到并行计算在其 EA 交易、指标或脚本中使用的真正价值的用户并不是很多。本文旨在帮助您安装并在自己的计算机上设置 OpenCL,让您能够在 MetaTrader 5 交易终端中尝试使用此技术。

How to Install and Use OpenCL for Calculations

什么是 OpenCL?

OpenCL 是由 Khronos Group 集团于 2008 年开发的并行编程开放标准。这一标准允许您利用异构系统中的不同架构,开发可以在 GPUCPU 上并行运行的应用程序。

换而言之,OpenCL 使得计算某任务时运用所有 CPU 核心或 GPU 的庞大运算能力成为了可能,并由此缩短了程序的执行时间。因此处理大工作量和资源消耗大的计算等相关任务时,使用 OpenCL 非常有利。

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

作者:MetaQuotes Software Corp.

 
为了展示在 MQL5 中使用 OpenCL 的优势,我们编写了 OpenCL_Sample.mq5 脚本,该脚本通过某个集合上的两个变量计算一个函数的值,并将结果显示在图表窗口中<br/ translate="no">。

TC 也是一个函数,其结果是一些自定义指标。也就是说,优化器是对某个集合上的函数值进行计算,就像给出的引文一样。

那么,我们可以讨论一下标准 OpenCL 优化器的便利性吗?或者说,是否存在无法实现如此显著(> 2 倍)提速的隐患?

我对优化器在 mat 模式下的工作更感兴趣。

 
OpenCL 非常适合需要对大型数据集执行统一计算操作的情况。在这种情况下,我们需要将一组数值切割成若干块,然后将每一块交给单独的处理器进行计算。这就是时间增益。本文提到的两篇文章介绍了 OpenCL 技术的更多细节。
 

你能否解释一下日志中 关于找到的支持 OpenCL 的设备的解码

首先是设备编号(您的情况是设备编号 0),然后是设备名称 nvidia GTX 580 、设备的OpenCL 版本 ,但括号中的内容不太清楚。难道不应该标明 ALU(nvidia CODA核心)的数量吗?然后是一个难以理解的频率,不清楚它指的是什么,通常视频核心的频率不会超过 1000 MHz...请解密。

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 

大家下午好。

请大家就这个非常有趣的话题提出建议:

1.是否已经有使用 OpenCL 进行计算的交易智能顾问?

2.如果系统中安装了多块显卡,是全部用于计算还是只用其中一块?

 

2.每位专家只能使用一张卡。

多位专家可同时使用多个 OpenCL 设备。

 
如果一台计算机上的多个设备都能参与 OpenCL 计算,那么是使用所有设备还是只使用其中一个?
 
paladin800:
如果一台计算机上的多个设备都可以参与 OpenCL 计算,是使用所有设备还是只使用其中一个?

上面已经有了答案

Renat:

2.每个智能卡只能使用一个。

您可以明确指定特定 MQL5 程序应使用哪个设备。查看CLContextCreate 函数
 
sigma7i:

你能否解释一下日志中 关于找到的支持 OpenCL 的设备的解码

首先是设备编号(您的情况是设备编号 0),然后是设备名称 nvidia GTX 580 、设备的OpenCL 版本 ,但括号中的内容不太清楚。难道不应该标明 ALU(nvidia CODA核心)的数量吗?然后是一个难以理解的频率,不清楚它指的是什么,通常视频核心的频率不会超过 1000 MHz...请破译一下。

我提出的问题有误,请原谅....。

问题是根据文章中的图片提出的:

1. "16 个单元 "是什么意思?为什么没有说明显卡的核心数量?

2.1630 MHz 是指显卡的全部频率还是单个组件的频率?

图画

 

首先,OpenCL 是独立于硬连线实现的并行方法规范。这就是为什么你不能寻求与 GPU 规范完全重合的原因。

单元不是独立的内核,而是内核组。不同的架构有不同的方法将多个内核组合成单元。例如,英伟达™(NVIDIA®)可能在一个单元中包含 8 个、32 个、48 个核心(或更多)。在 CPU 模式中,单元被视为逻辑 CPU 内核。

频率由设备(如显卡)显示。

 
使用 OpenCL 的另一个优势是,OpenCL 代码可与 MQL5 代码并行执行。

问题在于,调用 CLExecute 函数只是向 OpenCL 驱动程序发出开始执行的命令。
等待 OpenCL 任务完成发生在访问 OpenCL 执行队列时,例如调用CLBufferRead 函数时,就像本例中发生的那样。


在调用 CLExecute 和CLBufferRead 之间,您可以执行任何不访问 OpenCL 队列的 MQL5 计算。
OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.