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

 
Aleksey Vyazmikin:

因此,这并不是什么新闻--原来只有一个内核,负载很重,现在有了两个内核,负载减少了一半....。最有可能的是,这种变化更为显著,而这种比较是不正确的。

要了解加速的原因,光看内核数量是不够的,还应该看看计算的架构。
 
Dmitriy Gizlyk:
要了解加速的原因,光看内核数量是不够的,还必须看计算架构。

我同意。我不明白为什么要并行处理 4 个矢量而不是 2 个?

 
Aleksey Vyazmikin:

因此,这并不是什么新闻--原来只有一个内核,负载很重,现在有了两个内核,负载减少了一半....。最有可能的是,变化更为显著,对比并不正确。

内存分配可以更高效,一个内核可以一次性获得全部数据,而无需重新分配。结果是速度更快。但对于某些任务来说,当内核 计算需要大量资源时,速度可能会更慢。

 
Aleksey Vyazmikin:

同意。在这里,我不明白为什么要将 4 个矢量平行化,而不是 2 个?

2 个矢量各包含 4 个元素,被平行化了。矢量 inp 和 weight。他们在每个向量中放入 4 个元素,然后用点乘以它们。

dot(inp,weight) -> i1*w1+i2*w2+i3*w3+i4*w4
 
Dmitriy Gizlyk

感谢您的回复。

 
Maxim Dmitrievsky:

内存分配的效率更高,内核可以一次性获取全部数据,而无需重新分配。这样做的结果是速度更快。但对于某些任务,当内核 计算需要大量资源时,速度可能会慢一些。

也许吧

 
感谢你的系列文章,既有趣又翔实。但如何训练网络,这是我不明白的地方。我已经在欧元兑美元图表 上运行了好几次。预测增长,然后开始下降。有人已经训练过网络了吗?
 
Dmitriy Gizlyk:

两个各包含 4 个元素的向量并行。向量 inp(初始数据)和 weight(权重)。每个向量写入 4 个元素,然后用点乘以

也就是说,由于顺序相乘操作,会出现增加?毕竟,两个向量是并行的,其中每个向量都顺序执行了 4 次(有条件的)乘法运算?

 
非常有趣的文章,神经网络是时下的热门话题。感谢作者的出色工作。
 
Aleksey Vyazmikin:

也就是说,由于顺序乘法运算,运算量会增加?毕竟,两个矢量是并行的,其中每个矢量都要顺序执行 4 次(有条件的)乘法运算?

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

4.1. Что такое векторизация и зачем она нужна - Векторные вычисления с помощью OpenMP 4.0 | Coursera
4.1. Что такое векторизация и зачем она нужна - Векторные вычисления с помощью OpenMP 4.0 | Coursera
  • ru.coursera.org
Video created by Национальный исследовательский Томский государственный университет for the course "Введение в параллельное программирование с использованием OpenMP и MPI". Приветствуем вас на четвертой неделе курса! На этой недели мы разберемся ...