读文献Accelerating molecular dynamics simulations using Graphics Processing Units with CUDA

   最近一直在忙着准备几天后的一个学期总结性质的会议,一直没时间写,趁着看这篇文祥的机会,写一点来请教一下。

Accelerating molecular dynamics simulations using Graphics Processing Units with CUDA

一、Introduction

二、Molecular dynamics simulation

三、Previous Work on accelerating molecular dynamics

四、The CUDA programming model

五、The CUDA-based MD simulation algorithm

六、Performance evaluation

  以上是此文的行文思路,我不是全文翻译,只是挑出里面我最感兴趣以及不明白的地方和大家分享。

1. 在第一部分In order to exploit the GPU’s capabilities for high performance MD simulation, we present a new algorithm for non-bonded short-range interactions within the atom system这里的non-boud short-range interactions 直译就是短程无键相互作用,为什么这里用这个呢??还有其他的长程、有键相互作用呢??(后面又讲到长程,但是也不懂)

2. 在第二部分提到由于计算力花费90%的模拟时间,因此设置一个cutoff,这个可以理解。但是后面又提到When the neighbor list is built, all of the nearby atoms within an extended cutoff distance rlist = rc + skin are stored.这里为什么还要加上一个skin啊??

3. 第三第四部分主要就是介绍GPU以及CUDA用于MD模拟的一些相关知识,比如GPU架构、加速策略等。

最最重要的,也是本文的核心就是第五部分。

4. 以数据分割作为任务划分的依据将加速方法分成以下几种类型:

1) AD即原子分割,一个处理器负责N/P个原子(N是原子总数,P是处理器数目)。每个处理器要保持一个相同的原子信息副本。

2) FD即力的分割,就是一个处理器负责一部分力,然而它并不能像AD那样轻易的保持负载平衡。

3) SD即空间分割。对于course-grained architectures, such as clusters来说,它比前两种方法要好。    

5. 本文选择的是AD方法,原因有以下两种

1) 良好的负载平衡以及可测量性可以轻易实现。

2) 在第三部分讲过GPU硬件是基于共享存储器的多处理系统,AD方法在这种系统上能够很好的表现。

6. 以下是进行分子动力学模拟的基本步骤:

  之所以在这里列出来是想告诉大家,在利用GPU运算时,要找出运算量最大,并行度能够达到最大的部分,将这一部分放在GPU上运行。在这里呢,作者说经过分析,其中Neighbor list update and Force calculation花费了超过97%的时间,因此将这两个部分移到GPU上进行运算。

7. 要利用CUDA编写一个高效的parallel neighbor list update 程序时,必须考虑在不同blockthread之间是无法同步或者通信的。 文中说到we have decided to use a partitioning of D into threads and thread blocks as illustrated in following figure :each column is assigned to a single thread and there are two threads in a thread block. 

     

    我在这里只是说一说我自己的理解啊,大家可以参考一下下,希望能够和你分享你的所得。

其实就是为每一个粒子建立一个类似栈的东西,而栈顶就是这个粒子,一个线程处理一个栈,计算位移、力以及能量等等都是以这个粒子为中心,同时又将两个thread作为一个block,又方便了各个粒子之间数据的交流。

    但是我不明白的是,这里既然每个thread都处理所有的粒子,那么thread间的通信又是为了什么呢??一个线程只能更新一个粒子的数据啊????那么岂不是这些block都要同步才行??

8. 在随后的行文里作者又讲到前面的方法会有多个kernel,这也是为了避免block之间通信不畅的问题的,但是由于两个kernel要重复交替运行,这样数据拷贝的时间开销就会很大,因此作者说要将程序合并成一个kernel,但是这样前面费了一些篇幅讲解的关于ADFDSD的方法就不能用了,这里他用二叉树的方法来寻找移动位移最大的粒子。但是让我郁闷的是这样有什么用吗???这对于neighbor list update有什么作用啊??

 

 全文看到这里,说句实话啊,很是糊涂啊,是那种一会明一会暗,忽明忽暗的感觉,越仔细看,越不明白。

加速基于相似度模型匹配——使用即时相似度保留哈希算法 摘要: 模型匹配是软件工程领域中的一个重要问题。使用相似度匹配方法可以有效地处理模型匹配问题,但是这种方法在大规模模型匹配时存在计算复杂度高的问题。为了解决这个问题,我们提出了一种基于即时相似度保留哈希算法的加速相似度匹配方法。该方法通过将模型元素映射到哈希表中的桶中,实现了快速的相似度计算。我们在两个实际项目中进行了实验,结果表明,我们的方法可以有效地提高相似度匹配的速度,同时保持与传统相似度匹配方法相同的匹配精度。 关键词:模型匹配、相似度匹配、哈希算法、加速 Abstract: Model matching is an important problem in the field of software engineering. Similarity-based matching methods can effectively handle model matching problems, but they suffer from high computational complexity when dealing with large-scale model matching. To address this issue, we propose an accelerated similarity-based matching method based on on-the-fly similarity preserving hashing. This method achieves fast similarity calculation by mapping model elements into buckets in a hash table. We conducted experiments on two real projects, and the results show that our method can effectively improve the speed of similarity matching while maintaining the same matching accuracy as traditional similarity matching methods. Keywords: Model matching, similarity-based matching, hashing algorithm, acceleration
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值