Julia 科学计算工作流
Julia 科学计算工作流
本文介绍如何在Julia下快速构建一个科学计算项目。并且介绍了如何利用 Revise.jl 加快开发速度。
要求
为迎合科学计算的特点,本工作流有以下专门的设计:
为了在离线服务器上运行方便,项目引用的包应该越少越好
- 例如:项目本身不包含数据分析的内容。因此项目中不包含
Plots
等包。
- 例如:项目本身不包含数据分析的内容。因此项目中不包含
- 将测试融入编写过程
总的结构
以一个名为 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
中修改的内容就会同步更新,不用每次重新引入。
引用
推荐阅读
文档中关于workflow的介绍
一篇关于利用Revise.jl构建工作流的博文
DrWatson.jl的工作流介绍
怎样构建一个包