-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Welcome to the ppm_one wiki!
This is the GitHub available for the manuscript "Accelerating Prediction of Chemical Shift of Protein Structureson GPUs", currently under evaluation. We have uploaded a draft copy in arXiv, which can be found here https://www.biorxiv.org/content/10.1101/2020.01.12.903468v1
The PDB files have been previously published and can be found here
- Byeon IJL, Meng X, Jung J, Zhao G, Yang R, Ahn J, et al. Structuralconvergence between Cryo-EM and NMR reveals intersubunit interactions criticalfor HIV-1 capsid function. Cell. 2009;139(4):780–790.32.
- Zhao G, Perilla JR, Yufenyuy EL, Meng X, Chen B, Ning J, et al. Mature HIV-1capsid structure by cryo-electron microscopy and all-atom molecular dynamics.Nature. 2013;497(7451):643–646.33.
- Kong L, Sochacki KA, Wang H, Fang S, Canagarajah B, Kehr AD, et al.Cryo-EM of the dynamin polymer assembled on lipid membrane. Nature.2018;560(7717):258–262
Here are some of the learned OpenACC Practices:
-
Develop a thorough test suite for your application from the start. OpenACC allows the programmer to make incremental improvements as he/she moves small pieces of code at a time over to the GPU. It will save a lot of headache if the programmer has a simple suite that can easily run after each change to verify that the code is behaving correctly and producing results that one expects
-
Focus on correctness first before performance. It does not matter how fast the code is running if the output it is giving is wrong. OpenACC makes it very easy to optimize a code after it is already running on the GPU.
-
Use profiling utilities from the start and often. One of the things that we have found from PPM and other applications we have since worked on is that GPUs are very complex, applications are very complex, and programmers are not always perfect. Using profilers on a serial code can give anyone a good roadmap of which parts of the code are worth the effort in porting to OpenACC. Profiling a parallel code can give the programmer an idea of where the code can be improved or which parts of the code cannot be improved.
Acknowledgments
For this work, we gratefully acknowledge NVIDIA for accessto their PSG Cluster and for the donation of NVIDIA GPU such as Tesla K40 and aGTX Titan X (Maxwell) GPU cards via the NVIDIA hardware grant program. Thismaterial is based upon work supported by the National Science Foundation (NSF)under Grant No. 1814609. The work is also supported by the NIGMS and NIAID(P50GM082251 and P30GM110758). This work used the Extreme Science andEngineering Discovery Environment(XSEDE) supported by NSF grant OCI-1053575