1 Kasım 2016 Salı

C PROGRAMLAMA DİLİ ÖRNEK SORULARI VE ÇÖZÜMLERİ


1-) Kullanıcının girdiği sayıyı ekrana yazdıran program




2-) 1-100 arasında rastgele sayıyı ekrana yazan program




3-) Kullanıcının girdiği 2 sayıdan büyük olanı ekrana yazan program




4-) Kullanıcın girdiği 2 sayının farkını bulan programı yazan program




5-) Kullanıcının girdiği 2 sayı arasındaki işlemi seçebileceği program





6-) Kullanıcının adını öğrenip ekrana yazan program





7-) Kullanıcının adını öğrenip 10 kez ekrana yazan program





8-) Kullanıcının adını öğrenip 10 kez alt alta ekrana yazan program





9-) Kullanıcıdan alınan metnin kaç kez tekrarlanacağını yine kullanıcıdan aldıktan sonra alt alta yazan program





10-) 1'den 100'e kadar sayıları yan yana yazan program





11-) 1'den 100'e kadar sayıları, her sayı 4 basamak yer kaplayacak şekilde yan yana yazan program




12-) 1'den 100'e kadar sayıları, sol tarafı sıfır dolu 4 basamak şeklinde, yan yana yazan program (0001 0002 0003 ..... 0100)





13-) 1'den 20'ye kadar sayıları alt alta yazan program





14-)1'den 20'ye kadar sayıları 0,5'er arttırarak alt alta yazan program





15-)1'den 20'ye kadar sayıları 0,5'er arttırarak alt alta yazan program





16-)1'den 100'e kadar tek sayıları alt alta yazdıran program





17-) 1'den 100'e kadar çift sayıları alt alta yazan program






18-) 1'den 100'e kadar 3'ün katı olan sayıları alt alta yazan program





19-) 1'den 100'e kadar 2'ye ve 3'e tam bölünen sayıları alt alta yazan program




20-)100'den 1'e kadar sayıları yan yana yazan program





21-) 100'den 1'e kadar sayıları, her sayı 4 basamak yer kaplayacak şekilde yan yana yazan program





22-) 100'den 1'e kadar sayıları, sol tarafı sıfır dolu 4 basamak şeklinde, yan yana yazan program (0001 0002 0003 ..... 0100)




23-) 20'den 1'e kadar sayıları alt alta yazan program





24-) 20'den 1'e kadar sayıları 0,5'er azaltarak alt alta yazan program(1 / 1.5 / 2... 19.5 / 20)





25-) 20'den 1'e kadar sayıları 0,5'er azaltarak alt alta yazan program (01.000 / 01.500 / 02.000... 19.500 / 20.000)






26-) 100'den 1'e kadar tek sayıları alt alta yazan program






27-) 100'den 1'e kadar çift sayıları alt alta yazan program






28-) 100'den 1'e kadar 3'ün katı olan sayıları alt alta yazan program






29-) 100'den 1'e kadar 2'ye ve 3'e tam bölünen sayıları alt alta yazan program


23 Ekim 2016 Pazar

SHADER

Modern Gpu'larda Kullanılan Shader'ların İsimleri Ve Görevleri


    Shader, programlanabilir GPU’ların ortaya çıkmasından sonra hayatımıza girmiştir. Shaderlar, vertex'lere ya da pixellere hükmetmek üzere yazılan küçük program parçalarıdır. 

    Çok genel olarak, geometrik yapılar CPU'dan graphics pipeline denen bir yerlere gönderilir, burada öncelikle vertex shaderlar sayesinde vertex’lerin transformasyonları, texture koordinatları gibi şeylerle oynanabilir. Ardından pixel shader gelir, bu da ekrana çizilen her bir noktanın özelliklerini değiştirme şansı verir bize. Doğası gereği pixel shader çok daha yoğun bir iş yapmaktadir, bu yüzden per-pixel diye tabir edilen işler genelde iyi bir ekran kartı gerektirir.

TEPE (VERTEX) SHADER 

    Grafik işlemcisine verilen her tepe noktası için bir defa çalıştırılır. Bu işlem, tepe noktasının 3 boyutlu pozisyonun ekranda gözükecek 2 boyutlu koordinatına çevrilmesi için yapılır. Tepe tarayıcısı pozisyon, renk, doku koordinatları gibi özellikler üzerinde işlem yapabilirken yeni bir tepe noktası yaratamaz. Bu tarayıcının çıktısı bir diğer tarayıcıya aktarılır.



GEOMETRİ (GEOMETRY) SHADER

     Herhangi bir ağ üzerindeki tepe noktalarını silebilir veya yenilerini ekler. Geometrik tarayıcılar, var olan ağa hacimsel detay kazandırmak içinde kullanılabilir ki bunu CPU ya yaptırmak ekstra yük getirecektir.




NOKTA (PIXEL) SHADER 

    Her bir noktanın (pixelin) renk değerini hesaplarlar. Buraya girdiler, grafik işhattına giden poligonları dolduran ızgara ünitesinden gelir. Nokta tarayıcılar genellikle ışıklandırma efektleri, pütür kaplama veya ton ayarı için kullanılır.


V-SYNC

Vsync nedir?

    Vsync, Vertical Synchronization kelimesinin yaygın kullanılan kısaltması. Türkçesi "dikey senkronizasyon" anlamına gelmektedir.
    Vsync (Vertical Synchronization) açılınca ekran kartının tazeleme hızıyla, monitörün tazeleme hızı denkleştirilir. Vsync kapalıyken görüntüde kırılmalar olur. Özellikle 3rd person ve 1st person kameralı oyunlarda mouse hızlı hareket ettirilidiğinde bu kırılma rahatlıkla görülür. Ekranın ortasından titreyen bir çizgi olarak geçer. Kapatıldığında ise fps artar.
    Önce kırılma da diyebileceğimiz "tearing"in ne olduğunu bilmeliyiz. Eğer ekran kartı monitöre belirli bir zamanda monitörün gösterebileceğinden daha fazla kare gönderirse ekranda kırılmalar olur ve bu kırılmalar da hassas bir gözü çoğu zaman rahatsız eder. Görüntüdeki bu kırılmalara "tearing" denir.
    İşte bu kırılmaları engellemek için V-Sync kullanılır ve oyunlarda saniyede gösterilecek kare sayısının monitörün tazeleme hızını geçmemesi sağlanır. Günümüzde 60 Hz`in altındaki tazeleme hızları kullanılmadığından en kötü durumda bile oyun performansı 60 FPS ile sınırlanır ki bu da oyunlar için çoğunlukla ideal hızdır.

    Aşağıda ilk resimde bazı "tearings" (kırılmalar) var. ikince resimde ise bu kırılmalar V-sync ile düzeltilmiş.


BENCHMARK SİTELERİ

Benchmark Nedir? 


      Hız testi (benchmark), gerçek hayattakine benzer işlemleri seri bir biçimde belirli bir donanım üzerinde yürütmektir. Örneğin işlemci testinde bir laptop'un işlemcisi, verileri ne kadar hızlı şifreleyebileceğini görmek üzere bir dizi matematiksel teste tabi tutulabilir. Sabit disk testlerinde büyük bir dosyanın ne kadar zamanda yazılıp okunabildiği, GPU testlerinde ekranda belirli sayıda nesne varken kaç FPS'ye ulaşıldığı test edilebilir. 

    Test sonuçları tek başlarına çok şey ifade etmeseler de, iki ürünün test sonuçlarını karşılaştırdığınızda hangisinin daha iyi performans sunduğu konusunda karar vermeye başlayabilirsiniz.

    İşlemci testi, ram testi, ekran kartı testi vb. testlerin yapıldığı siteler aşağıda verilmiştir.

1. https://www.cpubenchmark.net/

2.http://www.videocardbenchmark.net/

3.http://www.passmark.com/products/pt.htm

EKRAN KARTLARI VE ÖZELLİKLERİ

1.MSI R7 240

Slot Tipi: PCI-Express x16 
Bellek Kapasitesi:  2048 MB
Bellek Tipi: DDR3
Bellek Bant Genişliği: 72 GB / s


2.EVGA GTX750

Slot Tipi: PCI-Express 
Bellek Kapasitesi: 2 GB
Bellek Tipi: GDDR5
Bellek Bant Genişliği: 86.4 GB / s


3.MSI R9 380 GAMING

Slot Tipi: PCI-Express x16 
Bellek Kapasitesi: 4 GB
Bellek Tipi: DDR5
Bellek Bant Genişliği: 256 Bit



4.Sapphire Amd Firepro S9150 

Slot Tipi: PCI-Express x16 3.0
Bellek Kapasitesi: 16 GB
Bellek Tipi: DDR5
Bellek Bant Genişliği: 512 Bit

5.Sapphire AMD FirePro W9100 

Slot Tipi: PCI-Express x16 3.0
Bellek Kapasitesi: 16 GB
Bellek Tipi: DDR5
Bellek Bant Genişliği: 512 Bit


CUDA VE ALTERNATİF TEKNOLOJİSİ

CUDA nedir?


    CUDA, NVIDIA’nın GPU (grafik işlem birimi) gücünü kullanarak hesaplama performansında büyük ölçüde artışlara olanak veren paralel hesaplama mimarisidir.
    Yazılım geliştiriciler, bilim adamları ve araştırmacılar bugüne kadar satılan milyonlarca CUDA etkinleştirilmiş GPU ile görüntü ve video işlem, hesaplamaya dayalı biyoloji ve kimya, akışkan dinamiği, bilgisayarlı tomografi, sismik analiz, ışın izleme ve çok daha fazlası dahil olmak üzere geniş bir aralıkta kullanım alanları bulmaktadır.

CUDA Nasıl İşler?
    Genellikle video işleme ve dönüştürme konusunda kullanılan CUDA’nın direkt olarak bu işe yönelmediğini en başından belirtmek gerek. Birbiri ile veri paylaşımı yapabilen paralel dizilime sahip çekirdekler, CPU’nun tek düzen şeklinde yapacağı işi yayarak gerçekleştirir. Farklı hatlara yüklenen işlemler yavaş gerçekleşir fakat tek yolda yapılabilecek süreden daha kısa sürede işlem sonuçlanır. 

PCI EXPRESS

PCI EXPRESS VERSİYONLARI

1. PCI Express 1.0a
2. PCI Express 1.1
3. PCI Express 2.0
4. PCI Express 2.1
5. PCI Express 3.0
6. PCI Express 4.0


PCI Express 1.0a
    2003 yılında, PCI-SIG slot başına 250 MB / s veri hızı ve saniyede (GT / s) başına 2.5 gigatransfers bir aktarım hızı ile, PCIe 1.0a tanıttı.

PCI Express 1.1

    2005 yılında, PCI-SIG PCIe 1.1'i tanıtmıştır. Bu güncellenmiş veriyolu çeşitli geliştirmeler içerir, ama PCI Express 1.0a ile tam uyumludur.
    Veri hızı için herhangi bir değişiklik yapılmamıştır.

PCI Express 2.0

    PCI-SIG 15 Ocak 2007 tarihinde PCI Express Base 2.0'ı duyurmuştur. Bu veriyolu ile slot başına verim 250 MB / s, 500 MB / s  yükselmiştir. Veri transfer hızını iki katına çıkarmıştır.
    PCIe 2.0 anakart yuvalarının PCIe v1.x kartları ile tam bir geriye dönük uyumu vardır.

PCI Express 2.1

    PCI Express 2.1'in hızı PCI Express 2.0 ile aynıdır. Ne yazık ki,  PCI Express 2.1 kartları ve 1.0/1.0a ile bazı eski anakartlar arasında geriye doğru uyumluluk yoktur ama PCI Express 1.1 bağlantılı anakartlar ile geriye dönük uyumluluk destek programları aracılığıyla kendi üreticileri tarafından bir BIOS güncellemesi ile sağlanlanabilmektedir.

PCI Express 4.0

   PCIe 4.0 standardıyla beraber PCIe 3.0’da buluna  8 GT/s (gigatransfers) hızı 16 G/s hızına çıkıyor. Aynı zamanda yine bant genişliği de iki kat artış gösteriyor.