线程也不是越多越好,多少是好?

news2024/11/17 9:42:47

前面我们评估了不同大小基因组构建索引所需的计算资源和时间资源和不同大小数据集比对所需的计算资源和时间资源。

下面我们进一步看下不同线程数的影响。

测试电脑配置

这是一个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))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1857457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows系统上nginx搭建文件共享

1、下载windows版nginx 下载地址 2、配置nginx 编辑nginx.conf配置文件 在http模块下添加这个参数 underscores_in_headers on;#修改location内容,共享哪个文件夹,就写哪个文件夹,最后一定要跟上/,否则无法访问 location / {…

Java内存模型中的“可见性”、“原子性”、“有序性”,它们如何影响多线程程序的行为?

在Java内存模型(Java Memory Model, JMM)中,“可见性”、“原子性”和“有序性”是确保多线程程序正确执行的三个核心概念。它们直接影响到多线程环境下数据的一致性和程序的行为。 可见性(Visibility) 概念&#xf…

Android 大话binder通信 (下)

戳蓝字“牛晓伟”关注我哦! 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 前情提要 Android 大话binder通信 (上)主要介绍了矮挫丑进程一直暗恋白富美进程,遂发送情书给她,以表达对她的爱慕之情,而情书顺利的到达…

NFTScan | 06.17~06.23 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2024.06.17~ 2024.06.23 NFT Hot News 01/ Slerf 将向其 NFT 持有者空投,快照将在几小时内拍摄 6 月 17 日,Slerf 宣布将为其 NFT 持有者准备空投,快…

[C++]24:异常和智能指针

异常和智能指针 一.异常1.C/C的错误:1.C2.C3.三个关键字: 2.使用异常:1.基本概念:2.基本代码:1.基本使用:2.多个捕获:3.任意类型异常的捕获:4.异常的重新抛出: 3.异常安全…

RK3568技术笔记十八 Linux GPIO驱动程序中设备树分析

这段代码是RK3568芯片的设备树(Device Tree)片段,用于描述GPIO控制器的配置。 pinctrl: pinctrl { compatible "rockchip,rk3568-pinctrl"; // 兼容性字符串,指定此设备树节点适用于RK3568的引脚控制器 rockchip,grf…

汽车信息安全--HSM和TEE的区别

目录 HSM TEE TEE 和 HSM 技术特点与主要应用场景 TEE 和 HSM 相结合的方案 TEE 和 HSM 在车端的分布 HSM HSM指Hardware Security Module,它是一种有自己独立的CPU、密码算法硬件加速器、独立Flash等,用于生成、存储和管理加密密钥,以…

2024年商业管理与金融创新国际会议(BMFI 2024)

2024年商业管理与金融创新国际会议(BMFI 2024) 2024 International Conference on Business Management and Financial Innovation 【重要信息】 大会地点:上海 大会官网:http://www.icbmfi.com 投稿邮箱:icbmfisub-co…

高并发cn.hutool.http.HttpRequest请求优化

高并发cn.hutool.http.HttpRequest请求优化 文章目录 高并发cn.hutool.http.HttpRequest请求优化优化方向Async线程池管理Http请求处理流程Tomcat接收到请求后的处理流程Tomcat的线程分配和管理方案一方案二方案三如何启用Spring Boot Actuator 优化方向 Async线程池管理 使用…

用户态协议栈06-TCP三次握手

最近由于准备软件工程师职称考试,然后考完之后不小心生病了,都没写过DPDK的博客了。今天开始在上次架构优化的基础上增加TCP的协议栈流程。 什么是TCP 百度百科:TCP即传输控制协议(Transmission Control Protocol)是…

24 常用到的截图工具

1 语录 从此世界在我面前, 指向着我想去的任何地方, 我完全而绝对的主持着我 定义: 截图是将计算机屏幕上的当前显示内容保存为图片文件的行为。 概念: 全屏截图:捕捉整个屏幕的截图。区域截图:选择屏幕上…

【第十四课】区域经济可视化——标注

一、前言 地图上说明图面要素的名称、质量与数量特征的文字或数字,统称为地图 注记。只有图形符号而没有注记符号的地图,只能是一种令人费解的 “盲图”。 地图上的注记分为名称注记、说明注记和数字注记三种。名称注记用于说明各 种事物的专有名称&…

怎么使用RSI指标分析现货黄金行情走势?

拿到一波现货黄金行情走势,如何着手对其进行分析呢?投资者只要在网络上搜索一下,保管能够找到各种各样的答案,而本文要讨论的就是其中一种,我们借助RSI指标进行分析。 RSI就是相对强弱指标的简称,这是市场中…

车间现场管理那些事

在制造企业中,车间现场管理是至关重要的一环。车间现场管理包括了对生产设备、生产过程、产品质量以及员工行为的管理。有效的车间现场管理能够提高生产效率,降低成本,提高产品质量,并且能够保障员工的安全。那么,车间…

License简介和Licensecc的使用

License简介和Licensecc的使用 License简介什么是LIcense简易License制作加密扫盲对称加密非对称加密 Licensecc使用构建和编译在linux上进行编译UbuntuCentOS 7CentOS 8下载并编译配置编译和测试cmake 后可以跟的参数在Linux上为Windows进行交叉编译 在windos上进行编译MSVC (…

Linux 运维王者从不离手的10款工具

运维工程师在日常工作中频繁运用的10款工具,并细致阐述每款工具的功能、适用场景以及其卓越之处。 1. Shell脚本 功能:主要用于自动化任务和批处理作业。 适用场景:频繁用于文件处理、系统管理、简单的网络管理等操作。 优势:灵…

原装GUVCL-T10GD韩国GENICOM光电二极管紫外线传感器原厂代理商

深圳市宏南科技有限公司是韩国GenUV公司的原厂代理商,所售紫外线传感器均来自于原始生产厂商直接供货,非第三方转售。 GUVCL-T10GD 韩国GENICOM光电二极管光传感器 / 低亮度 / 紫外线 UV-C传感器 GUVCL-T10GD 采用基于氮化铟的材料 肖特基型 光电二极管…

竞赛选题 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 🧿 更多资…

机器学习之Kmeans丨集成学习丨决策树测试

选择题 下面属于决策树的后剪枝的是?【 正确答案: A】 A. 把数据集分成测试集和训练集,用测试集构建一个足够大的决策树,用测试集判断叶节点合并是否能降低误差。 B. 当树到达一定深度的时候停止生长。 C. 当前节点的样本数量小于某个阈值时&…

node.js游戏网站-计算机毕业设计源码031726

摘 要 基于网络游戏的蓬勃发展,游戏网站发挥着吸引玩家和提高玩家之间的互动性的重要作用,因而,建设了一个以游戏为中心的游戏官网。 该游戏提供了一个大型的玩家交流互动平台,包括用户管理、游戏社区、游戏信息、分类信息、游戏资…