environment

每个 spack 环境包括两个文件 spack.yaml, spack.lock ,可以用来在其他机器上建立相同环境

Configuration Scopes

2023-12-21T04:06:07.png

spack config blame [scope] 查看一个 scope 的 config 出处

module 路径: $SPACK_ROOT/share/spack/modules
包配置路径 : $SPACK_ROOT/var/spack/repos/builtin/packages

一些开源包

zlib : 无损压缩,DEFLATE算法,结合 LZ77 和 Huffman 编码,使用在 PNG 和 zip 格式中

hwloc :hardware locality,抽象当代处理器的复杂 hierarchy

HDF5 :Hierarchical Data Format version 5,保存大量复杂数据,支持压缩

pkgconf :管理软件编译,向编译器提供必要的编译和链接flag,是 pkg-config 包的代替

ncurses :new curses,创建 text user interface

BLAS : basic linear algebra subprograms (low level)
LAPACK : linear algebra package (high level,在 BLAS 之上)
ScaLAPACK : scalable LAPACK,支持 MPI 的 LAPACK

Intel MKL : 包含 BLAS, LAPACK, ScaLAPACK

ELPA : eigenvalue solvers for petaflop applications

cuBLAS

使用 cublasCreate 创建 cuBLAS library context 的 handle,
一个 context 关联一个 device
cuBLAS library context 绑定 CUDA context

GCC

编译流程:

Frontend pass :
通过源码生成 Abstract Syntax Tree (AST)

Middle-end pass :
将 AST 转换为 GIMPLE 中间表达(high-level,语言无关)
将 GIMPLE 转换为 SSA (Static Single Assignment) 格式

Backend pass :
将 GIMPLE 转换为 low level, 机器无关的中间表达 RTL (Register Transfer Language)

IPA : Interprocedural Analysis,考虑多个函数或多个文件的优化

使用 -fdump-passes 编译选项输出 GCC 使用的所有 pass
-fdump-tree-all 输出所有 gimple pass
-fdump-rtl-all 输出所有 RTL pass

编译选项:

-m : 机器相关选项

LLVM

llvm IR

用来记一些 tmux 之类工具的奇妙用法

tmux

ctrl+b s : 切换panel
Ctrl+b :set synchronize-panes : 多窗口同步输入