high perfermance computer usage

简单记一下hpc的使用:

hpc就是一些科研机构或者大学建立的服务器中心。我这大学的每一位学生,可以轻松使用hpc批量跑数据,也可以新建自己的server跑一些local data,后者每个学生账号最大是32核512G的运行内存,体验非常好,只不过只能使用jupyternote book或者R登录,也可以跑bash,总之非常nice。

新建自己的server跑jupyternote book就比较容易,例如:

bash 复制代码
from concurrent.futures import ProcessPoolExecutor
from tqdm import tqdm
# python
def my_func(x):
    return x**2
def run(f, this_iter):
    with ProcessPoolExecutor(max_wokers=32) a executor:
        results = list(tqdm(executor.map(f. this_iter), total=len(this_iter))
    return results
if name == '__main__':
    this_iter = [1,2,3,4,4,5,6]
    results = run(my_func, this_iter)

# ipynb
from multiprocessing import Pool
from tqdm import tqdm
def my_func(x):
    return x**2
def run(f, this_iter):
    with Pool(max_wokers=32) a p:
        results = list(tqdm(p.imap(f. this_iter), total=len(this_iter))
    return results
if name == '__main__':
    this_iter = [1,2,3,4,4,5,6]
    results = run(my_func, this_iter)

两者区别就在于使用ProcessPoolExecutor 还是 Pool,还有map 和imap。其他都是一样的使用。

完全免费的32核512G云服务器,还可以加载2080Ti等显卡,我觉得这个科研资源算是非常好了,至少节省了自己2万左右资金。

第二个就是hpc节点的使用

hpc的集群节点主要是用来批量跑数据预处理,我主要是跑fmriprep和xcp-d。

首先是定义变量:

bash 复制代码
#!/bin/bash

#$ -N sub-${subject}_fmriprep
#$ -pe smp 10
#$ -q UI
#$ -j y
#$ -o /Data/test/logs
#$ -t 1-29:1

这些是hpc的定义,例如-o表示output,-pe表示需求的核心数,-q是请求的节点端口等等。

然后可以自己自定义一些环境变量:

bash 复制代码
singularityDir=/Data/test
export TEMPLATEFLOW_HOME=${singularityDir}/TemplateFlow
export SINGULARITYENV_TEMPLATEFLOW_HOME=/templateflow

然后就可以使用fmriprep的脚本:

bash 复制代码
singularity run --cleanenv \
-B /Users/work:/work \
-B ${TEMPLATEFLOW_HOME:-$HOME/.cache/templateflow}:/templateflow \
${singularityDir}/fmriprep.sif \
/Data/test/BIDS/ /Data/test/fmriprep/ participant --participant-label ${subject} \
--skip_bids_validation \
--nprocs 8 --omp-nthreads 8 --mem 32000 \
-t rest \
-w work \
........
......

然后保存脚本,在服务器端口敲命令: qsub fmriprep_run.sh 即可。

可以用 qstat | grep ID 查看提交的作业是否正常在运行。

等运行结束以后,可以使用qacct -j {job_id} 查看fmriprep的运行过程。

以我这个为例,我的test脚本调用了8个核跑了一个被试,运行细节如下:

一个rest-state bold输出到2个空间,做体空间和皮层空间,cpu时间是84831s,最大内存是5.8G,运行时间是8小时30分钟。

一般来说,fmriprep只有几个步骤能跑满cpu,比如ants,还有一些步骤是跑不满的,所以假设同样8个被试,使用8个核心,一个一个跑,跟使用1个核心,8个一起跑,后者的时间应该是要短很多。

一种方法是,使用python脚本,建立Pool池,调用多个kernel,然后每个kernel去跑一个singularity。

bash 复制代码
## multiple subjects
#!/bin/bash
#$ -N sub-batchArray_fmriprep
#$ -pe smp 10
#$ -q PINC, CCOM, UI
#$ -j y
#$ -o /data/logs
#$ -t 1-27:1
OMP_NUM_THREADS=30
subject='cat /data/test/sublist | head -n+${SGE_TASK_ID} | tail -n-1'

singularityDir=/data/test
...
...
相关推荐
Allen_LVyingbo2 小时前
2025.10月报 Cherry Stuido 1.6.4、Ollama 0.12.5、Dify 1.9.1升级使用摘要
信息可视化·数据分析·健康医疗
派可数据BI可视化3 小时前
商业智能BI与业务结构分析
大数据·数据仓库·信息可视化·数据分析·商业智能bi
闲人编程13 小时前
从多个数据源(CSV, Excel, SQL)自动整合数据
python·mysql·数据分析·csv·存储·数据源·codecapsule
码界筑梦坊14 小时前
267-基于Django的携程酒店数据分析推荐系统
python·数据分析·django·毕业设计·echarts
Bony-16 小时前
奶茶销售数据分析
人工智能·数据挖掘·数据分析·lstm
B站_计算机毕业设计之家18 小时前
大数据实战:Python+Flask 汽车数据分析可视化系统(爬虫+线性回归预测+推荐 源码+文档)✅
大数据·python·数据分析·flask·汽车·线性回归·预测
Q26433650231 天前
大数据实战项目-基于K-Means算法与Spark的豆瓣读书数据分析与可视化系统-基于python的豆瓣读书数据分析与可视化大屏
大数据·hadoop·机器学习·数据分析·spark·毕业设计·kmeans
大数据CLUB1 天前
基于spark的抖音短视频数据分析及可视化
大数据·hadoop·分布式·数据分析·spark
观远数据1 天前
A Blueberry 签约观远数据,观远BI以一站式现代化驱动服饰企业新增长
大数据·数据库·人工智能·数据分析
Q26433650232 天前
【有源码】基于Hadoop生态的大数据共享单车数据分析与可视化平台-基于Python与大数据的共享单车多维度数据分析可视化系统
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计