devito, 自动有限差分计算的代码生成框架

分享于 

6分钟阅读

GitHub

  繁體 雙語
Code generation for the inversion workflow
  • 源代码名称:devito
  • 源代码网址:http://www.github.com/opesci/devito
  • devito源代码文档
  • devito源代码下载
  • Git URL:
    git://www.github.com/opesci/devito.git
    Git Clone代码到本地:
    git clone http://www.github.com/opesci/devito
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/opesci/devito
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    基于符号规范的快速有限差分运算

    Build StatusCode Coverage

    Devito 是一个软件,实现了从高级符号问题定义中优化的有限差分( FD ) 计算。 Devito从 SymPy 定义的符号方程开始,使用自动代码生成和 just-in-time ( JIT ) 编译在多个计算机平台上执行FD内核。

    Devito是 OPESCI 地震图像工程的一部分。 可以在这里找到Devito特性和功能的总体概述,包括详细的 API文档。

    联系你

    如果你使用 Devito,我们希望能收到你的消息。 不管你是面对问题还是只是尝试,加入对话。

    快速入门

    安装Devito的推荐方法使用Conda包管理器来安装必要的软件依赖项。 请在下载链接中使用指令提供程序安装 Anaconda 或者 Miniconda。 你将需要 python 3.6版本。

    要安装 Devito,包括示例,测试和教程笔记本,请遵循以下简单的步骤:

    git clone https://github.com/opesci/devito.gitcd devito
    conda env create -f environment.ymlsource activate devito
    pip install -e .

    另外,你也可以通过 Docker 安装和运行 Devito:

    # get the codegit clone https://github.com/opesci/devito.gitcd devito# run the testsdocker-compose run devito/tests# start a jupyter notebook server on port 8888docker-compose up devito

    示例

    在 Devito API的核心是所谓的Operator 对象,它允许从SymPy表达式创建和执行高效的rtc内核。 提供了如何定义运算符的示例:

    • 一套介绍Devito操作符基本特性的入门笔记本教程可以在 examples/cfd 下找到。 这些教程涵盖了计算流体动力学的一系列著名例子,并基于 Lorena A的优秀介绍性博客"基于 CFD Python:12的三维"。 Barba组。要运行这些操作,只需进入教程目录并运行 jupyter notebook
    • 一套用于地震反演示例的教程笔记本可以在 examples/seismic/tutorials 中。
    • 全波形反演( FWI ) 方法中的声前。伴随。梯度和出生算子的实现可以在中找到。
    • examples/tti 中的倾斜横向各向同性正向算子的一个先进例子可以在FWI中找到。
    • 可以在 examples/benchmark.py 中找到声音和标识符前向操作符的基准脚本

    编译

    devito编译引擎的JIT支持多个后端,为最常见的编译器toolchains提供预设。 默认情况下,Devito将使用默认的GNU编译器 g++,但可以通过将 DEVITO_ARCH 环境变量设置为以下值之一来选择其他 toolchains:

    • gcc 或者 gnu - 标准GNU编译器工具链
    • clang 或者 osx - 通过 clang 实现的macosx编译器工具链
    • intel 或者 icpc - 通过 icpc 实现的Intel编译器工具链

    通过设置 DEVITO_OPENMP=1 还可以通过OpenMP并行执行线程并行执行。

    有关可用 环境变量 及其可能值的完整列表,只需运行:

    from devito import print_defaults
    print_defaults()

    或者使用 Docker,运行:

    docker-compose run devito/print-defaults

    性能优化

    Devito支持两种性能优化类,它们在实际的内核内核中非常重要:

    • flop优化- 它们旨在减少FD内核的运算数。 例如代码运动。分解和跨模冗余检测。 of的优化是由构建在SymPy上的例程执行的,在Devito符号引擎( DSE ) 中实现,是Devito的子模块。
    • 循环优化- 示例包括SIMD矢量化和并行( 通过代码注释) 和循环阻塞。 这些是由Devito循环引擎( DLE ) ( Devito )的另一个子模块执行的。

    此外,YASK 作为一个Devito后端进行集成,以便在Intel体系结构上优化执行。

    启用循环阻塞时,Devito支持自动调整块大小。 启用自动调优很简单:可以通过将特殊标志 autotune=True 传递给 Operator 来完成。 可以通过特殊环境变量 DEVITO_AUTOTUNING 设置自动调节参数。

    更多关于如何驱动最大运行时间性能的信息,请参阅这里,或者向开发人员询问上面所链接的松散通道。


    COM    framework  cod  AUTO  DIFF  
    相关文章