CHEN Yihui il y a 5 ans
Parent
commit
dcd347cce3
1 fichiers modifiés avec 31 ajouts et 3 suppressions
  1. 31 3
      report.md

+ 31 - 3
report.md

@@ -336,15 +336,43 @@ end do
 
 ##### 性能结果
 
-
 ## 个人实验
 
+##### 问题描述
+
+###### LSTM长短时记忆
+
+长短期记忆(英语:Long Short-Term Memory,LSTM)是一种时间递归神经网络(RNN),论文首次发表于1997年。由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。LSTM可以应用在语音识别,机器翻译,自然语言处理,手写识别等机器学习应用。
+
+##### 串行算法描述
+
+###### 计算公式
+
+$$
+i_t=\text{sigmoid}(W_{ii}x_t+b_{ii}+W_{hi}h_{(t-1)}+b_{hi})\\
+f_t=\text{sigmoid}(W_{if}x_t+b_{if}+W_{hf}h_{(t-1)}+b_{hf})\\
+g_t=\text{tanh}(W_{ig}x_t+b_{ig}+W_{hc}h_{(t-1)}+b_{hg})\\
+o_t=\text{sigmoid}(W_{io}x_t+b_{io}+W_{ho}h_{(t-1)}+b_{ho})\\
+c_t=f_t\cdot c_{(t-1)}+i_t\cdot g_t\\
+h_t=o_t\cdot \text{tanh}(c_t)
+$$
+
 ##### 并行算法描述
 
+###### 依赖关系分析
 
-##### MPI实现
+从上面公式来看,输出$c_t,h_t$依赖于$c_{(t-1)},f_t,g_t,i_t,o_t$,而$i_t,f_t,g_t,o_t$又依赖于$h_{(t-1)}$,对于这种随时间的迭代计算,不同时间$t$之间不能并行计算,因而考虑$i_t,f_t,g_t,o_t$可以并行计算,而在$i_t,f_t,g_t,o_t$内有矩阵乘加计算,也可以使用分块矩阵的并行计算。
 
-##### 核心MPI代码
+###### MPI+OpenMP设计
+
+对于LSTM的各个时间点的计算,使用MPI分配在不同的节点上,使用流水化设计,节点间只需传输$h_t,c_t$
+
+对于LSTM的一个时间点内的计算,考虑在同一个节点上使用MPI分为$i_t,f_t,g_t,o_t$4个部分计算,需要广播$x_t$
+
+$i_t,f_t,g_t,o_t$每个部分内的矩阵乘法使用OpenMP计算,OpenMP的线程数设置为,一个节点上的处理器个数/4
+
+
+##### MPI+OpenMP实现
 
 ##### 性能结果