PerlMagick �� OpenMP ͭ�����ȹ���٤ˤʤ��

ImageMagick �� PerlMagick ��Ȥä� CGI �����������ι���٤ˤʤꡢ�ɥĥܤ��Ȥä��Τǡ���˺Ͽ�Ȥ��ƻĤ��Ƥ������Ȥˤ��ޤ����������餹��� apache + ImageMagick + PerlMagick ������Ư������ˤ� ImageMagick �� OpenMP ̵�������ƥ���ѥ��뤹��ɬ�פ�����褦�Ǥ���

����Ū�ˤϲ����Τ褦�ʥ��ץ������դ��ƥ���ѥ����Ԥ����Ȥǰ���ư��Ȥʤ�ޤ���
�� --disable-openmp --disable-opencl �ϰ��˻��ꤹ��ɬ�פ�����ޤ���

cd /usr/local/src/
wget http://image_magick.veidrodis.com/image_magick/ImageMagick-6.7.4-2.tar.gz
tar xvfz ImageMagick-6.7.4-2.tar.gz
cd ImageMagick-6.7.4-2
./configure --disable-openmp --disable-opencl --enable-shared --with-perl
make
make install

�ʲ����ڷ�̤ޤȤ�Ǥ���

- ���ݥ󥵡���� -

PerlMagick ��Ȥä���ñ�ʸ��ڥ�����

�����Τ褦������β������������ñ�ʥץ������򸡾ڥ����ɤȤ��ޤ���

���ܡ����ᡡ

#!/usr/bin/perl
use Image::Magick;

my $img = Image::Magick->new;  $img->Read("blankface.gif");
my $img2= Image::Magick->new;  $img2->Read("kao.png");

$img->Composite( image => $img2, compose => 'over', x => 0, y => 0 );
my $output = 'composite.png';
$img->Write($output);

print "Content-type: image/png\n\n";
open my $fh, '<', $output;
binmode $fh;
print <$fh>;
close $fh;


OpenMP ͭ��/̵�� ImageMagick �Ǥ� apache bench ���

���줾�첼���Τ褦�� configure ���ץ����� ImageMagick �򥳥�ѥ��뤷�ޤ���with-perl ���ץ����� PerlMagick ��Ʊ���˥��󥹥ȡ��뤷�ޤ���

OpenMP ͭ��

./configure --enable-shared --with-perl && make && make install

OpenMP̵��

./configure --disable-openmp --disable-opencl --enable-shared --with-perl && make && make install

configure �ν��ϳ�ǧ�� OpenMP ��ͭ��/̵������ǧ�Ǥ��ޤ���̵�����ˤ���ʸ���� NULL �Ǥ���

Options used to compile and link:
  PREFIX          = /usr/local
  EXEC-PREFIX     = /usr/local
  VERSION         = 6.7.4
  CC              = gcc -std=gnu99 -std=gnu99
  CFLAGS          = -fopenmp -g -O2 -Wall -pthread
  CPPFLAGS        = -I/usr/local/include/ImageMagick
  PCFLAGS         = -fopenmp
  DEFS            = -DHAVE_CONFIG_H
  LDFLAGS         = -L/usr/lib
  MAGICK_LDFLAGS  = -L/usr/local/lib -L/usr/lib
  LIBS            = -lMagickCore -llcms -ltiff -lfreetype -ljpeg -lpng12 -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -lxml2 -lz -lm -lgomp -lpthread 
  CXX             = g++
  CXXFLAGS        = -g -O2 -pthread
  FEATURES        = OpenMP 


apache bench �ˤ����ǽ��Ӥ�Ԥ��ޤ���OpenMP ͭ���Ǥǻ��OpenMP ̵���Ǥǻ������̤򸫤䤹���Խ����Ƥ��Ƥ��ޤ���Ʊ����³���� 10���ꥯ�����ȿ��� 1000 �ǻ���Ƥߤޤ�����

ab -n 1000 -c 10 'http://localhost/test/test.cgi'

�¹Է����ӤǤ���OpenMP ̵�����ξ������� 7.5 �ܤ���ǽ�Ǥ��뤳�Ȥ���ǧ�Ǥ��ޤ�����

OpenMP̵����
Concurrency Level:      10
Time taken for tests:   27.19970 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1383442 bytes
HTML transferred:       1265000 bytes
Requests per second:    37.01 [#/sec] (mean)
Time per request:       270.200 [ms] (mean)
Time per request:       27.020 [ms]
Transfer rate:          50.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   8.3      0     142
Processing:    29  268 504.0    146    7907
Waiting:        0  253 480.1    133    7905
Total:         29  268 504.2    147    7907
OpenMPͭ����
Concurrency Level:      10
Time taken for tests:   205.12334 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1381132 bytes
HTML transferred:       1265000 bytes
Requests per second:    4.88 [#/sec] (mean)
Time per request:       2050.123 [ms] (mean)
Time per request:       205.012 [ms]
Transfer rate:          6.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    3  40.3      0     689
Processing:    35 2046 1589.5   1553   11708
Waiting:       34 1100 1155.6    734    9594
Total:         35 2049 1592.1   1555   11708

top ���ޥ�ɤˤ����ٳ�ǧ����ӤǤ���OpenMP ̵���������� CPU ����Ψ������ɥ��٥졼�����㤤���Ȥ���ǧ�Ǥ��ޤ���

OpenMP̵����

top - 07:40:55 up 9 days, 22:41,  3 users,  load average: 5.09, 1.20, 0.43
Tasks:  88 total,  11 running,  77 sleeping,   0 stopped,   0 zombie
top - 07:44:16 up 9 days, 22:44,  3 users,  load average: 5.08, 1.75, 0.71
Tasks:  88 total,  19 running,  68 sleeping,   0 stopped,   1 zombie
Cpu(s): 80.2%us, 19.5%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:    510540k total,   354216k used,   156324k free,    25500k buffers
Swap:  2048276k total,    15536k used,  2032740k free,   235096k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
14953 apache    17   0 77600 6032 3004 R  2.0  1.2   0:00.06 test.cgi          
14915 apache    18   0     0    0    0 R  1.3  0.0   0:00.04 test.cgi          
14948 apache    17   0 76640 5108 3000 R  1.3  1.0   0:00.04 test.cgi          
14959 apache    17   0 76772 5220 3000 R  1.3  1.0   0:00.04 test.cgi          
14960 apache    15   0     0    0    0 Z  1.3  0.0   0:00.04 test.cgi          
13947 root      15   0 12724 1056  808 R  0.7  0.2   0:00.11 top               
14160 root      15   0 63272 2824 2104 S  0.7  0.6   0:00.15 ab                
14887 apache    18   0 23292 2204 1356 R  0.7  0.4   0:00.02 test.cgi          
20701 apache    15   0  183m 4216 1240 S  0.7  0.8   0:00.12 httpd             
20728 apache    15   0  183m 4216 1240 S  0.7  0.8   0:00.17 httpd             
14956 apache    18   0 23292 2224 1356 R  0.3  0.4   0:00.01 test.cgi          
14958 apache    17   0 76640 5144 3000 R  0.3  1.0   0:00.01 test.cgi          
14961 apache    15   0 76304 3016 1812 R  0.3  0.6   0:00.01 test.cgi          
20636 apache    15   0  183m 4216 1240 S  0.3  0.8   0:00.12 httpd             
20637 apache    15   0  183m 4216 1240 S  0.3  0.8   0:00.14 httpd             
20639 apache    15   0  183m 4224 1248 S  0.3  0.8   0:00.16 httpd             
20642 apache    15   0  183m 4216 1240 S  0.3  0.8   0:00.16 httpd             

OpenMPͭ����

top - 07:50:56 up 9 days, 22:51,  3 users,  load average: 13.86, 7.02, 3.02
Tasks:  86 total,   6 running,  75 sleeping,   0 stopped,   5 zombie
Cpu(s): 97.7%us,  2.2%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:    510540k total,   399148k used,   111392k free,    27868k buffers
Swap:  2048276k total,    15536k used,  2032740k free,   263652k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
18462 apache    18   0 88376 7624 3936 R 16.0  1.5   0:00.48 test.cgi          
18459 apache    17   0     0    0    0 Z 15.0  0.0   0:00.45 test.cgi 
18446 apache    18   0     0    0    0 Z 10.7  0.0   0:00.32 test.cgi 
18450 apache    18   0     0    0    0 Z 10.0  0.0   0:00.30 test.cgi 
18452 apache    18   0     0    0    0 Z 10.0  0.0   0:00.30 test.cgi 
18455 apache    18   0 88380 7628 3932 S  9.7  1.5   0:00.29 test.cgi          
18444 apache    18   0 88376 7624 3932 S  8.7  1.5   0:00.26 test.cgi          
18399 apache    19   0 88520 7832 4024 R  6.7  1.5   0:00.54 test.cgi          
18458 apache    18   0 88376 7480 3904 S  4.3  1.5   0:00.13 test.cgi          
18401 apache    19   0     0    0    0 Z  3.7  0.0   0:00.35 test.cgi 
16822 root      15   0 63272 2824 2104 R  0.3  0.6   0:00.17 ab                
20643 apache    15   0  183m 4216 1240 S  0.3  0.8   0:00.21 httpd             
20703 apache    15   0  183m 4216 1240 S  0.3  0.8   0:00.23 httpd             
    1 root      15   0 10352  444  408 S  0.0  0.1   0:04.57 init              
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:12.33 migration/0       
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0       
    4 root      RT  -5     0    0    0 S  0.0  0.0   0:00.03 watchdog/0        

�嵭�Τ褦����ͳ�ǡ�ImageMagick �򥽡�������ñ�� ./configure && make && make install
�ǥ��󥹥ȡ��뤷�����ˡ�PerlMagick ��Ȥä� CGI ��ư�����ȥ����Ф�����پ��֤ˤʤ��ǽ��������ޤ����ץ������Ȥ��Ƥ����꤬�ʤ��Τǡ��츫���������ι���٤ȸ����Ƥ��ޤ��ΤǤ������¤� ImageMagick �Υ���ѥ��륪�ץ����Ǥ����ä��äǤ���

���ʤߤˡ�yum �ǥ��󥹥ȡ��뤷�����ˤϡ��嵭�Τ褦�������ȯ�����ޤ���Ǥ��������󥹥ȡ��뤵�줿�С������� 6.2.8 �Ǥ�������openmp ��̵������or 6.2.8 ��openmp ̤���ݡ��ȡˤ���Ƥ�����������Ư���Ƥ��ޤ�����

yum -y install ImageMagick*

openmp ��ͭ��������Ƥ��뤫�� convert -version �dz�ǧ��ǽ�Ǥ����ʲ��¹Է�̤Ǥ���

$ convert -version
Version: ImageMagick 6.7.4-2 2011-12-27 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP    

$ convert -version
Version: ImageMagick 6.7.4-2 2011-12-27 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features:     

$ /usr/bin/convert -version
Version: ImageMagick 6.2.8 10/20/10 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html
Copyright: Copyright (C) 1999-2006 ImageMagick Studio LLC

���;���
�� ImageMagick�ȥޥ������åɤϺ�����ʥ�����!? - shimada-k������:
�� �Ȥ߹��ߥޥ�������ʲ�����5�ˡ��ޥ�������ˤ�����ɸ��ɽ��OpenMP (1/3) - ��IT MONOist:

- ���ݥ󥵡���� -

��Ϣ���뵭�������ݥ󥵡����