跳到内容

理论组软件

这个页面包含简短的描述代码开发。

xSPDE

代码:github.com/peterddrummond/xspde_matlab

文档:xspde-matlab.readthedocs.org

xSPDE代码是一个可扩展的随机偏微分方程解算器。它是构建模拟随机工具箱,适用于许多随机问题。它有一个模块化设计可以改变,以适应不同的应用程序,包括策略计算错误。在一个基本水平只是一个或两行输入足够的指定方程。对于高级用户,整个建筑在很多方面是开放和可扩展的。

随机方程方程和随机噪声。发生在许多领域的科学、工程、经济和其他学科。xSPDE可以解决普通和偏微分随机方程。这些包括部分空间衍生品,像麦克斯韦和薛定谔方程。

有许多这种类型的方程,和xSPDE可以治疗范围广泛。它有一个可配置的功能设计。提供的一般结构允许替代功能。顺序可以进行不同的模拟,模拟实验或其他过程的不同阶段。

在向量指令级并行的代码支持线程级,使用Matlab矩阵指令和并行的工具箱。计算平均任意函数的任意数量的复杂的或真正的字段。它使用sub-ensemble平均和外推获得准确的误差估计。

Reikna

代码:github.com/fjarri/reikna

文档:reikna.publicfields.net

PyPi条目:pypi.python.org/pypi/reikna

Reikna是一个Python库,它包含推广和统一GPGPU代码编写的各种研究项目。

它包括两个层次。低级层处理OpenCL / CUDA接口差异,优化内核启动参数,numpy GPU接口(特别是通过数组的自定义结构和GPU)。它还包括了一个临时的内存管理器,它允许一个大大减少程序的内存占用,如果使用帧不同的临时缓冲区是已知的(例如,它可以装两个缓冲区分配如果它知道他们不是同时使用)。

高层的部分是一个框架实现GPGPU的算法。它使用的主要原则是分离不完全平行的核心算法(即部分需要线程之间交换数据)从纯粹的并行数据转换(如缩放或定型)。它使用低级层功能管理所需的临时缓冲区算法(使得用户不必担心重用缓冲区)。目前实现的算法是:

  • FFT(受制于版本:非2的幂的大小处理更慢)和相关的元素排列(fftshift),
  • RNG (counter-based Random123算法的一个港口)
  • 矩阵乘法,
  • 阵列轴排列(换位的广义版本),
  • 减少自定义谓词,
  • 离散谐波变换(FFT模拟谐波陷阱形式)。

这个图书馆目前的主要两个缺点:

  • 一个算法开发人员编写一些Mako-templated C代码,这需要一些时间去适应。从Python函数变压器会更方便,但它需要某种形式的部分评价函数。
  • API并不真正支持异构或multi-GPU算法(一个可以做这些,但他们将不得不分裂和手动加入数据并将其发送到不同的线程)。

Reikna-based颂歌/ SDE积分器

代码:github.com/fjarri/reikna-integrator

基于Reikna的Python模块,允许一个执行颂歌集成多维固定网格。支持集成算法:

积分器可以计算弱和强收敛性(通过传播时间步翻了一倍,并相应地产生噪声的随机方程),一个简单的自适应步界面(基于固定步骤集成)。

目前的缺点:

  • 用户必须写dirft Mako-templated C /噪音条款,
  • 积分器不轨迹分割成subensembles(计算抽样误差标准差超过所有的轨迹),尽管它可以由用户手动完成的——有一个函数,将合并的结果由几个独立的积分器和计算抽样误差。

Beclab

代码:github.com/fjarri/beclab

文档:beclab.publicfields.net

Python包BEC的数值模拟谐波陷阱。除了计算冷凝物的动力学,它支持计算基态(通过虚构的时间传播)。用户可以收集各种预定义的可见(人口密度,预测在给定的轴和片密度,能量)以及定义定制的。经典GPE和维格纳表示支持。对于后者,包可以自动生成噪声条件方程的多体的损失。

(这个指令时发生一个错误处理)