Giter Club home page Giter Club logo

relioncl-1.3's Introduction

#RelionCL - RELION accelerated with GPUs using OpenCL This is a port of Relion to accelerate key functions using OpenCL. The code has been tested on a variety of Nvidia and AMD graphics cards successfully including:

  • NVidia K80
  • NVidia K20
  • NVidia m2070
  • AMD D700
  • NVidia GTX 1080
  • NVidia 780m

The RELION programs that are accelerated are relion_refine and relion_refine_mpi, which means that 2d classification, 3d classification and 3d refinement are accelerated. The acceleration depends on the angular probability distribution and the GPU - each GTX 1080 will provide equivalent performance of approximately 40 3.3 GHz Core i7 cpu cores during 3d refinement of the betagal tutorial data.

The software will detect and use all gpus within a MPI run and can operate with a heterogeneous mix of GPU's and instances running on the CPU. This allows the use of all available resources within a node.

For optimal performance, run 2x more MPI instances on each compute node than GPUs on the node (plus one for the mpi master which does not use the GPU). Because not all code runs on the GPU, this ensures that the GPU is fully utilised. For example, if your node has 2 GPUs, run with five MPI instances.

All calculations are performed in double precision. If you wish to check the accuracy of your setup, uncomment (i.e. delete the //) line 7189 of ml_optimiser.cpp and run a refinement. The results of all calculations performed on the GPU will be compared to results from the CPU and any deviations will be reported. Additionally, by uncommenting line 7192 the speed of all calculations performed on the GPU and their relative speedup will be reported.

Please see the RELION website for details on how to install and use RELION.

###FAQ Which GPU is best? Memory bandwith seems extremely important - more so than raw double precision throughput. For example, a GTX 1080 is roughly twice as fast as a K20 on the same data.

What about other accelerators that can run OpenCL code? With minor modifications the code can run on other devices, but has been optimised for GPU use. It can run on the CPU, but this is pointless as the OpenCL code is less efficient than the original RELION code. It has been briefly tested using an Intel Xeon Phi and was able to run with minor modifications, but performance was poor. No testing has been done with an FPGA to date.

relioncl-1.3's People

Contributors

callumsmits avatar

Watchers

James Cloos avatar jw0 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.