The best input is OUTPUT.

2016-07-07
MPI学习--阻塞通信之标准通信模式

MPI学习--阻塞通信之标准通信模式

阻塞通信

阻塞通信是指消息发送发的send调用需要接收方的recv调用的配合才可完成。即在发送的消息信封和数据被安全的“保存”起来之前,send函数的调用不会返回。
所谓的安全保存,就是指send调用可再次被执行而不会对上一次发送的数据带来任何破坏。
不同模式下所要求的“配合”程度也不同,尤其有的MPI环境下还要结合运行时环境本身提供的缓存机制综合考虑实际效果。

Read More

2016-07-06
MPI学习--消息传递通信

MPI学习--消息传递通信

MPI的工作模式

目前我对MPI的工作模式的理解就是他其实呢是把一份程序传送到不同的进程中,通过MPI的接口我们可以获取当前进程中的一些信息,例如进程号,进程总数等,这样我们就可以在程序中显式的对进程信息进行判断,然后做不同的处理,这样同一份程序在不同的进程中做的事情是不一样的,尽管代码(变量,函数等)都是一样的,可见这种并行的粒度是很大的。

下面引用下书里的一段话:

MPI程序工作模式
在不同工作模式下可以适合SPMD或者MPMD等体系结构。以串行方式编写,运行时分别执行不同的块。

这里的不同的块其实就是通过MPI提供的接口获取的进程信息进而写出的条件判断语句。

Read More

2016-07-06
MPI学习--并行系统和并行模式

MPI学习--并行系统和并行模式

当然现在的目的还是为了学习MPI,不过事实上MPI并不能完全的算作是理想意义上的并行编程模型,它只是提供了一种粗粒度的并行机制,而在进程的粒度上看,MPI程序仍是并行的。

并行系统

Flynn分类法 – 按指令/数据模式的分类

从处理器指令级别的并行来考察的话,Flynn依据指令和数据流的不同给出计算机的分类,例如SIMD和MIMD。
关于什么是单指令多数据流和多指令多数据流,我在quora上面搜到了个不错的解释:

SIMD and MIMD are types of parallel architectures identified in Flynn’s taxonomy, which basically says that computers have single (S) or multiple (M) streams of instructions (I) and data (D), leading to four types of computers: SISD, SIMD, MISD, and MIMD. Let’s skip SISD and MISD, since the question doesn’t ask about them, and neither is spectacularly interesting.

Read More

2016-07-05
MPI学习--MPICH并行环境搭建与配置

MPI学习--MPICH并行环境搭建与配置

这篇主要记录使用自己用户在实验室的IBM刀片集群上搭建MPI并行环境以及简单的测试,具体什么是MPI这里就不多讲了,主要记录自己的MPI环境的搭建过程。

下载MPICH

现在MPICH官网上已经有MPICH3.2,但是安装了以后发现3.2的进程管理器并没有mpd而是Hydra Process Manager为了用上最新的我也就直接上最新版了肯定不会有错。

下下来的压缩包为: mpich-3.2.tar.gz

Read More

2016-07-05
发现KMCLib中一个隐藏bug

发现KMCLib中一个隐藏bug

由于为了看自己的KMCLibX是不是能跑出正确的结果,我将每一个蒙特卡洛步的configuration进行了散点图,来观察每一步事件的选取和configuration发生的变化,把事件全部定义好以后,跑了500步做了下图就发现,吸附在top位的O有落单的现象,明明我没有在事件中定义过有破坏平躺吸附在表面的氧原子的事件啊,这就奇怪了。于是我就将做图的范围缩窄,逐渐定位到了是哪一步开始出现单个top位上的氧原子。
如下图,是发生在第27步的时候,直接会有一个氧分子直接变成吸附在bridge site上的CO:

Read More

2016-07-02
决定给KMCLibX添加分子取向识别

决定给KMCLibX添加分子取向识别

之前以为做CO Oxidation不需要进行分子取向的匹配,但是以为实际开始运行程序之后观察点阵图发现,图中出现了异常的局部configuration,导致出现某个区域的反应物像中毒一样固定在表面无法参与反应,仔细想了想,是因为没有添加分子取向的匹配导致发生脱附的时候破坏了分子在表面的完整性。
于是本来要给程序添加MPI的计划泡汤了,要将KMCLibX从头到尾大改以支持分子取向的匹配,希望一周能搞定。

PS. 暂时把KMCLibX在GitHub上变成了私有仓库,等文章搞定前后会再次开放源代码。

Read More