【发布时间】:2012-02-04 20:50:59
【问题描述】:
我有一个线性代数代码,我试图让它运行得更快。它是一种迭代算法,其中包含循环和矩阵向量乘法。 到目前为止,我已经使用了 MATMUL(Fortran Lib.)、DGEMV,尝试在 OpenMP 中编写我自己的 MV 代码,但该算法在可扩展性方面并没有做得更好。无论我分配多少个处理器(我已经尝试了 64 个处理器),加速都几乎没有 3.5 - 4。 分析显示在 Matrix-Vector 中花费了大量时间,其余时间相当名义上。 我的问题是: 我有一个拥有大量 RAM 和处理器的共享内存系统。我曾尝试调整代码的 OpenMP 实现(包括矩阵向量),但没有帮助。在 MPI 中编码会有所帮助吗?我不是 MPI 的专业人士,但微调消息通信的能力可能会有所帮助,但我不能确定。有cmets吗?
更一般地说,从我读过的文献来看,MPI = 分布式,OpenMP = 共享,但它们能在其他领域表现良好吗?像共享中的 MPI?它会起作用吗?如果做得好,会比 OpenMP 实现更好吗?
【问题讨论】:
标签: mpi openmp linear-algebra lapack intel-fortran