多线程优化工具箱

mot的Python项目详细描述


多线程优化工具箱(mot)是一个使用opencl计算平台进行并行优化和采样的库。 使用opencl允许使用所有cpu核或使用gpu(显卡)进行并行处理。 mot实现了powell、nelder-mead-simplex和levenberg-marquardt非线性优化算法的opencl并行化版本。 以及各种形式的马尔可夫链蒙特卡罗(mcmc)抽样。

有关完整文档,请参见:https://mot.readthedocs.org

莫特能帮我吗?

如果你有多个小的独立优化问题,mot可以帮助你。 例如,如果有很多(>;10.000)个小优化问题,每个问题的参数不超过30个,则mot可能会有帮助。 另一方面,如果你有一个有10000个变量的大优化问题,不幸的是mot帮不了你。

示例用例

mot最初是作为Microstructure Diffusion Toolbox的计算包编写的,用于dmri大脑研究。 在扩散磁共振成像(dmri)中,大脑被扫描在一个3d网格中,每个网格元素a{em1}$voxel代表其自身的优化问题。 每个体素的数据点数量通常很小,从30到500个数据点不等,并且适合该数据的模型通常 介于6到20个参数之间。 由于每个体素都可以独立于其他体素进行分析,因此计算可以大规模并行化,从而进行编程。 在opencl中可能允许大速度增益。 这个软件工具箱最初是为这个用例而构建的,但是算法和数据结构是通用的,因此 科学领域可以利用这个工具箱。

对于本例中引用的扩散mri包mdt,请参见https://github.com/cbclab/MDT

摘要

  • 免费软件:lgpl v3许可证
  • python中的接口,opencl中的计算
  • 实现Powell、Nelder-Mead Simplex和Levenberg-Marquardt非线性优化算法
  • 实现各种马尔可夫链蒙特卡罗(MCMC)采样例程
  • 标签:优化、采样、并行、opencl、python

快速安装指南

MOT的基本要求是:

  • python 3.x
  • 在GPU驱动程序或CPU运行时支持OpenCl 1.2(或更高版本)

linux

对于ubuntu>;=16,您可以使用:

  • sudo add-apt-repositoryppa:robbert-harms/cbclab
  • sudo apt update
  • sudo apt install python3-pippython3-mot
  • sudo pip3 install tatsu

对于debian用户和ubuntu<;16用户,请使用以下命令安装mot:

  • sudo apt install python3 python3-pippython3-pyopenclpython3-devel
  • sudo pip3 install mot

mac

windows 对于Windows,简短指南是:

有关更多信息和更详细的安装说明,请参见:https://mot.readthedocs.org

注意事项

有一些警告和已知问题,主要与opencl有关:

  • 由于安装pyopencl的困难,windows支持是实验性的,希望在windows上安装pyopencl会很快变得更容易。
  • 由于缺少GPU或PCI-E传递,GPU加速在大多数虚拟机中是不可能的,每当虚拟机供应商编程此功能时,这种情况都会发生变化。 我们的建议是直接在您的机器上安装linux。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNLP无法在浏览器中正确启动(与dtjava.js一起部署)   在执行下一个方法之前,java将等待线程执行结束   java如何将另一个LayoutManager应用于JComboBox?(多栏JComboBox尝试)   使用jPBC在java中实现双线性配对   java在使用@RequestMapping注释时获取请求的值(URL)   java如何控制流量   java如何获取IFC对象的绝对坐标?   java目标服务器无法使用htmlunit和tor响应异常   java需要帮助创建一个循环结构来运行我的程序   java有可能拥有一个Android APK并在应用程序中更改构建变体吗?   在Sphinx4中运行Ant的java   Java:从ArrayList获取子列表的有效方法   java如何使在循环内部创建的数组在循环外部工作?   apache poi通过java中的XSSF表从单元格读取日期值   安卓 java自己的SeqLock实现,避免spinlock会更好吗?   java的并发底层方法。util。同时发生的预定未来   java比较方法违反了它的一般约定,如何使它具有可传递性?   使用JAVA定向指定类的DB导出子类   一个方法中的java更改特定imageView