All Projects → robbert-harms → MOT

robbert-harms / MOT

Licence: LGPL-3.0 License
Multi-threaded Optimization Toolbox

Programming Languages

python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to MOT

Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (+2732.14%)
Mutual labels:  opencl, parallel-computing, high-performance-computing
Boinc
Open-source software for volunteer computing and grid computing.
Stars: ✭ 1,320 (+4614.29%)
Mutual labels:  science, high-performance-computing
Pysph
A framework for Smoothed Particle Hydrodynamics in Python
Stars: ✭ 223 (+696.43%)
Mutual labels:  opencl, high-performance-computing
t8code
Parallel algorithms and data structures for tree-based AMR with arbitrary element shapes.
Stars: ✭ 37 (+32.14%)
Mutual labels:  parallel-computing, high-performance-computing
Parenchyma
An extensible HPC framework for CUDA, OpenCL and native CPU.
Stars: ✭ 71 (+153.57%)
Mutual labels:  opencl, parallel-computing
Fast
A framework for GPU based high-performance medical image processing and visualization
Stars: ✭ 179 (+539.29%)
Mutual labels:  opencl, parallel-computing
opensbli
A framework for the automated derivation and parallel execution of finite difference solvers on a range of computer architectures.
Stars: ✭ 56 (+100%)
Mutual labels:  parallel-computing, high-performance-computing
Hipsycl
Implementation of SYCL for CPUs, AMD GPUs, NVIDIA GPUs
Stars: ✭ 377 (+1246.43%)
Mutual labels:  opencl, high-performance-computing
gardenia
GARDENIA: Graph Analytics Repository for Designing Efficient Next-generation Accelerators
Stars: ✭ 22 (-21.43%)
Mutual labels:  opencl, parallel-computing
learn-gpgpu
Algorithms implemented in CUDA + resources about GPGPU
Stars: ✭ 37 (+32.14%)
Mutual labels:  opencl, parallel-computing
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (+0%)
Mutual labels:  parallel-computing, high-performance-computing
Neanderthal
Fast Clojure Matrix Library
Stars: ✭ 927 (+3210.71%)
Mutual labels:  opencl, high-performance-computing
PSyclone
Domain-specific compiler for Finite Difference/Volume/Element Earth-system models in Fortran
Stars: ✭ 67 (+139.29%)
Mutual labels:  parallel-computing, high-performance-computing
Bohrium
Automatic parallelization of Python/NumPy, C, and C++ codes on Linux and MacOSX
Stars: ✭ 209 (+646.43%)
Mutual labels:  opencl, parallel-computing
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+2721.43%)
Mutual labels:  opencl, parallel-computing
Reading
A list of computer-science readings I recommend
Stars: ✭ 1,919 (+6753.57%)
Mutual labels:  science, parallel-computing
Kernels
This is a set of simple programs that can be used to explore the features of a parallel platform.
Stars: ✭ 287 (+925%)
Mutual labels:  opencl, parallel-computing
Bayadera
High-performance Bayesian Data Analysis on the GPU in Clojure
Stars: ✭ 342 (+1121.43%)
Mutual labels:  opencl, high-performance-computing
hpc
Learning and practice of high performance computing (CUDA, Vulkan, OpenCL, OpenMP, TBB, SSE/AVX, NEON, MPI, coroutines, etc. )
Stars: ✭ 39 (+39.29%)
Mutual labels:  opencl, parallel-computing
boxtree
Quad/octree building for FMMs in Python and OpenCL
Stars: ✭ 52 (+85.71%)
Mutual labels:  opencl, parallel-computing

Multi-threaded Optimization Toolbox

The Multi-threaded Optimization Toolbox (MOT) is a library for parallel optimization and sampling using the OpenCL compute platform. Using OpenCL allows parallel processing using all CPU cores or using the GPU (Graphics card). MOT implements OpenCL parallelized versions of the Powell, Nelder-Mead Simplex and Levenberg-Marquardt non-linear optimization algorithms alongside various flavors of Markov Chain Monte Carlo (MCMC) sampling.

For the full documentation see: https://mot.readthedocs.org

Can MOT help me?

MOT can help you if you have multiple small independent optimization problems. For example, if you have a lot of (>10.000) small optimization problems, with ~30 parameters or less each, MOT may be of help. If, on the other hand, you have one big optimization problem with 10.000 variables, MOT unfortunately can not help you.

Example use case

MOT was originally written as a computation package for the Microstructure Diffusion Toolbox, used in dMRI brain research. In diffusion Magnetic Resonance Imaging (dMRI) the brain is scanned in a 3D grid where each grid element, a voxel, represents its own optimization problem. The number of data points per voxel is generally small, ranging from 30 to 500 datapoints, and the models fitted to that data have generally somewhere between 6 and 20 parameters. Since each of these voxels can be analyzed independently of the others, the computations can be massively parallelized and hence programming in OpenCL potentially allows large speed gains. This software toolbox was originally built for exactly this use case, yet the algorithms and data structures are generalized such that any scientific field may take advantage of this toolbox.

For the diffusion MRI package MDT to which is referred in this example, please see https://github.com/robbert-harms/MDT.

Summary

  • Free software: LGPL v3 license
  • Interface in Python, computations in OpenCL
  • Implements Powell, Nelder-Mead Simplex and Levenberg-Marquardt non-linear optimization algorithms
  • Implements various Markov Chain Monte Carlo (MCMC) sampling routines
  • Tags: optimization, sampling, parallel, opencl, python

Links

Quick installation guide

The basic requirements for MOT are:

  • Python 3.x
  • OpenCL 1.2 (or higher) support in GPU driver or CPU runtime

Linux

For Ubuntu >= 16 you can use:

  • sudo add-apt-repository ppa:robbert-harms/cbclab
  • sudo apt update
  • sudo apt install python3-pip python3-mot
  • sudo pip3 install tatsu

For Debian users and Ubuntu < 16 users, install MOT with:

  • sudo apt install python3 python3-pip python3-pyopencl python3-devel
  • sudo pip3 install mot

Mac

Windows For Windows the short guide is:

For more information and for more elaborate installation instructions, please see: https://mot.readthedocs.org

Caveats

There are a few caveats and known issues, primarily related to OpenCL:

  • Windows support is experimental due to the difficulty of installing PyOpenCL, hopefully installing PyOpenCL will get easier on Windows soon.
  • GPU acceleration is not possible in most virtual machines due to lack of GPU or PCI-E pass-through, this will change whenever virtual machines vendors program this feature. Our recommendation is to install Linux on your machine directly.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].