Files
nixos-cn-meetup-presentation/main.typ
2025-08-04 22:16:01 +08:00

99 lines
3.8 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#import "@preview/minimal-presentation:0.6.0": *
// 中文使用思源宋体,英文使用 Times New Roman
#set text(font: ("Times New Roman", "Source Han Serif SC"))
#show raw: set text(font: "Fira Code")
#show: project.with(
title: "在科学计算中使用Nix",
sub-title: "实战经验与挑战",
author: "陈浩南",
date: "2025-08-09",
index-title: "目录",
logo: image("./nix-snowflake-colours.svg"),
logo-light: image("./nix-snowflake-white.svg"),
cover: image("./DSC_0210.JPG"),
main-color: rgb("#3e5c98"),
lang: "zh",
)
// 默认的字体太小
#show raw: set text(font: "Fira Code", size: 18pt)
= 自我介绍与背景介绍
== 使用过的发行版
- 桌面用于日常工作2018年起主力使用LinuxDeepin #sym.arrow Arch #sym.arrow Gentoo #sym.arrow NixOS (2023-05-28)
- 服务器VPS用于运行个人网站/服务差不多时间OpenWRT #sym.arrow Ubuntu #sym.arrow Arch #sym.arrow Gentoo #sym.arrow NixOS
- xmurp-ua: OpenWRT上用来绕过学校多设备检测的内核模块。
- 科学计算HPC2020年硕士入组开始接触Gentoo + Ubuntu #sym.arrow NixOS (2023-09)
== 科研方向与HPC特点
- 组内主要研究宽禁带半导体,我个人主要做*第一性原理计算*
- 仅利用最基础的物理原理(量子力学)计算材料物理性质,原则上不引入经验值。
- 核心步骤是求解一些很大的矩阵的特征值(矩阵行列大约几万),*计算量大*
- 相比于个人电脑或个人服务器要使用的HPC高性能计算集群环境有以下特点
- 多节点*共享文件系统*我们使用NFS
- 用户不直接运行科学计算程序,而是提交任务到*队列系统*我们使用SLURM队列系统视情况在合适的时机分配计算资源CPU/GPU/内存等)并执行计算。
- 用户不懂Linux由一个人准备好环境之后的操作尽量做到*有手就行*
- 需要针对特定CPU优化`march=xxx`),自己编译不可避免。
== 科学计算现状(仅身边统计学)
#columns-content(colwidths: (1fr, 1.8fr))[
#figure(
image("meme.jpg", width: 100%)
)
][
- *复古*的包管理手动收集依赖手动修改Makefile指定编译器/参数/库路径。
- *随意*的编程习惯无视标准、能用就行C/C++不分Fortran只有特定编译器能编译。
- *闭源*的编译器Intel OneAPI / NVIDIA HPC SDK。
- *混乱*的用户权限:多人共用一个账户。
]
== 科学计算需要Nix来拯救
// #columns-content(
// figure(image("nix-snowflake-colours.svg", width: 10%)),
// figure(image("nix-snowflake-colours.svg", width: 10%)),
// figure(image("nix-snowflake-colours.svg", width: 10%))
// )
#figure(image("更多的.png", width: 120%))
= Nix / NixOS解决的问题
== 编译软件更方便
- 远超其它发行版的软件包数量。
- Nix: 100k+, Arch: 70k+, Ubuntu: 39k+, CentOS: 2k+
- 数据来自 repology.org
- 即使没有,只要上游代码标准,也可以方便地打包。
- 需要打补丁?一句代码就行了。
```
some-package = prev.some-package.overrideAttrs (prev: patches = prev.patches or [] ++ [ ./my.patch ])
```
- 多机器、多版本,不需要手动重复构建。
== 配置环境和服务更简单仅NixOS
- SLURM、NFS 等都有模块。
- 配置文件可跨服务/软件、跨用户、跨机器联动不需要担心配置修改不同步。e.g.:
- 多台机器的 SLURM 配置文件均由一个 Nix 文件生成SLURM 和其它相关程序的配置由一个模块生成。
- 多用户共用 home-manager 配置文件。
- 多台机器之间 wireguard VPN 的配置文件由一个 Nix 文件生成。
= 困难与挑战
== 闭源编译器和 stdenv
== 无root权限安装nix
== impermanence / home-manager 与共享文件系统
== FHSStdenv构建时FHS环境