Julia 科学计算工作流

本文介绍如何在Julia下快速构建一个科学计算项目。并且介绍了如何利用 Revise.jl 加快开发速度。

要求

为迎合科学计算的特点,本工作流有以下专门的设计:

  1. 为了在离线服务器上运行方便,项目引用的包应该越少越好

    • 例如:项目本身不包含数据分析的内容。因此项目中不包含 Plots 等包。
  2. 将测试融入编写过程

总的结构

以一个名为 OTOC(out-of-time-order correlator) 的项目为例。总的结构为:

./OTOC.jl
├── OTOC
│   ├── Manifest.toml
│   ├── Project.toml
│   ├── readme.md
│   ├── scripts
│   ├── src
│   │   ├── OTOC.jl
│   │   ├── core.jl
│   │   ├── helpers.jl
│   │   ├── operator.jl
│   │   ├── samples
│   │   │   ├── ising.jl
│   │   │   └── mbl.jl
│   │   ├── system.jl
│   │   ├── tdvp
│   │   │   ├── helpers.jl
│   │   │   └── tdvp.jl
│   │   └── tebd.jl
│   └── test
│       ├── hamiltonian.jl
│       └── tvbd.jl
└── notebooks
    ├── MPOitbd.ipynb
    ├── debug.jl
    ├── expm.ipynb
    ├── itebd.ipynb
    ├── mbl.png
    ├── tdvp
    │   ├── debug.jl
    │   ├── helpers.ipynb
    │   ├── testTEBD.ipynb
    │   └── tvbdMPO.ipynb
    ├── tebd
    │   ├── test.ipynb
    │   └── test_otoc.ipynb
    ├── testKrylov.ipynb
    ├── testMBL.ipynb
    ├── testRandom.ipynb
    ├── testRandomTensor.ipynb
    ├── test_operator.ipynb
    └── test_tvbd.ipynb

项目总文件为OTOC.jl,下设 ./OTOC.jl/OTOC./OTOC.jl/notebooks 分别为项目所在地址和测试以及数据处理地址。
项目结构应按照Julia标准结构进行组织。关于项目的所有文件应在/src中定义,在服务器中运行的脚本应在/scripts组织。

Step-by-Step Guide

新建文件夹

mkdir ./OTOC.jl
mkdir ./OTOC.jl/notebooks 

整体利用git进行管理

cd ./OTOC.jl
git init .

新建julia环境
可以利用直接构建,也可以利用 DrWatson.jl 构建,后者适合构建需要跑多参数模拟的项目。

直接构建

在 julia REPL 下用 ]进入包管理

pkg > generate OTOC
pkg > activate ./OTOC/
pkg > add `the Package you need`.

利用 DrWatson.jl 构建

using DrWatson
initialize_project("OTOC"; authors="...", force=true)

将新建立的项目加入Julia,LOADPATH

vim ~/.julia/config/startup.jl

在其中加入

push!(LOAD_PATH, "path-to-your-project/OTOC.jl")

而后在任意一处都直接调用。

using OTOC

开发时可以在./OTOC.jl/notebooks中使用Revise.jl进行开发。

只需要在引入包之前先引入Revise.jl,这样在/src中修改的内容就会同步更新,不用每次重新引入。

引用

Revise.jl
DrWatson.jl

推荐阅读

文档中关于workflow的介绍
一篇关于利用Revise.jl构建工作流的博文
DrWatson.jl的工作流介绍
怎样构建一个包

标签: Julia

添加新评论