文章 "神经网络变得轻松(第五部分):OpenCL 中的多线程计算" - 页 3

 
Dmitriy Gizlyk:

使用矢量运算可以并行而不是顺序执行 4 个元素的乘积。请观看视频 https://ru.coursera.org/lecture/parallelnoye-programmirovaniye/4-1-chto-takoie-viektorizatsiia-i-zachiem-ona-nuzhna-f8lh3。这是关于 OpenMP 的,但意思是一样的。

谢谢!

那么矢量化是由 OpenCL 的编译器自动完成的?我在代码中没有看到任何特殊命令。

 
Aleksey Vyazmikin:

谢谢!

那么矢量化是由 OpenCL 的编译器自动完成的?我在代码中没有看到任何特殊命令。

不,没有自动矢量化。在代码中,我们首先声明 2 个矢量变量。

double4 inp, weight;

然后,我们从传入的缓冲区向矢量变量写入一部分数据。

         default:
           inp=(double4)(matrix_i[k],matrix_i[k+1],matrix_i[k+2],matrix_i[k+3]);
           weight=(double4)(matrix_w[shift+k],matrix_w[shift+k+1],matrix_w[shift+k+2],matrix_w[shift+k+3]);
           break;

然后对向量变量执行操作,也就是执行向量操作。代码中使用的 dot 函数仅用于向量操作。

      sum+=dot(inp,weight);

因此,我们对乘法操作进行了并行化,但不是在线程级别,而是在使用向量计算的具体操作级别。

 
Dmitriy Gizlyk:

不,没有自动矢量化。在代码中,我们首先声明 2 个矢量变量

然后从输入缓冲区向向量变量写入一部分数据。

然后对向量变量执行操作,也就是执行向量操作。代码中使用的 dot 函数仅用于向量操作。

因此,我们对乘法操作进行了并行化,但不是在线程级别,而是在使用向量计算的具体操作级别。

也就是说,一个特殊函数 dot() 负责矢量化?这种矢量化能否在没有 OpenCL 的 MQL5 中完成?

 
Aleksey Vyazmikin:

也就是说,一个特殊函数 dot() 负责矢量化?这种矢量化能否在没有 OpenCL 的 MQL5 中完成?

dot 只执行标量乘积。
MQL 中没有矢量变量。

 
Dmitriy Gizlyk:

dot 只执行标量乘积。
MQL 中没有矢量变量。

明白了,谢谢你的解释。

 

尽管这篇文章极有必要,尽管我对作者表示感谢,但我还是要总结一下这篇文章中真正缺少的东西:

1.没有考虑主要 mql 程序的代码,交易原则本身不明确; 2.

2.不清楚内核在哪里调用。

3.代码中包含对第三方库的引用,文章中没有说明,不清楚

4.文章本身没有考虑和解释内核,这就是为什么内核在论坛上引起了如此激烈的讨论。

5.内核本身的编写对于大多数没有 OpenCL 经验的用户来说非常困难。

6.神经网络训练方法完全不清楚

这六点使得这篇文章对绝大多数人来说几乎毫无用处。

我将保留我的观点:

1.您需要创建一个非常简单的 Expert Advisor 的 mql 代码,使用一个简单的指标进行交易,在 mql 上写出它的版本,并附上代码说明和 OpenCL 版本,然后比较速度,最好使用一个现成的示例,如 Moving Average.mq5。

2.2. 应说明对所有第三方库函数的调用

3.逐行详细描述内核,描述内核的几种变体并比较性能。

4.详细描述神经网络的训练方法。

就是这样 ....

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Если некоторое имя, которое не было описано ранее, появляется в выражении и за ним следует левая круглая скобка, то оно по контексту считается именем некоторой функции. Аргументы (формальные параметры) передаются по значению, т. е. каждое выражение x1, . . . , xn вычисляется и значение передается функции. Порядок вычисления выражений и порядок...
 
我想更加熟悉神经网络,深入研究它们。但从哪里开始呢?请给我一些相关的建议,如果不难的话。
 
我也很感兴趣,但有太多的信息来源,你会被淹没。从哪里开始呢?
 
NeuroNet 存档中的文件是什么 - copy.mqh?
 
Ivan Titov:
存档中的 NeuroNet.mqh 文件是什么?

我对NeuroNet.mqh 文件进行了一些清理。为了与以前文章中的 EA 兼容,我将旧版本保存为一个副本。