线程也不是越多越好,多少是好?
生信宝典
共 4396字,需浏览 9分钟
· 2021-09-13
前面我们评估了不同大小基因组构建索引所需的计算资源和时间资源和不同大小数据集比对所需的计算资源和时间资源。
下面我们进一步看下不同线程数的影响。
测试电脑配置
这是一个
10
核、20
线程的处理器,主频2.8 G HZ
,可超频到5.2 GhZ
。在Windows系统上安装了Ubuntu子系统进行的测试。
测试指定不同线程数对速度提升的影响
因为测试电脑是最多20
线程,这里指定1-25
共25
个测试线程,程序如下:
# 10核心 20 线程
for thread in `seq 1 25`; do
i=SRR1039517
mkdir -p ${i}
/usr/bin/time -v -o star.${i}.thread${thread}.log STAR --runMode alignReads \
--runThreadN ${thread} \
--readFilesIn ${i}_1.fastq.gz ${i}_2.fastq.gz \
--readFilesCommand zcat --genomeDir star_GRCh38 \
--outFileNamePrefix ${i}/${i}. --outFilterType BySJout --outSAMattributes NH HI AS NM MD \
--outFilterMultimapNmax 20 --alignSJoverhangMin 8 --alignSJDBoverhangMin 1 \
--alignIntronMin 20 --alignIntronMax 1000000 \
--alignMatesGapMax 1000000 \
--outFilterMatchNminOverLread 0.66 --outFilterScoreMinOverLread 0.66 \
--winAnchorMultimapNmax 70 --seedSearchStartLmax 45 \
--outSAMattrIHstart 0 --outSAMstrandField intronMotif \
--genomeLoad LoadAndKeep \
--outTmpDir /tmp/${i}/ \
--outSAMtype BAM Unsorted --quantMode GeneCounts
du -s ${i} | awk 'BEGIN{OFS="\t"}{print "Output_size: "$1/10^6}' >>star.${i}.thread${thread}.log
done
运行完成后,整理所需的计算资源和时间资源数据。
/bin/rm -f GRCh38_39517_star_reads_map_thread.summary
i=SRR1039517
for thread in `seq 1 25`; do
echo ${thread} | \
awk 'BEGIN{OFS="\t"}{print "nThreads"; print $1}' | \
awk -v outputHeader=${thread} -f ./timeIntegrate2.awk - star.${i}.thread${thread}.log \
>>GRCh38_39517_star_reads_map_thread.summary
done
汇总后的数据如下:
Time_cost Memory_cost nCPU Output_size nThreads
25.962 28.9048 0.98 5.58423 1
13.98 29.311 1.97 5.58424 2
9.95217 29.5176 2.93 5.58425 3
7.77033 29.7221 3.85 5.58426 4
6.356 29.9266 4.78 5.58428 5
5.1585 30.1311 5.61 5.58422 6
4.69233 30.3356 6.37 5.58426 7
4.51 30.5401 6.69 5.58429 8
4.39683 30.7445 6.94 5.58423 9
4.38017 30.949 6.99 5.58426 10
4.41233 31.1535 6.99 5.58424 11
4.45333 31.358 6.94 5.58424 12
4.41033 31.5624 6.95 5.58429 13
4.44267 31.7669 6.88 5.58428 14
4.4595 31.9714 6.87 5.58426 15
4.50567 32.0859 6.85 5.58424 16
4.458 32.2639 6.92 5.58429 17
4.46417 32.4802 6.86 5.58428 18
4.497 32.6487 6.91 5.58425 19
4.4425 32.8489 6.95 5.58426 20
4.46817 32.9927 6.92 5.5843 21
4.4555 33.1738 6.97 5.58426 22
4.45483 33.3675 6.94 5.58426 23
4.46133 33.5499 6.99 5.58428 24
4.42733 33.7143 6.99 5.58426 25
STAR比对的时间随指定的线程数的变化
在给定的线程数少于
10
个时,随着线程数增加时间逐渐减少,尤其是在线程数从1-6
的过程中,下降幅度更明显。线程也不是越多越好,给定多于
10
个进程对速度提升基本没有贡献。(因为测试电脑只有10个核心,不知道这里的节点
10
是否是受此影响;还需要后续在服务器更多测试来判断;
如果是这样,对我们的指导是设定的线程数不应该超过CPU的核心数。
)
library(ImageGP) 、sp_scatterplot(“GRCh38_39517_star_reads_map_thread.summary”, melted = T, xvariable = “nThreads”, yvariable = “Time_cost”, smooth_method = “auto”, x_label =”Number of specified threads”, y_label = “Running time (minutes)”) + scale_x_continuous(breaks=seq(1,25, by=1)) + scale_y_continuous(breaks=seq(1,25, by=1))
STAR比对所需内存随指定的线程数的变化
线程数越多,内存需求越大;
但整体相差不大。
# 这时绘图要注意,是否加limits=c(0,34)图给人的第一印象不同。
sp_scatterplot("GRCh38_39517_star_reads_map_thread.summary", melted = T, xvariable = "nThreads",
yvariable = "Memory_cost", smooth_method = "auto",
x_label ="Number of specified threads", y_label = "Maximum physical memory required (Gb)") +
scale_x_continuous(breaks=seq(1,25, by=1)) +
scale_y_continuous(breaks=seq(1,34, by=1),limits=c(0,34))
不加limits=c(0,34)
的效果。是不是感觉内存变化很大???
STAR比对过程中CPU利用率随指定的线程数的变化
多线程的效率一般很难达到100%
。如下图,在指定线程数小于10
时,给定的线程越多,利用起来的线程也越多,但整体利用率是越来越低的。
不同线程是不影响程序输出的
这个统计没什么意义。
sp_scatterplot("GRCh38_39517_star_reads_map_thread.summary", melted = T, xvariable = "nThreads",
yvariable = "Output_size", smooth_method = "auto",
x_label ="Number of specified threads", y_label = "Disk space usages (Gb)") +
scale_x_continuous(breaks=seq(1,25, by=1)) +
scale_y_continuous(breaks=seq(0,6, by=1),limits=c(0,6))
往期精品(点击图片直达文字对应教程)
后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集
评论
李彦宏:开源大模型不如闭源,后者会持续领先;周鸿祎:“开源不如闭源” 的言论是胡说八道
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁0、李彦宏:开源大模型不如闭源,后者会持续领先当今
源码共读
0
雷军辟谣了!不是高考状元,卡里也没有冰冷的 40 亿
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁最近很火的雷军简历,听说落魄时卡里只有冰冷的 40
源码共读
0
朋友,你也不想一个人孤孤单单的上班吧?
上班的时候,有一群摸鱼搭子非常重要!一到上班时间,他们就从四面八方涌进群里冒泡...从八卦聊到股市、从职场聊到乌X兰局势,偶尔还会复读、相亲、battle...然后,下午6点钟准时消失不见...所以你要不要加入我们一起摸鱼?我们有北京、上海、深圳、广州、杭州、武汉、成都、南京等8个城市的摸鱼群,还有
产品经理日记
0
面试官:只知道v-model是modelValue语法糖,那你可以走了
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群前言我们每天都在用v-model,并且大家都知道在vue3中v-model是:modelValue和@update:modelValue的语法糖。那你知道v-model指令是如何变成组件上的modelValue属性和@update:
前端Q
1
什么是以太坊期货ETF?它们如何运作?
作者:Jagjit Singh,CoinTelegraph;编译:陶朱,金色财经一、以太坊期货 ETF 介绍以太坊期货 ETF 是追踪以太坊期货合约而非以太坊本身的投资基金。考虑一份承诺在未来某个时间以特定价格购买以太坊的合约。这些衍生品合约通过以太坊 (ETH) 期货交易所交易基金 (ETF) 进
区块链头条
0
IntelliJ IDEA 2024 首个大版本发布,好用到爆!
关注我们,设为星标,每天7:40不见不散,架构路上与您共享回复架构师获取资源大家好,我是你们的朋友架构君,一个会写代码吟诗的架构师。JetBrains 为多款 IDE 发布了 2024 年度首个大版本更新 (2024.1),包括 IntelliJ IDEA 、WebSt
Java架构师社区
0
人脑是怎么防止梯度消失和梯度爆炸的?
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达编者荐语 神经网络,也称为人工神经网络 (ANN) 或模拟神经网络 (SNN),是机器学习的子集,并且是深度学习算法的核心。其名称和结构是受人类大脑的启发,模仿了生物神经元信号相互传递的方式。文 | 冒蓝火的加特林源 |
小白学视觉
194
是谁还在坚持用 QQ?腾讯回应:好冷漠...
转自:电脑报近日,“仍有5亿人坚持用QQ”的话题登上微博热搜,引发网友热议。根据腾讯财报,截至2023年第三季度,QQ智能终端月活跃用户数为5.58亿,仅占微信四成。但换个角度看,作为一款25岁的元老级社交应用,QQ破5亿的月活仍然是很多社交App羡慕的存在,超过了微博和知乎总和。只是在用户增量上,
dotNET全栈开发
10