<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<?xml-stylesheet type="text/css" href="http://cankavaklioglu.name.tr/kosebasi/"?>
<title type="html">Köşebaşı</title>
<subtitle type="html">linux, bilim, mühendislik, doktora ve hayat hakkında</subtitle>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi" />
<link rel="self" type="application/atom+xml" href="http://cankavaklioglu.name.tr/kosebasi/atom.xml" />
<updated>2012-04-30T14:12:10+03:00</updated>
<author>
<name>Can Kavaklıoğlu</name>
<uri>http://cankavaklioglu.name.tr/kosebasi</uri>
</author>
<id>http://cankavaklioglu.name.tr/kosebasi/</id>
<generator uri="http://nanoblogger.sourceforge.net" version="3.4.2">NanoBlogger</generator>
<entry>
<title type="html">Matlab'da komut satırından hata ayıklama</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/04/index.html#e2012-04-30T14_06_29.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/04/index.html#e2012-04-30T14_06_29.txt</id>
<published>2012-04-30T14:06:29+03:00</published>
<updated>2012-04-30T14:06:29+03:00</updated>
<category term="Mühendislik" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Sonunda komut satırından gerekli komutların bir kısmını kullanma fırsatı buldum: 
<pre>
dbstop if error
</pre>deyip bir kod çalıştırdığımızda, hata üzerine hata ayıklama kipi açılıyor. Böylece normal yazı düzenleyicdeki gibi hata ayıklamak mümkün oluyor. 
<br />
<br />Burada önemli bir nokta, yukarıdaki komutu verdikten sonra Matlab komut satırında çalışsa bile grafik editörü açıyor. Bunu engellemek için Matlab'ı şu şekilde başlatmak gerekiyor: 
<pre>
matlab -nodesktop -nosplash -nodisplay
</pre>Hata ayıklama kipinden çıkmak için gerekli komut: 
<pre>
dbquit
</pre>Diğer hata ayıklama komutları için referans 
<a href="http://www.mathworks.com/help/techdoc/ref/f16-11063.html#bsc5ynx">burada</a>.</div>
</content>
</entry>
<entry>
<title type="html">Unutmamak gereken birkaç nokta</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/04/index.html#e2012-04-08T19_51_39.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/04/index.html#e2012-04-08T19_51_39.txt</id>
<published>2012-04-08T19:51:39+03:00</published>
<updated>2012-04-08T19:51:39+03:00</updated>
<category term="cuda" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Uzun süren kerneller için gerekli xorg.conf ayarı: 
<pre>
Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    BusID          "PCI:1:0:0"
    Option         "NoLogo" "true"
    Option         "UseEDID" "false"
    Option         "DPI" "96x96"
    # kernel timeout icin
    Option         "Interactive" "0"
EndSection
</pre>
<br />
<br />Sürücü sürümü ile SDK (toolkit) sürümü farklı olursa hiç bir şey ifade etmeyen genel hata gözükebilir: 
<pre>
unspecified launch failure
</pre>
<br />
<br />Kodun zamanlama ölçümü yapılırken cevabın karttan okunduğu satırında hesaba katılması gerekli. Çünkü anladığım kadarıyla kerneller tembel (lazy) çalışıyor. Yani sonucu okumaya çalışmadıkça kernel çalışmıyor!!! En azından zamanlama çalışmalarım bunu gösterdi. 
<br />
<br />Bu çok güzel bir nokta: hafıza problemlerini tespit etmek için derleme komutuna -G3 parametresi eklendikten sonra kod cuda-memcheck programı üzerinden çalıştırıldığında pek enfes hafıza hatası çıktıları gözükebiliyor. Örnek: 
<pre>
========= Invalid __global__ read of size 4
=========     at 0x00000660 in common/kernels.cu:300:calculate_C_mops
=========     by thread (7,0,0) in block (0,0,0)
=========     Address 0x05c66de0 is out of bounds
=========
========= ERROR SUMMARY: 8 errors
</pre></div>
</content>
</entry>
<entry>
<title type="html">Emacs'te anahtar kelime ile değiştirme</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-16T11_17_56.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-16T11_17_56.txt</id>
<published>2012-03-16T11:17:56+03:00</published>
<updated>2012-03-16T11:17:56+03:00</updated>
<category term="Linux" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Emacs'te bir kod parçasının başına yorum karakteri koymak için (Ctrl C C kısayolunun çalışmadığı zamanlarda) bir türlü gerekli komutu bulamıyordum. Geçenlerde buldum, unutmadan not edeyim: 
<pre>
Ctrl SPACE
oklar ile bir kısım kod seçilir, yada bütün dökümana aynı işlemi yapmak için bu adım atlanabilir.
<br />
<br />
M x RET
replace-regexp RET
^ RET
% RET
</pre>Böylece satır başını anlatan ^ karakteri sayesinde bütün satırların başına Matlab'ın yorum karakterini koymuş oluyoruz. 
<br />
<br />Not: bu arada "regular expression" ifadesinin düzgün bir türkçesini bulamadım, rasyonel ifade gibi birşeyler var, ama o da pek güzel değil. Önerisi olan var mı?</div>
</content>
</entry>
<entry>
<title type="html">Güzel işaretçi işaretçisi örneği</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-07T02_50_05.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-07T02_50_05.txt</id>
<published>2012-03-07T02:50:05+03:00</published>
<updated>2012-03-07T02:50:05+03:00</updated>
<category term="Mühendislik" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
#include &lt; iostream &gt;
#include &lt; stdlib.h &gt;
using namespace std;
int main(){
int a[] = {1,2};
int* b = a;
int c[] = { 3 , 4};
int** d = (int**) calloc(3, sizeof(int*));
d[0] = a;
d[1] = b;
d[2] = c;
for (int i=0; i&lt;3; i++)
  for (int j=0; j&lt;2; j++)
    cout &lt;&lt; d[i][j] &lt;&lt; endl;
}
</pre>
</div>
</content>
</entry>
<entry>
<title type="html">Matlab'da "`GLIBCXX_3.4.14' not found" hatası</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-04T11_28_10.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-04T11_28_10.txt</id>
<published>2012-03-04T11:28:10+03:00</published>
<updated>2012-03-04T11:28:10+03:00</updated>
<category term="Mühendislik" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Bunu sürekli unutuyorum buraya yazayım. Matlab'da MEX dosyaları çalıştırmak isteyince, sanırım Matlab'ın içinde gelen libc çalışmadığı için, şunu yapmak gerekiyor: 
<pre>
cd sys/os/glnxa64
mkdir old
mv mv libgcc* libstdc++* old/
</pre></div>
</content>
</entry>
<entry>
<title type="html">3.3 Linux Kernel'i ile Nvidia geliştirici sürücüsünü derlemek</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-03T14_45_31.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-03T14_45_31.txt</id>
<published>2012-03-03T14:45:31+03:00</published>
<updated>2012-03-03T14:45:31+03:00</updated>
<category term="Linux" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Bunu yapabilmek için sürücü yükleyicisinde ufak bir düzenleme yapmak gerekiyor. Bir arkadaşımız 
<a href="http://weltall.heliohost.org/wordpress/2012/01/20/linux-kernel-3-3-rc1-and-nvidia-drivers/">şurada</a>güzelce anlatmış. İbretlik bir paylaşım.</div>
</content>
</entry>
<entry>
<title type="html">Yoksa Sandy Bride'deki (i915) pil/görüntü bozulması sorunları çözüldü mü?!?</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-02T15_06_59.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/03/index.html#e2012-03-02T15_06_59.txt</id>
<published>2012-03-02T15:06:59+03:00</published>
<updated>2012-03-02T15:06:59+03:00</updated>
<category term="Linux" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Sanırım bu sefer oldu!!! 
<a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/818830">Buradan</a>ve 
<a href="http://lists.freedesktop.org/archives/intel-gfx/2012-February/015329.html">buradan</a>öğrendiğim üzere hem pil sarfiyatını acayip düşüren, hem de bunu yaparken görüntü bozulmalarına sebep olmayan rc6 sürümü linux-next'e gelmiş gibi görünüyor. Denedim oldu!!! Ve bu gerçekten inanılmaz bir durum, kafayı yemek üzereydim! 
<br />
<br />Bu linux kernel sürümüne ulaşmak için iki yol var. Birincisi bir kaç gün bekleyip, 3.3-rc6 yı indirip, derleyip, kurmak. Diğeri ise linux-git deposundan indirip kurmak. Bunu yapmak için kodu şu şekilde indirmek gerekiyor: 
<pre>
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux-git
</pre>Bu şekilde indirirseniz bütün geçmişi indiriyorsunuz toplam 2.3 GB. Mantıklı olarak sadece son halini isterseniz: 
<pre>
git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux-git
</pre>O zaman sadece 400 MB boyutunda bir indirme yapmak gerekiyor. İndirme bittikten sonra yine derleme ve kurma işlemleri gerekiyor tabi. Yükleme için 
<a href="http://cankavaklioglu.name.tr/kosebasi/archives/2011/12/index.html#e2011-12-17T22_46_58.txt">aşağıya</a>bakabilirsiniz. 
<br />
<br />Bir diğer önemli nokta rc6 çalıştırmak için açılışta kernele parametreler vermek gerekiyor. Bunun için Debian tarzı sistemlerde /etc/grup/default dosyasında şöyle bir değişiklik yapmak gerekiyor: 
<pre>
GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=force i915.i915_enable_fbc=1 i915.lvds_downclock=1 i915.i915_enable_rc6=1"
</pre>Bunu yaptıktan sonra root kullanıcısı ile update-grub komutunu vermek gerekiyor. Bu yeni kernel ile bilgisayarı yeniden başlattıktan sonra Sandy Bridge işlemcinizin sağlayacağı uzun pil ömrünü doğru düzgün çalışan görüntü ile seyreylemenin mümkün olacağını düşünüyorum.</div>
</content>
</entry>
<entry>
<title type="html">DNS sıkıntısına kısmi çözüm</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/02/index.html#e2012-02-29T09_56_32.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/02/index.html#e2012-02-29T09_56_32.txt</id>
<published>2012-02-29T09:56:32+03:00</published>
<updated>2012-02-29T09:56:32+03:00</updated>
<category term="Linux" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Genelde kalite bağımsız çalışan DNS sunucularımız için fena olmayan bir çözüm: pdnsd. 
<pre>
aptitude install pdnsd
</pre>komutu ile yüklenebilen paket DNS sorgularını yerel önbelleğinde tutarak, sonraki sorguları hızla cevaplayabiliyor. DNS problemi olanlara duyrulur. 
<br />
<br />Bir zamandır deniyorum, bağlantıda patlamalar olmadı, hafif bir DNS hızlanması da oldu gibi.
<a href="http://www.debian-administration.org/articles/390">Detaylı bilgi.</a></div>
</content>
</entry>
<entry>
<title type="html">g++'nın haksızlığı</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/02/index.html#e2012-02-27T10_44_15.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/02/index.html#e2012-02-27T10_44_15.txt</id>
<published>2012-02-27T10:44:15+03:00</published>
<updated>2012-02-27T10:44:15+03:00</updated>
<category term="Mühendislik" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Bir kod parçası düşünün: 
<pre>
for i = 1..102660
  for j = 1..102660
    for k = 1..69679430
      ... birşeyler ...
</pre>Bunu derleyip 
<code>g++ file.cc</code>çalıştırdığımda j döngüsünün her bir elemanı 1 saniye civarında sürüyordu. Yani işin tamamı 28 * 102660 saat sürecek gibi gözüküyordu. 
<br />
<br />Sonra bunu şöyle derledim 
<code>g++ -O3 file.cc</code>. Birkaç kere denememe rağmen hala inanamıyorum ama kod dosyasına hiç dokunmadan bütün döngü bir saniyeden az bir sürede bitiyor! 
<br />
<br />Peki soruyorum sana -O3 eniyileme (optimizasyon) parametresini bilmeyenler ne yapacak g++! 
<br />
<br />Düzenleme: tabiki benim algım yanlışmış! Sanırım olan durum derleyicinin döngünün dışına bir sonuç çıkmadığını farkedip, döngünün içindeki kodu hiç çalıştırmaması idi!!! Döngünün içerisinde bir sayaç tutup yazdırmaya kalkınca aynı senaryoya göndük! Vay vay vay... C++'ın puslu yolları breh breh breh...</div>
</content>
</entry>
<entry>
<title type="html">Emacs'te yeni satır ile kelime değiştirme</title>
<author>
<name>Can Kavaklıoğlu</name>
</author>
<link rel="alternate" type="text/html" href="http://cankavaklioglu.name.tr/kosebasi/archives/2012/02/index.html#e2012-02-17T10_25_15.txt" />
<id>http://cankavaklioglu.name.tr/kosebasi/archives/2012/02/index.html#e2012-02-17T10_25_15.txt</id>
<published>2012-02-17T10:25:15+03:00</published>
<updated>2012-02-17T10:25:15+03:00</updated>
<category term="Linux" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Unutmayalım. Diyelim ki bir satırımız var: 
<pre>
...
LAYER
...
</pre>Bunu şu şekilde değiştirmek istiyor olalım: 
<pre>
...
   
LAYER
...
</pre>Bunun için gerekli Emacs 
<a href="http://www.multithread.org/index.php?q=node/89">hareketi</a>: 
<pre>
M-x replace-string RET
LAYER RET
C-q C-j LAYER RET
</pre></div>
</content>
</entry>
</feed>

