API调用的速度

时间:2016-04-05 11:54:25

标签: c++ imagemagick opencl magick++

我按照Why is ImageMagick with OpenCL slower than OpenMP?的说明安装了imagemagick。我需要将图像调整为4种不同的尺寸,并且必须裁剪它们。我编写了一个C ++程序,可以在文件夹中为100个图像调用image.resize("500x500!")image.resize("550x550!")image.resize("600x600!")image.resize("650x650!")image.crop(Geometry(200,150, 10,50))

当我在命令行中运行相同的大小写时:

cd /home/Downloads/ImageMagick-6.9.3-7/utilities/ && \
    exec sudo time ./convert img.jpg -write \
     mpr:scroll  -filter Lanczos -resize 500x500 -crop 200x150+10+50 -write m.jpg delete \
     mpr:scroll  -filter Lanczos -resize 600x600 -crop 200x150+10+50 -write n.jpg delete \                 
     mpr:scroll  -filter Lanczos -resize 550x550 -crop 200x150+10+50 -write o.jpg delete \ 
     mpr:scroll  -filter Lanczos -resize 650x650 -crop 200x150+10+50 p.jpg;

我的输出为8124.13ms。但是当我在Magick ++ API中做同样的情况时,我得到了369237毫秒的输出。为什么会有这么大的差异?

当我检查设备基准测试文件时:

$ cat ~/.cache/ImageMagick/ImagemagickOpenCLDeviceProfile

显示

<version>ImageMagick Device Selection v0.9</version>
<device><type></type><name>Quadro M6000</name><driver>352.79</driver><max cu>24</max cu><max clock>1114</max clock><score>0.0960</score></device>
<device><type></type><score>1.1890</score></device>

根据How do I build ImageMagick with OpenCL?中的帖子,API必须在GPU中运行,因为GPU设备的分数最低。我该如何解决?

0 个答案:

没有答案