小编dx_*_*mrt的帖子

测量MPI通信成本的工具

我正在使用MPI,我想测量通信成本,以便我可以将它们与"处理"成本进行比较,例如,我需要多长时间通过n个流程分散列表然后将其与多少时间进行比较时间我需要对它进行排序.

有没有人知道任何衡量这种通信成本的工具?(分散例如)

有没有什么可以测量MPI通信成本,例如PAPI来分析代码性能?

提前致谢!

performance communication mpi

22
推荐指数
1
解决办法
4338
查看次数

维特比训练或鲍姆 - 韦尔奇算法来估计过渡和排放概率?

我试图使用维特比算法在HMM上找到最可能的路径(即一系列状态).但是,我不知道过渡和发射矩阵,我需要从观测结果(数据)中估算出来.

要估计这些矩阵,我应该使用哪种算法:Baum-Welch还是Viterbi训练算法?为什么?

如果我应该使用维特比训练算法,任何人都可以给我一个很好的伪代码(它不容易找到)?

algorithm viterbi hidden-markov-models expectation-maximization

9
推荐指数
1
解决办法
7038
查看次数

特定舍入模式的意外结果

首先,抱歉标题不好:/

我试图在计算三对角对称矩阵的特征值时重现论文的结果.我通过分别舍入到正负无限来确定一些值'上限和下限'.

我不是每次都改变舍入模式,而是使用'技巧':fl - (y)=-fl⁺(-y),其中fl - (y)是使用负无限舍入模式时的y值fl⁺(y)是使用舍入模式加上无穷大时的y值.所以,我在C中有以下代码:

fesetround(FE_UPWARD);
first =  - (-d[i] + x);
second =  ( - (( e[i-1]*e[i-1] ) / a_inf ));
a_inf = first + second;

first = d[i] - x;
second = - ( ( e[i-1]*e[i-1] ) / a_sup );
a_sup = first + second;
Run Code Online (Sandbox Code Playgroud)

除了一个例子,其中a_inf给了我正确的结果,但是a_sup给出了错误的结果,尽管第一个和第二个变量似乎都具有相同的值,但它工作正常.

但是,如果我喜欢这样:

  fesetround(FE_UPWARD);
  first =  - (-d[i] + x);
  second =  ( - (( e[i-1]*e[i-1] ) / a_inf ));

  fesetround(FE_DOWNWARD);
  first =  - (-d[i] + x);
  second =  ( - (( …
Run Code Online (Sandbox Code Playgroud)

c rounding numerical-analysis numerical-methods

5
推荐指数
1
解决办法
172
查看次数

MPI通信复杂度

我正在研究MPI中Quicksort的并行实现的通信复杂性,并且我在书中发现了以下内容:

“一个进程从其他p-1个进程中收集p个常规样本。由于传递的值相对较少,因此消息等待时间可能是此步骤的主要决定因素。因此,收集的通信复杂度为O(log p)”(O实际上是theta,而p是处理器数)。

对广播消息做出相同的确认。

为什么这些组通信复杂度为O(log p)?是因为通信是使用某种基于树的层次结构完成的?

如果延迟不是主要因素,并且发送了大量数据怎么办?复杂度是否为O(n log(p)),其中n是要发送的数据大小除以可用带宽?

而且,MPI_Send()和MPI_Recv()的通信复杂度如何?

提前致谢!

parallel-processing complexity-theory communication mpi

4
推荐指数
1
解决办法
2698
查看次数

主人在Rmpi程序中消耗100%的CPU

我正在使用Rmpi(v.6.2-2)软件包来并行化我的R(v.2.15)代码.我有以下代码和平:

library(Rmpi)
source("slaveFunction04.r")
mpi.spawn.Rslaves(nslaves=2)
mpi.bcast.Robj2slave(slaveFunction04)
mpi.remote.exec(slaveFunction04())
mpi.close.Rslaves()
mpi.quit()
Run Code Online (Sandbox Code Playgroud)

当从属程序正在执行slaveFunction04时,我希望主进程处于空闲状态,消耗的资源非常少,因为当您使用带有C或Fortran的MPI时会发生这种情况.但相反,主机正在消耗100%的CPU,就像从机一样(每个进程都在自己的核心中运行).

知道为什么会这样,我该如何解决呢?

对于MPI,我在OpenSuse 12.3上使用OpenMPI v.1.6-3.1.2.

提前致谢.

hpc r mpi

1
推荐指数
1
解决办法
409
查看次数

将2d数组从C传递给fortran77

我在fortran77 dec(3,25000)中有以下数组,即使只使用了第二维中25000个位置中的8898个.

我将此数组作为参数与其他数组一起传递给C函数.即使其他参数的值似乎正确,但dec()值也是错误的.

我试过只传递dec()数组,结果是一样的.dec(1,1)(fortran77)中的值等于dec [0] [0](C)中的值,但对于数组中的随机位置,我在调用C之前在fortran77中没有得到相同的值功能和C功能.

知道为什么会这样吗?

该数组在fortran中声明为真正的*8 dec(3,25000),在C中声明为int dec [3] [25000].

提前致谢

c fortran77

0
推荐指数
1
解决办法
100
查看次数