日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程也不是越多越好,多少是好? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面我們評估了不同大小基因組構建索引所需的計算資源和時間資源和不同大小數據集比對所需的計算資源和時間資源。

下面我們進一步看下不同線程數的影響。

測試電腦配置

  • 這是一個10核、20線程的處理器,主頻2.8 G HZ,可超頻到5.2 GhZ。

  • 在Windows系統上安裝了Ubuntu子系統進行的測試。

  • 測試指定不同線程數對速度提升的影響

    因為測試電腦是最多20線程,這里指定1-25共25個測試線程,程序如下:

    # 10核心 20 線程for thread in `seq 1 25`; doi=SRR1039517mkdir -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 GeneCountsdu -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`; doecho ${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))

    往期精品(點擊圖片直達文字對應教程)

    機器學習

    后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的线程也不是越多越好,多少是好?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。