test
block 'test1'

#include <bits/stdc++.h>
using namespace std;
int main() {
    return 0;
}

srun [script] 提交 interactive 的脚本
sbatch [script] 脚本在后台运行,输出保存到文件

脚本头部指定 slurm 参数:

#SBATCH --job-name=hellompi
#SBATCH --output=hellompi.out
#SBATCH --ntasks=56
#SBATCH --partition=broadwl
#SBATCH --nodes=2
#SBATCH --exclusive
#SBATCH --time=00:20:00

查看二进制ELF汇编 : hopper disassembler
python辅助gdb : gdb peda / pwndbg

stegsolve : 全色图片破解

foremost : 文件恢复,用于图片等

quipquip : 解决字符替换问题网站
cyberchef : 在线编解码

hexedit / ghex : 编辑文件 hex

eog : 图片浏览器

ltrace : trace library call

john the ripper :

zip2john ./results2.zip > flag.out
./john --wordlist=rockyou.txt flag.out

python:
struct.pack('<I', 0x123456) : 生成小端序hex字符
pwn.p32(0x123456)
pwn.ELF([elf file]) : 查看 ELF 相关信息

elf = pwn.ELF([elf file])
p = elf.process()
prompt = p.recv() # 运行ELF并获取输出
p.sendline(payload)
p.interactive()
s = pwn.remote(host, port)
s.close()

curl -X POST [site] : 发送post请求
curl [site] --data username=[context] :发送 post 请求,指定域

reverse tools :
ghidra
ida
cutter

nvidia-smi topo -m 结果:
SYS : 不能进行 P2P 和 GPUDirectRDMA
PHB(PIX) : 在同一 PCIE fabric 上,可以进行 P2P 和 GPUDirectRDMA

libucm.so 在 ucx 中

经验

cuda aware mpi 很重要
大规模 CPU 并行任务的运行时间可能取决于最慢的一个进程,因此跑之前应该确保机器是空的,否则可能被小任务拖慢

CUDA && MPI

UVA : unified virtual memory
把 host memory 和 同一节点内的所有 GPU memory 视为同一地址空间

GPUDirect

  1. RDMA (通过 IB)
  2. P2P (节点内)

pinned memory && pageable memory

malloc 申请的 host memory 通常为 pageable (内存可以被 kernel 移动,比如到swap)
RDMA 传输不通过 kernel,因此不 aware 页表,故 RDMA 传输的内存在拷贝时不能被移动,为 pinned memory

fftw

选项:

--enable-threads
--enable-openmp
# 分别对应 fftw3_thread 和 fftw3_openmp library
--enable-mpi # 打开 mpi

安装

./configure --enable-threads --enable-openmp --enable-mpi --prefix=$PREFIX
make -j32
make install

libxc

./configure --prefix=$PREFIX