MD模擬方法與技巧 (右鍵另存下載)
分子動力學模擬方法與技巧
Molecular Dynamics Simulation : Method and Technique
曾飛煥
本講義分為四個章節進行。第一章,將以實例逐步講解如何用intel fortran f90程式碼建立分子動力學的二維模擬(2dMDS); 第二章則將程式稍作修改,推廣到兩種類顆粒混合的三維系統(3dMDS); 第三章,轉向介紹如何使用PGI fortran的CUDA模組將2dMDS平行化。最後第四章則會介紹如何使用CUDA fortran的平行化來模擬或說求解二維的反應擴散方程。
在往下閱讀講義時,請確定你已安裝好所需要的程式,並且能讓講義附帶的範例程式正常執行,否則只單純的閱讀講義將會枯燥乏味,保證對你學習程式毫無幫助。關於intel fortran的安裝與範例執行,請見附錄(A)。附錄(B)是CUDA Fortran的安裝設定。附錄(C)是串行程式與平行程式的效率比較。
感謝東海顧先生提醒,Program Parallel 忘了宣告Dx成Device的變數,,因此無法執行。建議修改成
Module gpu
Use cudafor
Real*4,Device,Allocatable,dimension(:) :: Dx !! 原程式主要少了這個宣告
Contains
Attributes(global) Subroutine iteration(NT)
Integer, Value :: NT
Integer i,j
i = (blockIdx%x – 1)*NT + threadIdx%x
Do j = 1, 100
Dx(i) = sin(Dx(i))
End do
End Subroutine
End Module gpu
Program parallel
Use cudafor
Use gpu
Real*4,Allocatable,dimension(:) :: Hx
Integer NB,NT
NB = 512 ; NT = 256
idevice = 0
istat = cudaSetDevice(idevice)
e
Allocate(Hx(NB*NT),Dx(NB*NT))
Call random_number(Hx)
Dx = Hx
Call iteration<<>> (NT)
Hx = Dx
Write(*,*) Hx(1:100)
pause
End Program
你好,我是碩一在學學生,目前準備對分子動力學著手,請問有機會跟你請教分子動力學嗎?
歡迎,只是我有段時間沒在玩了,未必能完全解答你的問題。你可以把你的問題email到這個信箱:cikgufly@ygmail.com