This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
gpu_isac [2020/09/23 14:41] fschoenfeld |
gpu_isac [2021/02/22 13:33] fschoenfeld |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{ : | + | {{ : |
===== Overview ===== | ===== Overview ===== | ||
Line 5: | Line 5: | ||
**ISAC** (// | **ISAC** (// | ||
- | < | + | < |
- | You can find the details of the ISAC algorithm in [[https:// | + | |
- | '' | + | |
- | </ | + | |
===== ISAC versions ===== | ===== ISAC versions ===== | ||
- | * **ISAC** is the initial version as described in the original paper. At this point this implementation is obsolete and has been replaced by ISAC2 and GPU ISAC (see below). | + | * **ISAC** |
- | + | * **ISAC2** | |
- | * **ISAC2** is an improved version of ISAC and used by default to produce 2D class averages in the **[[http:// | + | * **GPU ISAC** |
- | + | ||
- | * **GPU ISAC** was developed to run ISAC2 on a single workstation by outsourcing its computationally expensive bottleneck calculations to any available GPUs, while simultaneously keeping its MPI-based CPU parallelization otherwise intact. GPU ISAC is provided as an add-on to SPHIRE that can be installed manually (see below). | + | |
===== Download & Installation ===== | ===== Download & Installation ===== | ||
- | <note important> | + | <note important> |
- | **Before you start**, please note the following **system requirements** | + | |
---- | ---- | ||
- | * **CUDA:** These installation instructions assume that CUDA is already installed on your system. You can confirm this by running '' | + | * **CUDA: |
- | + | * **SPHIRE: | |
- | * **SPHIRE:** In order to use GPU ISAC, SPHIRE needs to be installed. You can find the SPHIRE download and installation instructions [[http:// | + | |
</ | </ | ||
Line 34: | Line 25: | ||
=== Download === | === Download === | ||
- | * GPU ISAC is currently developed as a manually installed add-on for SPHIRE and distributed as a .zip file that can be found here: {{: | + | * GPU ISAC is currently developed as a manually installed add-on for SPHIRE and distributed as a .zip file that can be found here: {{: |
---- | ---- | ||
=== Installation === | === Installation === | ||
- | Before you start, make sure your SPHIRE environment is activated. | + | |
- | <hidden How to activate your SPHIRE environment:> | + | Before you start, make sure your SPHIRE environment is activated. <hidden How to activate your SPHIRE environment:> |
- | * During the SPHIRE installation, | + | |
- | * Look for your SPHIRE environment and activate it using either: < | + | * During the SPHIRE installation, |
+ | < | ||
+ | |||
+ | conda env list | ||
+ | |||
+ | </ | ||
+ | |||
+ | * Look for your SPHIRE environment and activate it using either: | ||
+ | |||
+ | < | ||
+ | conda activate NAME_OF_YOUR_ENVIRONMENT | ||
+ | |||
+ | </ | ||
+ | |||
+ | or | ||
+ | |||
+ | < | ||
+ | source activate NAME_OF_YOUR_ENVIRONMENT | ||
+ | |||
+ | </ | ||
+ | |||
+ | It will depend on your system and Anaconda installation which one of these you will have to use. | ||
</ | </ | ||
- | \\ | ||
GPU ISAC comes with a handy installation script that can be used as follows: | GPU ISAC comes with a handy installation script that can be used as follows: | ||
- | - **Extract the archive** to your chosen GPU ISAC installation folder. | + | - **Extract the archive** |
- | - **Open a terminal** and navigate to your installation folder. | + | - **Open a terminal** |
- | - **Run the installation script**: < | + | - **Run the installation script**: |
+ | < | ||
+ | ./ | ||
+ | |||
+ | </ | ||
All done! | All done! | ||
+ | |||
+ | < | ||
===== Running GPU ISAC ===== | ===== Running GPU ISAC ===== | ||
- | An example call to use GPU ISAC looks as follows: | + | When calling |
< | < | ||
- | mpirun python /path/to/sxisac2_gpu.py bdb: | + | mpirun python /path/to/sp_isac2_gpu.py bdb: |
</ | </ | ||
Line 65: | Line 84: | ||
< | < | ||
- | mpirun python /path/to/sxisac2_gpu.py | + | mpirun python /path/to/sp_isac2_gpu.py |
bdb: | bdb: | ||
path/ | path/ | ||
- | --CTF | + | --CTF |
-–radius=160 | -–radius=160 | ||
--img_per_grp=100 | --img_per_grp=100 | ||
--minimum_grp_size=60 | --minimum_grp_size=60 | ||
--gpu_devices=0, | --gpu_devices=0, | ||
+ | |||
</ | </ | ||
- | **[ ! ] - Mandatory** parameters in the GPU ISAC call: | + | **[ ! ] - Mandatory** |
- | * '' | + | * '' |
- | * ''/ | + | * ''/ |
- | * '' | + | * '' |
- | * '' | + | * '' |
- | * ''< | + | * ''< |
- | * ''< | + | * ''< |
+ | <hidden What GPUs do I have and what are their system id values?> You can use '' | ||
- | <hidden What GPUs do I have and what are their system id values?> | + | {{ : |
- | You can use '' | + | |
- | {{ :gpu_isac: | + | Above: Example output of '' |
- | Above: Example output of '' | + | **[?] - Optional** |
- | </ | + | |
- | \\ | + | |
- | **[?] - Optional** parameters recommended to be used when running GPU ISAC: | + | |
- | | + | * Use ''< |
- | * Use ''< | + | * Use ''< |
- | * Use ''< | + | |
< | < | ||
- | * An up to date list of **all GPU ISAC parameters** can always be printed by using the '' | ||
- | * The online documentation of **ISAC2 parameters** can be found [[http:// | + | |
- | + | < | |
- | * **Additional utilities** that are helpful when using any version of ISAC can be found [[http:// | + | |
+ | mpirun python / | ||
+ | |||
+ | </ | ||
+ | |||
+ | or simply | ||
+ | |||
+ | < | ||
+ | python / | ||
+ | |||
+ | </ | ||
+ | |||
+ | | ||
+ | |||
+ | * **Additional utilities** | ||
+ | * More information about **using ISAC for 2D classification** | ||
- | * More information about **using ISAC for 2D classification** can also be found in the ISAC chapter of the official [[ftp:// | ||
</ | </ | ||
Line 114: | Line 144: | ||
This example is a test run that can be used to confirm GPU ISAC was installed successfully. It is a small stack that contains 64 artificial faces and is already included in the GPU ISAC installation package. You can process it using GPU ISAC as follows: | This example is a test run that can be used to confirm GPU ISAC was installed successfully. It is a small stack that contains 64 artificial faces and is already included in the GPU ISAC installation package. You can process it using GPU ISAC as follows: | ||
- | - In your terminal, navigate to your GPU ISAC installation folder:< | + | - In your terminal, navigate to your GPU ISAC installation folder: |
- | - Run GPU ISAC:< | + | < |
+ | |||
+ | cd / | ||
+ | |||
+ | </ | ||
+ | |||
+ | - Run GPU ISAC: | ||
+ | |||
+ | < | ||
+ | mpirun python bin/sp_isac2_gpu.py ' | ||
+ | |||
+ | </ | ||
Note that we don't care about the quality of any produced averages here; this test is used to make sure there are no runtime issues before a more time consuming run is executed. | Note that we don't care about the quality of any produced averages here; this test is used to make sure there are no runtime issues before a more time consuming run is executed. | ||
Line 125: | Line 166: | ||
This example uses the [[https:// | This example uses the [[https:// | ||
- | After downloading the data you'll notice that the extracted folder contains a multitude of subfolders. For the purposes of this example we are only interested in the '' | + | After downloading the data you'll notice that the extracted folder contains a multitude of subfolders. For the purposes of this example we are only interested in the '' |
You can process this stack using GPU ISAC as follows: | You can process this stack using GPU ISAC as follows: | ||
- | - In your terminal, navigate to your GPU ISAC installation folder:< | + | - In your terminal, navigate to your GPU ISAC installation folder: |
- | - Run GPU ISAC:< | + | < |
- | * Replace ''/ | + | |
- | * Optional: Replace ''< | + | |
- | The final averages can then be found in '' | + | cd /gpu/ |
- | {{: | + | </ |
- | Above: 95 class averages produced when processing the above data set using GPU ISAC. The particle stack contains 11,003 particles and the averages were computed within 6 minutes (Intel i9-7020X CPU and 2x GeForce GTX 1080 GPUs). | + | |
+ | - Run GPU ISAC: | ||
+ | |||
+ | < | ||
+ | mpirun python bin/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | * Replace ''/ | ||
+ | * Optional: Replace ''< | ||
+ | |||
+ | The final averages can then be found in '' | ||
+ | |||
+ | {{: | ||
===== Usage ===== | ===== Usage ===== | ||
Line 144: | Line 196: | ||
* Quickly generate **2D class averages**. | * Quickly generate **2D class averages**. | ||
- | * Quickly identify **suitable parameters** for your data set. | + | * Quickly identify **suitable parameters** |
- | * Quickly gauge the **quality of your data** set before spending time on more costly processing steps. | + | * Quickly gauge the **quality of your data** |
- | <hidden Well, " | + | <hidden Well, " |
- | Clustering cryo-EM data is a difficult problem that involves many different parameters and often it is unclear how these impact the resulting 2D class averages. In GPU ISAC the most relevant parameters to fiddle with are: | + | |
- | * **Class size:** The class (or cluster) size ''< | + | * **Class size: |
- | * **Threshold error:** The ''< | + | * **Threshold error: |
- | + | Since GPU ISAC processes small stacks of about 10,000 to 20,000 particles fairly quickly, you can try several runs with different values for ''< | |
- | Since GPU ISAC processes small stacks of about 10,000 to 20,000 particles fairly quickly, you can try several runs with different values for ''< | + | |
- | Once you are happy with the results, you can use these parameters for a full-sized run of (GPU) ISAC. Good luck! :) | + | |
- | </ | + | |
- | \\ | + | |
===== GPU ISAC output files ===== | ===== GPU ISAC output files ===== | ||
Line 162: | Line 209: | ||
GPU ISAC produces a multitude of output files that can be used to analyze the success of running the program, even while it is still ongoing. These include the following: | GPU ISAC produces a multitude of output files that can be used to analyze the success of running the program, even while it is still ongoing. These include the following: | ||
- | * **Main iteration folders:** As GPU ISAC is running, it performs multiple "main iterations" | + | * **Main iteration folders: |
- | * In both the main iteration folders and the base output folder you will find '' | + | * In both the main iteration folders and the base output folder you will find '' |
- | * **The final averages** are stored in '' | + | * **The final averages** |
===== Release notes ===== | ===== Release notes ===== | ||
Line 172: | Line 218: | ||
* The current develpoment goal of GPU ISAC is to run as fast as possible on a single machine. Because of this priority, **GPU ISAC does not yet run on multiple nodes**. This is planned to change as soon as the currently known bottlenecks have all been converted to run on the available GPUs. | * The current develpoment goal of GPU ISAC is to run as fast as possible on a single machine. Because of this priority, **GPU ISAC does not yet run on multiple nodes**. This is planned to change as soon as the currently known bottlenecks have all been converted to run on the available GPUs. | ||
- | ------ | + | ---- |
**Known issues** | **Known issues** | ||
- | * In some cases **when using CUDA version 11, GPU ISAC receives a kill signal interrupt**. We're investigating the issue but recommend to use a lower version (confirmed working when using CUDA 9 and 10) until it is resolved. You can use '' | + | * In some cases **when using CUDA version 11, GPU ISAC receives a kill signal interrupt**. We're investigating the issue but recommend to use a lower version (confirmed working when using CUDA 9 and 10) until it is resolved. You can use '' |
+ | |||
+ | ---- | ||
+ | |||
+ | **GPU ISAC v2.3.4** | ||
+ | |||
+ | * Updated the installer to automatically link GPU ISAC to the SPHIRE GUI. | ||
+ | |||
+ | **GPU ISAC v2.3.3** | ||
- | ------ | + | * Internal changes only. |
**GPU ISAC v2.3.1 & v2.3.2 (hotfix releases)** | **GPU ISAC v2.3.1 & v2.3.2 (hotfix releases)** | ||
- | * Changed data handling, which results in a **massive reduction in overall memory usage** and an **increased pre-alignment performance**. | + | * Changed data handling, which results in a massive reduction in overall memory usage and an increased pre-alignment performance. |
- | * Fixed use of '' | + | * Fixed use of '' |
* Fixed error in the pre-alignment progress bar that made it seem as if it did not run to completion. | * Fixed error in the pre-alignment progress bar that made it seem as if it did not run to completion. | ||
- | * Minimum class size is now 60% of the full class size, if no minimum class size was specified by the user. | + | * Minimum class size is now automatically set to 60% of the full class size, if no minimum class size was specified by the user. |
**GPU ISAC v2.3** | **GPU ISAC v2.3** |