Skip to content
Sunita Chandrasekaran edited this page Apr 6, 2020 · 3 revisions

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

Clone this wiki locally