User Tools

Site Tools


gpu_isac

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
gpu_isac [2020/06/18 12:32]
fschoenfeld
gpu_isac [2020/08/03 15:20]
fschoenfeld
Line 3: Line 3:
 ===== Overview ===== ===== Overview =====
  
-**ISAC** (Iterative Stable Alignment and Clustering) is a 2D classification algorithm to sort cryo-EM particles into classes depicting the same view of a target protein. It is based around iterations of  +**ISAC** (Iterative Stable Alignment and Clustering) is a 2D classification algorithm to sort cryo-EM particles into classes depicting the same view of a target protein. It is based around iterations of alternating equal size k-means clustering and repeated 2D alignment routines.  
-alternating equal size k-means clustering and repeated 2D alignment routines. + 
 +**ISAC2** is an improved version of ISAC, and the default tool to produce 2D class averages in the **[[http://sphire.mpg.de/wiki/doku.php?id=downloads:sphire_1_3|SPHIRE]]** ([[https://github.com/cryoem/eman2|git]]) software package and the **[[https://github.com/MPI-Dortmund/transphire|TranSPHIRE]]** automated pipeline for processing cryo-EM data. ISAC2 is a CPU-only implementation that is usually run on a computer cluster. 
 + 
 +**GPU ISAC** is designed to run ISAC2 on a single workstation by outsourcing its computationally expensive calculations to any available GPUs.
  
 <note> <note>
Line 10: Line 13:
 ''Yang, Z., Fang, J., Chittuluru, J., Asturias, F. J. and Penczek, P. A. (2012) Iterative stable alignment and clustering of 2D transmission electron microscope images. Structure 20, 237–247.'' ''Yang, Z., Fang, J., Chittuluru, J., Asturias, F. J. and Penczek, P. A. (2012) Iterative stable alignment and clustering of 2D transmission electron microscope images. Structure 20, 237–247.''
 </note> </note>
- 
-**ISAC2** is an improved version of ISAC, and the default tool to produce 2D class averages in the **[[http://sphire.mpg.de/wiki/doku.php?id=downloads:sphire_1_3|SPHIRE]]** ([[https://github.com/cryoem/eman2|git]]) software package and the **[[https://github.com/MPI-Dortmund/transphire|TranSPHIRE]]** automated pipeline for processing cryo-EM data. ISAC2 is a CPU-only implementation that is usually run on a computer cluster. 
- 
-**GPU ISAC** is designed to run ISAC2 on a single workstation by outsourcing its computationally expensive calculations to any available GPUs. 
  
 <note important> <note important>
-**Beta version:** The currently available version of GPU ISAC is a beta version. A significantly improved and significantly faster version is being tested right now and will be released shortly.+**Chimera Beta:** The previously distributed GPU ISAC "Chimera" Beta version is no longer supported and we recommend using the current version of GPU ISAC. You can still find the "Chimera" documentation [[https://sphire.mpg.de/wiki/doku.php?id=gpu_isac_chimera|here]], however.
 </note> </note>
  
Line 45: Line 44:
 export LD_LIBRARY_PATH=/path/to/cuda/lib64:${LD_LIBRARY_PATH}</code> Where ''path/to/cuda/bin'' and ''path/to/cuda/lib64'' need to be replaced with the real paths to the respective folders. If you do not know where to find them, by default they should be located in ''/usr/local/cuda''. export LD_LIBRARY_PATH=/path/to/cuda/lib64:${LD_LIBRARY_PATH}</code> Where ''path/to/cuda/bin'' and ''path/to/cuda/lib64'' need to be replaced with the real paths to the respective folders. If you do not know where to find them, by default they should be located in ''/usr/local/cuda''.
   - **Compile the GPU ISAC C++/CUDA library:**   - **Compile the GPU ISAC C++/CUDA library:**
-    - <code>cd vChimera/cuda</code>//Note: This assumes you entered your installation folder in your terminal before!//+    - <code>cd vChimera/cuda</code>//**Note:** This assumes you did not change directories after unpacking the .tar archive.//
     - <code>nvcc gpu_aln_common.cu gpu_aln_noref.cu -o gpu_aln_pack.so -shared -Xcompiler -fPIC -lcufft -std=c++11</code>     - <code>nvcc gpu_aln_common.cu gpu_aln_noref.cu -o gpu_aln_pack.so -shared -Xcompiler -fPIC -lcufft -std=c++11</code>
   - **Adjust sparx libraries** to work with the C++/CUDA library we just compiled:   - **Adjust sparx libraries** to work with the C++/CUDA library we just compiled:
Line 52: Line 51:
     - <code>sed -i.bkp2 's|statistics.sum_oe( data, "a", CTF, EMData(), myid=myid|statistics.sum_oe( data, "a", CTF, EMData()|g' applications.py</code>     - <code>sed -i.bkp2 's|statistics.sum_oe( data, "a", CTF, EMData(), myid=myid|statistics.sum_oe( data, "a", CTF, EMData()|g' applications.py</code>
   - **Set the correct libraries and environment:**   - **Set the correct libraries and environment:**
-    - <code>cd ../bin</code> //Note: We are now in the **/eman2/sparx/bin** folder of your GPU ISAC installation folder.// +    - <code>cd ../bin</code> //**Note:** We are now in the **/eman2/sparx/bin** folder of your GPU ISAC installation folder.// 
-    - <code>ln -rs ../libpy/* .</code> //Note: Don't forget the dot at the end!//+    - <code>ln -rs ../libpy/* .</code> //**Note:** Don't forget the dot at the end!//
     - <code>sed -i.bkp "s|/home/schoenf/applications/sphire/v1.1/envs/sphire_1.3/bin|$(dirname $(which sphire))|g" sxisac2_gpu.py</code>     - <code>sed -i.bkp "s|/home/schoenf/applications/sphire/v1.1/envs/sphire_1.3/bin|$(dirname $(which sphire))|g" sxisac2_gpu.py</code>
-    - <code>sed -i.bkp2 <nowiki>"</nowiki>s/^\(.*options, args.*\)$/\1\n    os.environ['CUDA_VISIBLE_DEVICES'] = options.gpu_devices\n    options.gpu_devices = ','.join(map(str, range(len(options.gpu_devices.split(',')))))/g<nowiki>"</nowiki> sxisac2_gpu.py</code>+    - <code>sed -i.bkp2 "s/^\(.*options, args.*\)$/\1\n    os.environ['CUDA_VISIBLE_DEVICES'] = options.gpu_devices\n    options.gpu_devices = ','.join(map(str, range(len(options.gpu_devices.split(',')))))/g" sxisac2_gpu.py</code> 
 +  - **Bugfix for the Chimera beta:** 
 +    - <code>sed -i.bkp3 "s/output_text = \"\n/output_text = \"/g" sxisac2_gpu.py</code>
  
  
gpu_isac.txt · Last modified: 2021/05/08 00:41 by shaikh