Posts Tagged ‘çok izlekli’

Intel Nvidia’yı neden övüyor?

Pazartesi, 2010.06.28

Çok izleklilik (multi-threading) günümüzde en önemli konulardan birisi. Meselenin şöhret kaynağı ise son kullanıcı tarafında gittikçe yaygınlaşan büyük verilerin çabukça işlenmesi ihtiyacı ve artık kaçınılmaz bir noktaya gelen bulut bilgi işlem teknolojileri.

Elbette bulut tek başına bu tür bir talepte bulunmuyor; bununla birlikte altyapının sürekli olarak yönetilebilir kalması, bağdaşık  olmayan veri ve işlem talep yığınlarının, bir fiziksel sunucu altında çalışan  birçok farklı sanal makineye gönderdiği talepler için daha iyi bir eniyileme izlemi oluşturulabilmesi gibi doktora tezlerine konu olacak meseleler sebebiyle daha iyi çok izleklilik, daha yüksek koşut işleme (parallel processing) verimliliği ve az ve güçlü değil çok ve zayıf işlemci taleplerinin artması kaçınılmaz oluyor.

Önce bir anı…

Firma ve basın arasındaki ilişkiler genellikle halkla ilişkilerdir. Her ne kadar basın ayrı bir mecra da olsa, sevimli görünmek, diğer bütün hizmetlerden ve ürünlerden önce gelir. Eh, mümkün mertebe bu ilişkiler de korunmaya çalışılır. Elbette bu ilişkilerin her zaman böyle yürümediği insanlar da var; özellikle de sözünü sakınmayan muhabir dostlarımız toplantıda kim var kim yok bakmadan lafı ortaya koyabiliyorlar.

Değerli dostlarımızdan birisi Intel’in bir toplantısında, önemli mevkiye sahip bir yöneticisi de toplantıdayken, anlatılanlara tepki olarak ciddi bir çıkış yapıyor. Toplantının ortasında söz alarak “insanları kandırmaya ne kadar daha devam edeceksiniz” gibisinden bir cümleyle soğuk duş etkisini tatbik ediyor. Sözün devamında laf “bu kadar pahalı işlemcinin yapacağı işi çok ucuz ekran kartları zaten yapıyor” gibisinden bir noktaya geliyor ve tabii “yahu bak şimdi öyle değil aslında” gibi toparlama sözcükleri havalarda uçuştuktan sonra toplantı bitiyor; konu kapanıyor.

Kuyruğa basmak ve kendi bacağına sıkmak

Aslında durum biraz farklı. Intel tabii ki temel teknoloji ve iş anlamında Nvidia’yı övmez. Çok ciddi rakip durumundalar. Elbette arada bazı ticarî bağlar hâlâ var (yonga seti işi) ama en nihayetinde birinin ak dediğine ötekinin kara dediği paralel işleme ve süper bilgisayarların geleceği gibi konularda süren mücadele yatışmış değil. Bunun en son örneğini, Intel tarafından hazırlanan ve Nvidia’nın paralel işleme teknolojisi olan CUDA‘nın “yüz kat hızlı” iddiasını çürütmeye adanmış bir araştırma sonucunda ortaya çıkan raporda görebiliyoruz.

AMD’nin FireStream’inden çok daha önce markalaşan ve kullanıcı tabanı oluşturmaya başlayan CUDA belki OpenCL ve ComputeSharer yaygınlaştıktan sonra marka değerini muhafaza etmekte zorlanacak; ama şu ana baktığımızda her şey Nvidia açısından gayet iyi gidiyor. ATI tarafından piyasaya sürülen 5000 serisi, Nvidia’yı daha bitmemiş ve sanki alelacele yetiştirilmiş Fermi sebebiyle çok zorlasa da Nvidia’nın pazarlama cümleleri CUDA ile daha hızlı veri işleme imkânlarından ve yine CUDA’mtrak (hatta onu temel alarak çalışan) bir sistemle iş gören Physx ile şenleniyor. CUDA konusunda kuyruğuna basılan Nvidia ise genellikle halkla ilişkiler manevralarıyla kendisini koruyor. Fakat bu defa Intel’in kendi raporu Nvidia’nın paralel işleme tezlerini ve “işlemciyle uğraşacağınız kadar ekran kartıyla uğraşsanız hayatınız kurtulur” yaklaşımını doğruluyor. Intel kendi bacağına neden ve nasıl sıkıyor?

Meşhur rapora bakınca…

Intel’in raporu, başlığında yazan “Nvidia’nın bizi yüze katlama iddialarına cevap” cümlesinin ötesine geçerek ciddi performans değerlendirmeleri yapıyor. Bu raporda belirli işler için Nvidia’nın CUDA teknolojisine sahip GTX 280 grafik işlemcisi Intel’in Core i7 960 işlemcisiyle kıyaslanıyor. Buradaki bağlantıya tıklayarak ulaşabileceğiniz, 37. Uluslararası Bilgisayar Mimarisi Sempozyumu‘nda sunulan raporda Nvidia’nın işlemcilerinin süper bilgisayar işlemlerinde Intel’in işlemcilerini yüze katlamadığı kanıtlanmış durumda.

Fakat araştırmada yazılan özette (ve tabii ki raporun içinde kanıtlarıyla sunulan verilerde) çok ciddi bir sıkıntı var: GeForce GTX 280, kendisinden birkaç kat pahalı olan Core i7 960’ı, süper bilgisayar mimarisine benzetilen test ortamında en fazla 14’e, ortalamada da 2,5’e katlıyor.

Özetle…

Intel CUDA ve benzeri, paralel akış işlemcilerini kullanan sistemlerin çalışma mantığı ve teknolojisini kabullenmiş durumda. Sadece henüz kendilerini yüze veya bine katlamadıklarını kanıtlayabiliyorlar. Açıkçası paralel işlemci yoğunluğu, ölçeklenebilirlik ve yükseltilebilirlik gibi kavramlara hiç girmeden (gerekiyorsa söyleyin gireyim) akış işlemcilerinin (stream processors) süper bilgisayarlarda daha fazla yer alması ve daha fazla yayılması konusunda engel barındırmayan bir teknoloji. Yazılımcılar açısından kullanımı biraz daha kolay hale getirildiğinde ve platformlar arasındaki uyumluluk artırıldığında çok pahalı işlemcilere para vermek kimse istemeyebilir. Belki de AMD’nin şirket sloganını bile “The future is fusion” yapmasının hikmeti budur; belki grafik işlemcisi ve klasik merkezî işlemciyi bir araya koymaktan fazlasını bile yapacaklar. Bekleyip göreceğiz.

Bu kadar çok çekirdek lazım mı?

Çarşamba, 2009.10.28

Bilgisayarınızdaki çekirdek sayısını artırmak her zaman, özellikle de bir son kullanıcıysanız çok fazla işinize yarıyor mu? Bu yazıda çekirdek meselesine biraz değinmek istiyorum.

tilera_islemci_on_arka

Tilera Tile Gx isimli işlemcisiyle 100 çekirdeğe ulaştı.

Her ne kadar ne kadar çekirdek sayısı üzerine pazarlama fetişizmi geliştirilecek kadar önemli bir rakam da olsa kullanıcıların fark etmediği veya kasıtlı olarak gözden uzak tuttuğu bir gerçek var: Ne yazık ki günümüzde yazılımların çoğunluğu çok izlekli (multi-threading) yapıya sahip değil. Yani, kaç tane bağımsız yuvada kaç çekirdekli işlemciniz olursa olsun, yazılım sadece bütün bu donanımsal kaynaktan sadece tek bir çekirdeği kullanabiliyor.

Programcıların derdi

Açık konuşalım: Bir uygulamayı izleklere bölmek çok zor bir iş. Zamanında Intel desteğiyle Boğaziçi Üniversitesi‘nde açılan ve bu tür uygulamalar geliştirilmesi için tahsis edilen laboratuarda öğretim görevlileriyle konuşurken onların bile “bir gün birisi çıksa ve 3 GHz değil 10 GHz işlemci ürettik, tek yoldan daha fazla hız için uğraşacağız ve artık böyle ilerlenecek dese, kimse bu işlerle uğraşmaz” dediğini dün gibi hatırlıyorum. Dolayısıyla mimarilere ve çekirdek sayılarına göre, kaynak yönetimini (önbellek tutarlılıklarının (cache coherency) sağlanması, çekirdekler arası iletişim ve iş bölümü) sistem seviyesine bırakıp sadece işi yapan kodu kendisini her yere uyarlayabilen ve verimlilik kaybı yaşamadan çalışabilen kod yazmak zor iş.

crysis_nanoluadam

Yerli kardeşlerin zoraki yalanı

Intel’in de desteklediği Crytek’in Crysis oyunu bütün dünyada çok büyük ilgi gördü. Tabii “Yahu bu adamlar Türk işte” diyerek mesnetsiz bir sahiplenme duygusuyla sarıldığımız Crytek’in sahibi Türk kökenli Yerli kardeşler, İstanbul’daki bir toplantıda “Peki çok çekirdeğin oyun performansına bir etkisi var mı” sorularına, var var diyerek cevap verdiler. Tabii, nasıl var çok da açıklayamadılar. Burada iki nokta vardı ve toplantıda, donanımdan anlayan herkes bunları çok iyi biliyordu:

  • Crysis, işlemci ve bellek performansından etkilense de oyun içindeki performans anlamında ekran kartına daha çok bağımlı bir oyun. Bunu en önemli iş ortakları olan Nvidia kadar iyi biliyorlar.
  • Crysis oyununun motoru çok izlekli bir yapıya sahip değil. Yani dört çekirdekli bir işlemciniz varsa crysis.exe en fazla %25 işlemci yükü yaratabilecek ve tek çekirdeğin performansıyla sınırlı kalacak. En azından bu konuşmanın geçtiği sıralarda durum buydu.

Peki Yerli kardeşler durumu nasıl topladı? Saniyede gösterilen kare sayısını sabit tutarak performansa katkı yapıyormuş. Yani zaten çok çekirdeğe para vermemizin sebebi, çalışan ana yazılımların kendilerine bir çekirdeği ayırabilmesi, geri kalan arka plan işlerinin de boştaki çekirdek veya çekirdeklere aktarılması sayesinde ana yazılımın sorunsuz biçimde ve performans kaybına uğramadan çalışması değil mi?

Uzman uygulamalarla hayat bulan çekirdekler

Kısıtlı miktarda da olsa bazı ev kullanıcısı ve uzmanlara yönelik uygulamalarda çok çekirdek destekli uygulamalar var. Bu çok çekirdekli uygulamalar bazı noktalarda yeterince verimli olamayabiliyor. Örneğin Nero Move it ilk çıktığında sergilediği düşük çok çekirdek kullanım yeteneği sebebiyle bende hayal kırıklığı yaşatmıştı.

nero_move_it_logowork

We like to… move it!

Adobe gibi sayısal içerik üretimi konusunda uzman bir şirket bile bu konuda muzdarip. En son montaj masasına oturduğum zaman, ilginç şekilde After Effects’in çoklu izlek desteğinin olduğunu, fakat çatır çutur çıkış almanız gereken ve aslında daha çok kullanılan bir üretim yazılımı olan Premiere’de ise bu desteğin bulunmadığını görmüştüm. Dolayısıyla gidilecek daha çok yol var.

Özel işlemciler ve ekran kartları

Peki gelelim, yazının girişinde gördüğünüz resmin sebebine. Tilera isimli şirket, 100 tane çekirdeği bir araya getirdiği bir işlemciden bahsediyor. Bu işlemcileri özel yapan şey, ekran kartlarındaki akış mantığını benimsemiş olmaları. Peki, bunlar bizim ne işimize yarıyor? Aslında, nasıl sorusu daha fazla anlam ifade ediyor.

opengl_logo350Ekran kartlarını OpenGL ve DirectX gibi API’lar için
birer hızlandırıcı olarak düşünebiliriz.

Temel işletim sistemi (işlem denetimi ve sürücülerin bileşenlere hükmetmesi diye özetleyelim) haricinde (ve aslında bunların bazıları da dahil) her bir iş çeşitli yazılımsal katmanların belirli nesnelere yaptırmaları ve sisteme geri dönmesi olarak tanımlanabilir. Biz bunlara genellikle API, yani yazılım programlama arayüzü diyoruz. Örneğin DirectX ve openGL arayüzleri, ekran kartına grafik kökenli işleri yaptırıyorlar. Ekran kartı dediğimiz şey aslında işletim sistemlerindeki programlama arayüzleri için birer hızlandırıcı gibi çalışıyor. Bu mantıkla herhangi bir API için herhangi bir hızlandırıcı yazabilirsiniz. Bunun oyuncuların en çok bileceği örnek vermek gerekirse, PhysX diyebiliriz. Önceleri kendi hızlandırıcısına sahip olan PhysX şimdilerde CUDA teknolojisinden faydalanarak Nvidia ekran kartları üzerinden çalışıyor.

Toshiba Quad Core HD ve Tilera

Toshiba’nın, Quad Core HD dediği ama aslında Sony, Toshiba ve IBM’in ortaklara üretimi olan ve Playstation 3’te de kullanılan Cell işlemcisinin bir türevi olan sistem, benzer biçimde dizüstü bilgisayarların video sıkıştırma ve açma yeteneklerini değiştiren bir işlemci. Bu işlemci kendisine özel yazılımlardan faydalanarak bu işlemleri, sistemdeki işlemciye yük bindirmeden yapabiliyor.

products_TILEmpower_diagram

Tilera TILEPro64 kullanılan bir bağımsız sistemin yapı planı (ürün için tıklayın)

Tilera’nın durumu biraz daha farklı. Kendisine has mimarisiyle çalışan Tilera’nın Tile serisi işlemcileri, bağımsız olarak kullanılabiliyor. Bu şekilde çok fazla akışa ihtiyaç duyduğunuzda Tilera’nın çözümleri sizi kendinize getirebilir. Tabii altyapı konusunda duruma özel sistemler kurmanız gerekebilecektir. Elbette temelde bu işin CUDA veya ATI Stream’den çok az farkı var gibi görünüyor ama Tilera’nın çözümü kendisine has bağımsız sistemlerde de kullanılabildiği için daha işe yarar bir çözüm.

Java yongaları gelecek mi? 🙂

Elbette burada BYTE’ın yanılmıyorsam 1996’da kullandığı bir kapaktaki konuyu paylaşmazsam olmaz. Java dili, sanal makine üzerine çalışan ve bu sebeple her türlü platformda neredeyse hiç müdahale gerektirmeden çalışabilen bir sistem. Bununla ilgili hazırlanan kapak konusu muhtemel Java yongalarını konu alıyordu. Yani Java uygulamalarını kendisi işleyerek sistemdeki yükünü azaltacak bir şeylerden bahsediyoruz. Dile kolay 13 sene geçmiş, bilgisayarlarda adanmış Java yongaları yok fakat en azından bilişimciler uygulamalara yönelik hızlandırıcıları hızla keşfediyor ve bunların önemini daha iyi anlıyor.