core i7 üzerinde matlab performans testi
clear,clc,close all
options = gaoptimset();
options = gaoptimset(options,'Generations',500);
options = gaoptimset(options,'TolFun',1e-1024);
options = gaoptimset(options,'Display','none');
options = gaoptimset(options,'PopulationSize',100);
t=zeros(1,8);
for i=1:8
tic;
[x,fval,exitflag,output] = ga(@rastriginsfcn,200,[],[],[],[],[],[],[],options);
ttime=toc;
fprintf('%d %f\n',i,ttime);
t(i)=ttime;
end
meant=mean(t)
stdt=std(t)
sumt=sum(t)
bu kodu tek bir matlab açıp koşuyoruz. elde edilen sumt değeri i7@920 icin 32sn. aynı değer q6600 işlemcili bir diğer makinede 35sn iken benim yadigar 3ghz p4 ht işlemcili 32bit xp'de 60 sn.
tabi i7 de birden fazla çekirdek olduğu için paralel çalıştırma performansını merak ediyoruz. bu yüzden birden fazla matlab açıp ayı kodu simultane olarak aynı anda başlatıyoruz (bu işlemi manuel olarak yapıyoruz, ufak zaman kayıpları tolere edilebilir, çünkü bu kayıplar tüm test konfigurasyonları için geçerli). paralel çalıştırma için küçük bir not: eğer uyguladığınız kod pratik bir şekilde parçalara bölünebiliyorsa anlatılan teknik oldukça efektif. mesela yukardaki kod parçalara çok kolay bölünebilir çünkü dikkat edilirse 1 den 8 kadar bir for döngüsü var. tek bir matlab de 1 den 8 e kadar koşmak yerine 8 tane farklı matlabde 1er kere koşmak aynı şey. yani bu kod hiç bir ekstra işlem yapmadan parçalanabiliyor. tabi ben testlerde manuel başlatma yaptığım için kodu parçalamadım. parçalasaydık süreler oldukça düşeceği için manuel başlatmadan dolayı zaman kayıpları ve dolayısıyla hatalar artacaktı. bunun yerine tüm kodu olduğu gibi koşup, elde edilen süreyi matlab sayısına böldüm. nasıl olsa kodun eşit küçük parçalara ayrıldığını biliyoruz.
elde ettiğim sonuçlar özetle şu şekilde:
-i7 de maksimum verimlilik 8 adet paralel matlab koşulduğunda elde ediliyor ve yaklaşık 6.84 sn. yani tek matlab ile çalışmanın tam 4.77 katı.
-q6600 da maksimum verimlilik 4 adet paralel matlab koşulduğunda elde ediliyor ve yaklaşık 9.20 sn. yani q6600 da tek matlab ile çalışmanın tam 3.89 katı.
-p4 3ghz de maksimum verimlilik 2 veya daha fazla matlab ile çalışmakla elde ediliyor ve 47sn. yani p4 de tek matlab ile çalışmanın 1.27 katı.
sonuçları yorumlayacak olursak:
-i7 de esasen 4 çekirdek var. fakat hyper threading in bir artisi olsa gerek paralel koşmada 4 ün üzerinde (4.7 kat) verim artışı elde edebildim.
-q6600 ekonomik bir çözüm olmasına rağmen performansı ve verimliliği (3.8 kat) oldukça yüksek.
sistemleri birbiri ile karşılaştıracak olursak:
-i7 920, q6600 dan 1.33 kat daha hızlı
-i7 920, p4 3ghz ht den 6.83 kat daha hızlı (oy oy :)
elde ettiğim detaylı sonuçlar şu excel dosyasında mevcut.
eğer matlab ile uğraşıyorsanız ve yukardaki testi siz de yapmak isterseniz sonuçlarını görmek isterim. konfigurasyonunuz ve performans değerlerinizi ve yorumlarınızı bekliyorum :)





