使用GNU Parallel发挥多核CPU的威力

  • pATAq
  • LV5工程师
  • |      2016-04-25 00:59:43
  • 浏览量 2010
  • 回复:0

前言

原创文章,转载引用务必注明链接。水平有限,欢迎指正。

树莓派拥有一枚四核CPU(现在的CPU大多拥有多个核心),但是默认情况下,程序仅使用其中一个,其他处于围观状态。


使用GNU Parallel发挥多核CPU的威力
那么如何让程序使用多核心负载,效果又如何呢?
这里我们通过GNU Parallel,让Linux命令使用所有的CPU内核,加速程序运行。

1. GNU Parallel

官方主页:https://www.gnu.org/software/parallel/
中文指南:http://my.oschina.net/enyo/blog/271612
主要适用于对文件进行操作,比如编译源码、压缩文件、多媒体转码等。
这里以压缩文件为例:

1.1 安装相关程序

# 安装压缩工具bzip2以及gnu parallel

sudo apt-get update

sudo apt-get install -y bzip2 parallel

上传VidonXBMC_V14.2.1.apk作为测试文件(79 MB)


1.2 默认单核压缩

time cat VidonXBMC_V14.2.1.apk | bzip2 --best > single.bz2


效果如图,仅使用一个CPU核心:


使用GNU Parallel发挥多核CPU的威力
time命令用于统计给定命令所花费的总时间。这里我们主要看real这一项,指完成该命令的时间,其他两项和CPU用时有关,详情请看下文链接。


1.3 使用四核压缩

time cat VidonXBMC_V14.2.1.apk | parallel --pipe --recend \'\' -k bzip2 --best > multi.bz2

此时使用全部4个CPU核心。


使用GNU Parallel发挥多核CPU的威力
耗时为原来的一半,还是很明显的。


2. make命令使用多核心编译


相信很多人下载C语言源码,编译程序的时候,会用到以下三部曲:

./configure

make

sudo make install

其中make是编译主要部分,也是最耗时的部分,而使用-j参数可以指定使用多核负载,同时工作,加快效率。例如:


make -j 2

意为使用两个内核同时编译,不加参数则使用所有内核同时工作。



3. 参考


  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子