图形可以在两个以上的线程上批量处理吗?

时间:2015-06-03 16:23:07

标签: multithreading graphicsmagick

如果我创建6个graphmagick批处理文件来转换35k图像,这就是我在htop中看到的:

htop http://f.cl.ly/items/0P3u2S1i1g3K16440g1V/Screen%20Shot%202015-06-03%20at%2011.42.39%20AM.png

为什么没有使用更多线程?我猜这两个线程都在同一个核心上(4核心英特尔超线程)。我无法在线找到关于这个的图形匹配配置。我是否因为调度不当而责怪我的操作系统?

gm手册页-limit <type> <value>中唯一相关的选项是每个图像的资源限制,而我正在寻找一种方法来增加用于多个图像的线程数,而不是一张图片。

确实,graphicmagick关于并行性的唯一内容是关于OpenMP(这似乎是关于多线程单图像处理)。所以也许没有人支持我想要做的事情。那么我的问题可能更为通用:&#34;如果我启动gm的多个实例,为什么它们都在同一个线程上运行?&#34;我不确定这是一个操作系统问题还是gm问题。

批处理文件中的每一行都是:

convert in/file1.jpeg -fuzz 10% -trim -scale 112x112^ -gravity center -extent 112x112 -quality 100 out/file2.jpeg

我使用以下代码运行批处理文件:gm batch -echo on -feedback on data/convert/simple_crop_batchfile_2.txt

我在GraphicsMagick 1.3.18 2013-03-10 Q8和Ubuntu 14.10上,当我使用apt-get升级时,我告诉我:Calculating upgrade... graphicsmagick is already the newest version

我的故事确实显示了使用多个批处理文件的无意义(尽管使用2个批处理文件同时超过1个整体处理时间加快了30%)

1 个答案:

答案 0 :(得分:0)

原来我可以把这归咎于CPU,核心利用问题的图片来自Intel Xeon X5365 @ 3.00GHz处理器。以下是Intel Xeon E5-2620 v2 @ 2.10GHz上仅有4个并发进程的图片:

parallel cpu utilization http://f.cl.ly/items/3B3D0J3h0E1L3s2G0A1n/Screen%20Shot%202015-07-25%20at%208.31.51%20PM.png

两台机器上的操作系统和软件版本相同(以及具有相同确切数据的完全相同的任务),唯一的区别是CPU。在这种情况下,后来的CPU速度超过2倍(对于4个批处理文件的情况)。