Ticarette OpenCL - sayfa 5

 

6. Süperskalar ve VLIW



6. Süperskalar ve VLIW

Video, işlemcilerin performansı artırmak için ikili yönergeler arasındaki paralelliği algılamak ve çıkarmak için süper skalar yürütmeyi nasıl kullandığını araştırıyor. Talimatların aynı anda çalışabileceği, örneğin aralarında bağımlılık olmaması gibi durumların belirlenmesinde kontrol mantığının önemini tartışır. Video ayrıca iki işlemci tasarımı örneğini, süper skalar ve VLIW'yi tanıtıyor; ikincisi, bağımlılıkları tespit etme sorumluluğunu derleyicilere kaydırıyor ve paralel olarak yürütülecek uzun talimat sözcükleri üretiyor. VLIW çalışma zamanı denetimini azaltırken, uzun komut sözcüğündeki kullanılmayan noktalar yine de yürütme biriminde israfa neden olabilir.

  • 00:00:00 Bu bölümde, video işlemcilerin ikili yönergelere sahip programlarda genel performansı iyileştirmek için süper skalar yürütmeyi nasıl kullandığını açıklar. Programcılar, programlarını doğru bir şekilde yürütmek için iyi tasarlanmış işlemcilere güvenirler ve bu nedenle, performansı artırmak için talimatlardaki paralelliği belirleme ve ayıklama sorumluluğu işlemciye düşer. Video, talimatlar arasında bir bağımlılık grafiği örneği sağlar ve belirli talimatlar arasında bağımlılıklar olsa da işlemciler, aralarındaki bağımlılık eksikliği nedeniyle diğerlerini aynı anda çalıştırabilir. Bu örnekleri tanımlamak ve performansı en üst düzeye çıkarmak için talimatları mümkün olan en verimli şekilde yürütmek, işlemci içindeki kontrol mantığının işidir.

  • 00:05:00 Bu bölümde video, işlemcilerdeki iki mimari tasarım örneğini tartışıyor - süper skalar ve VLIW. İlk örnek, işlemcinin talimatlar arasındaki bağımlılıkları nasıl algılayabildiğini ve zaman kazanmak için bunları buna göre programlayabildiğini gösterir. Video ayrıca şube talimatları için spekülatif uygulama olasılığını da vurgulamaktadır. İkinci örnek, bağımlılıkları tespit etme sorumluluğunu derleyicilere kaydıran VLIW tasarımını ele almaktadır. Derleyici, işlemci tasarımını daha basit hale getirerek, paralel olarak yürütülebilen birden fazla talimat içeren uzun talimat sözcükleri üretir.

  • 00:10:00 Bu bölümde çok uzun komut kelimesi (VLIW) kavramı açıklanmaktadır. Bu, birden fazla talimatın birlikte getirilen ve kodu çözülen tek bir uzun talimat kelimesinde paketlenmesine izin verir. VLIW, program çalıştırılmadan önce yönergeleri aynı anda yürütme fırsatlarını keşfetme sorumluluğunu derleyicilere kaydırır ve çalışma zamanı denetimi ihtiyacını azaltır. Ancak, uzun komut kelimesinde boş noktalar varsa, yürütme birimi yine de bir miktar israf yaşayabilir.
Superscalar and VLIW
Superscalar and VLIW
  • 2020.05.22
  • www.youtube.com
This video introduces two types of processor architecture: Superscalar and Very Long Instruction Word (VLIW)
 

7. SIMD ve Donanım Çoklu Kullanım



7. SIMD ve Donanım Çoklu Kullanım

Video, paralellik zorluklarını ele almanın iki yolunu açıklıyor: Tek Yönerge, Çoklu Veri (SIMD) ve donanım çoklu kullanım (SMT). SIMD, donanım yönergelerinin birden çok veri öğesi üzerinde paralel olarak yürütülmesine izin vererek programlamayı ve kod çözme mantığını basitleştirir. SMT, bağımsız talimat akışlarını aynı anda çalıştırarak, ek kayıt dosyaları ve dikkatli önbellek paylaşımı talep ederek iş parçacığı düzeyinde paralellikten yararlanır. Videoda ayrıca, iş parçacıklarının sırayla işlemcinin veri yolunu sırayla işgal ettiği, gecikmeyi azalttığı ve birden çok iş parçacığının aynı anda bilgi işlem birimlerine ve bellek sistemlerine erişmesine izin verdiği, zaman dilimli iş parçacığı planlamasının uygulanması tartışılıyor. Sonuç olarak, işlemci gerektiği kadar iş parçacığını barındırabilir, ancak performans kazancı tek iş parçacıklı bir işlemcide o kadar önemli olmayabilir.

  • 00:00:00 Bu bölümde, çoklu veri öğeleri üzerinde işlemlerin paralel olarak yürütülmesi için donanım talimatlarının kullanılabileceği Tek Komutlu Çoklu Veri (SIMD) kavramı açıklanmaktadır. SIMD, verilerin her öğesine aynı işlemi uygulamak için yalnızca bir talimatın programlanması gerektiğinden, programlama ve kod çözme mantığını basitleştirir. Çözülmekte olan problem önemli ölçüde veri paralelliği içeriyorsa, SIMD kullanımı faydalıdır, aksi takdirde verimli bir çözüm olmayabilir. Ek olarak, sanal işlemleri gerçekleştirmek için belleğin farklı bölümlerine dağılmış veriler üzerinde vektör talimatlarının kullanılabileceği SIMD ve vektör hesaplamasının benzerliği açıklanmaktadır.

  • 00:05:00 Bu bölümde video, donanımsal çoklu iş parçacığı veya eş zamanlı çoklu iş parçacığı oluşturmanın (SMT) iş parçacığı düzeyinde paralellikten yararlanmak için nasıl kullanılabileceğini açıklar. Aynı işlemciye birden fazla program veya iş parçacığı koyarak, birbirinden bağımsızlarsa, farklı talimat akışları aynı anda çalışabilir. Donanım çoklu iş parçacığı, talimatların iki bağımsız iş parçacığından kolayca çıkarılmasına izin verdiği için büyük makineler ve tek CPU'lar için yararlı olabilir. Ancak bu, ek kayıt dosyaları ve önbelleklerin farklı iş parçacıkları arasında nasıl paylaşıldığının dikkatli bir şekilde değerlendirilmesini gerektirir.

  • 00:10:00 Videonun bu bölümünde sunum yapan kişi, zaman dilimli iş parçacığı planlaması uygulayarak aritmetik mantık biriminin (ALU) nasıl meşgul tutulacağını tartışır. Bu yöntem, iş parçacıklarının sırayla işlemcinin veri yolunu işgal etmesine izin verir ve bu da daha fazla iş parçacığı programlayarak gecikmeyi önemli ölçüde azaltır. Durdurulan bir iş parçacığını beklerken bir sonraki talimatı yürüterek, bu yöntem bilgi işlem birimlerinin ve bellek sistemlerinin aynı anda birden çok iş parçacığı tarafından kullanılmasına izin verir. Sonuç olarak, zaman kaybı olmaz ve işlemci gerektiği kadar iş parçacığı barındırabilir. Ancak, tek iş parçacıklı bir işlemcide tek bir iş parçacığının performansı, çok iş parçacıklı bir işlemcideki kadar iyileştirilemeyebilir.
SIMD and Hardware Multithreading
SIMD and Hardware Multithreading
  • 2020.05.23
  • www.youtube.com
This video introduces SIMD, Vector Processing and Hardware Multithreading
 

8. Çok Çekirdekli İşlemci Mimarisi



8. Çok Çekirdekli İşlemci Mimarisi

Bu video, çok çekirdekli işlemcilerin mimarisini ve her çekirdeğin kendi işlem hattına ve veri önbelleğine sahipken bağımsız olarak çalışması ve bazı bileşenleri paylaşması gibi avantajları açıklamaktadır. Mikroişlemci ve bellek erişimi arasındaki hız boşluğunu doldurmada önbellek hiyerarşisinin önemi, zamansal ve uzamsal konumlardan yararlanan birden çok önbellek düzeyi kullanılarak vurgulanır. Video ayrıca maliyeti ve form faktörünü azaltmak için farklı işlev birimlerini ve arabirimleri tek bir yongada birleştiren çip üzerinde sistem tasarımına da değiniyor. Genel olarak, video, çok çekirdekli işlemcilerin tasarımında yer alan karmaşıklık ve değiş tokuşlara yararlı bir giriş sağlar.

  • 00:00:00 Bu bölümde, çok çekirdekli işlemcileri ve bunların tek çekirdekli işlemcilere göre avantajlarını öğreniyoruz. Çok çekirdekli işlemciler, bağımsız olarak çalışan ve yönerge getirme, kod çözme ve kayan nokta zamanlayıcılar gibi bazı bileşenleri paylaşan birden çok çekirdeğe sahiptir. Ancak, her çekirdeğin kendi ardışık düzeni ve kendi düzey 1 veri önbelleği vardır. Çok çekirdekli işlemciler, her bir önbellekte saklanan verilerin ana bellekteki verilerle tutarlı olmasını sağlamak için önbellek tutarlılık protokolleri gerektirir. Çip üzerinde sistem, maliyeti ve form faktörünü azaltmak için birden fazla öğenin aynı çip üzerinde tek bir cihazda birleştirildiği başka bir tasarım seçeneğidir. Bir gemi dışı ara bağlantısı aracılığıyla çipin geri kalanına bağlı birçok farklı özel işlev birimine ve arabirime sahiptir.

  • 00:05:00 Bu bölümde konuşmacı, çok çekirdekli işlemci mimarisinde önbellek hiyerarşisi kavramını açıklıyor. Önbellek kullanımının ana nedeni, farklı frekanslarda çalışan ve farklı depolama yeteneklerine sahip olan mikroişlemci ile bellek erişimi arasındaki hız boşluğunu kapatmaktır. Seviye 1, seviye 2 ve seviye 3 önbellekler boşluğu kapatmak için kullanılır ve kısa bir süre içinde az sayıda talimata veya veriye erişmenin veya sırasıyla yakındaki konumlara erişmenin zamansal ve mekansal konumundan yararlanırlar. Önbellekler, bellek seviyeleri arasında hareket ettirilen ve işlemcinin zamansal ve uzamsal konumdan yararlanmasına izin veren bloklar kullanılarak düzenlenir.
Multicore Processor Architecture
Multicore Processor Architecture
  • 2020.05.23
  • www.youtube.com
A brief introduction of multicore processor architecture
 

9. GPU Mimarisi



9. GPU Mimarisi

Hızlandırılmış işlem birimi (APU), tümü aynı çip üzerinde bulunan düşük güçlü çekirdeklere ve GPU birimlerine sahip heterojen bir işlemcidir. GPU'lar, talimatlarla programlanabilen çok sayıda gölgelendirici çekirdeğine sahiptir ve önbellekleri genellikle tutarlı değildir, bu da tasarımlarını daha basit hale getirir ve birçok çekirdek aynı anda çalışırken çok daha yüksek performans sağlar. AMD ve Nvidia, aynı anda birden çok veri parçası üzerinde işlemi desteklemek için küçük bilgi işlem birimleri kullanır ve hızlı içerik değiştirmeyi desteklemek için büyük kayıt dosyalarına sahiptir. Konuşmacı ayrıca GPU mimarisinde kontrol akışının nasıl yönetileceğini, özellikle de geçersiz sonuçlara yol açabilecek dal yönergeleriyle uğraşırken açıklar, ancak işlemci satıcıları donanımda zaten kontrol mantığı sağladığından programcıların bu sorunlar hakkında fazla endişelenmesine gerek yoktur. Genel olarak, GPU'lar modern pazarda, özellikle yapay zeka ve makine öğrenimi alanında karmaşık iş yükleri için popüler işlemcilerdir.

  • 00:00:00 Bu bölümde, sistemin genel amaçlı bilgi işlemi, yönetimi ve konfigürasyonu için kullanılan düşük güçlü çekirdeklerden oluşan tipik bir heterojen işlemci olan hızlandırılmış işlem birimi (APU) ve GPU birimlerini öğreniyoruz. hepsi aynı çipte. APU, iki önbellek düzeyine sahip tipik bir x86 çekirdeğine sahipken, GPU çekirdekleri farklıdır ve x86 değildir, daha düşük yerel veri depolama özel bellek olarak kabul edilir. Bellek sahipliği, yerel bellekten daha küçük ve genel bellekten çok daha küçük özel bellekle, belleğin konumlarını, erişilebilirliğini ve boyutunu gösteren bir diyagramda görülebilir. Intel veya AMD'nin mevcut dizüstü bilgisayar işlemcileri tipik olarak az sayıda genel amaçlı çekirdeğe, tümleşik belleğe ve bir çip üzerinde grafik işleme birimine sahiptir.

  • 00:05:00 Bu bölümde, GPU mimarisi ve bunun yapay zeka ve makine öğrenimi alanında nasıl kullanıldığını öğreniyoruz. GPU'lar, gölgelendirici çekirdekleri adı verilen ve talimatlarla programlanabilen çok sayıda işlemciye sahiptir. Genel amaçlı bir işlemcinin bellek alt sisteminden farklı olan yüksek hızlı GPU belleğine erişebilirler ve önbellekleri genellikle tutarlı değildir. GPU'lar, tutarlılığı sağlamak için önbellek tutarlılık protokolünü kullanmaz; bu, tasarımı daha basit hale getirir ve birçok çekirdek aynı anda çalışırken çok daha yüksek performans sağlar. Genel olarak, GPU'lar modern pazardaki karmaşık iş yükleri için popüler bir işlemcidir.

  • 00:10:00 Bu bölümde, AMD ve Nvidia'nın aynı anda birden çok veri parçası üzerinde çalışmayı desteklemek için cmd donanımına sahip küçük bilgi işlem birimlerini nasıl kullandığını öğreniyoruz. Her iki satıcının da 16 geniş cmd'si vardır ve iş öğelerini daha büyük gruplar halinde gruplandırabilir ve bunları çip ve yapılandırma parametrelerine bağlı olarak farklı gruplara eşleyebilir. Ayrıca, hızlı içerik değiştirmeyi desteklemek için büyük kayıt dosyalarına sahipler ve her iki sağlayıcı da otomatik birinci seviye önbellek ve ilgili özel belleklerinde hızlı işlemleri desteklemek için yüksek bant genişliğiyle büyük ölçüde desteklenen kullanıcı tarafından yönetilen karalama defteri kombinasyonuna sahip. Son olarak, kontrol akışına ve birden fazla veriyi tek bir komutla yürütme kavramına ve dal komutlarının geçersiz veriler üzerinde gerçekleştirilen hesaplama miktarını en aza indirmenin bir yolunu gerektirerek yürütme yollarında nasıl bazı sapmalara neden olduğuna kısaca değineceğiz.

  • 00:15:00 Bu bölümde, konuşmacı GPU mimarisinde kontrol akışının nasıl yönetileceğini, özellikle de geçersiz sonuçlara yol açabilecek branş komutlarıyla ilgilenirken açıklamaktadır. Bu sorunu çözmek için, performansa zarar vermesine rağmen, bazı hesaplamaları atmak için cmd şeritleri maskelenebilir. Tek talimat çoklu iş parçacığı (SIMT) teknolojisini kullanırken ele almamız gereken bir diğer konu, iyi yönetilmediği takdirde hesaplama döngülerini boşa harcayabilecek yazılım iş parçacıkları arasındaki farklılıktır. Neyse ki, OpenCL programcılarının bu sorunlar hakkında fazla endişelenmesine gerek yok çünkü işlemci satıcıları donanımda zaten kontrol mantığı sağladı.
GPU Architecture
GPU Architecture
  • 2020.05.23
  • www.youtube.com
This video introduces the internals of a Graphics Processing Unit (GPU), which can be an accelerator for general purpose computing, in addition to graphics p...
 

10. FPGA Dahilileri


10. FPGA Dahilileri

Bu video, sahada programlanabilir kapı dizilerinin (FPGA'ler) mimarisini ve özelliklerini tartışıyor. FPGA'lar, yeni işlevsellikleri barındıracak şekilde yeniden programlanmalarına ve büyük miktarda girdi ve çıktı (I/O'lar) yoluyla verilere doğrudan erişime sahip olmalarına izin veren programlanabilir mantığa sahiptir. FPGA'lardaki arama tablosu yapısı, mantık fonksiyonlarını tanımlamak için programlanabilen çok sayıda çoklayıcı seviyesinden oluşur. FPGA'lar sayaçlar, kaydırma kayıtları, durum makineleri ve DSP işlevleri için kullanılabilen programlanabilir kayıtlar kullanır. Çip üzerindeki her dikdörtgen blok, her LAB'nin on Uyarlanabilir Mantık Modülü (ALM) içerdiği bir Mantık Dizisi Bloğunu (LAB) temsil eder. FPGA'lar, tüketici cihazları, otomotiv, tıbbi enstrümantasyon ve iletişim ve yayın gibi sektörlerde kullanılmaktadır.

  • 00:00:00 Bu bölümde, yeni işlevselliklere uyum sağlamak için yeniden programlanabilen programlanabilir mantıkları ve büyük miktarda G/Ç aracılığıyla verilere doğrudan erişimleri dahil olmak üzere FPGA'ların temelleri tanıtılmaktadır. FPGA'ların avantajları, bellek bileşenlerine ve yardımcı işlemcilere uygun bağlantıları, donanımı değiştirmeye gerek kalmadan değiştirilebilir işlevleri ve tüketici cihazları, otomotiv, tıbbi enstrümantasyon ve iletişim ve yayın gibi sektörlerde her yerde bulunmalarıdır. FPGA'ların mimarisi, mantık fonksiyonlarını tanımlamak için programlanabilen arama tablosunu ve sonraki bölümlerde tartışılacak olan taşıma yazmaçları ve uyarlanabilir mantık modülleri gibi diğer önemli parçaları içerir.

  • 00:05:00 Videonun bu bölümünde sunum yapan kişi, FPGA'larda seçilebilir girişlere sahip çoklayıcıların birden çok seviyesinden oluşan bir arama tablosunun yapısını açıklıyor. Arama tablosunun girdileri, isteğe bağlı bir birleşimsel mantık işlevi oluşturmak için kullanılabilir. Video daha sonra sayaçlar, kaydırma yazmaçları, durum makineleri ve DSP işlevleri için kullanılan FPGA'lardaki depolama öğeleri olan programlanabilir yazmaçları tartışır. Bu kayıtlar, tipik olarak küresel bir saat tarafından sürülen bir saat sinyaline sahiptir ve arama tablosuna geri besleme yapabilir. Ek olarak video, mantık öğelerinin ve uyarlanabilir mantık modüllerinin zincir sinyallerle nasıl bağlandığını açıklar.
    ve taşıma bitleri ve kayıtlara girişin önceki mantık öğelerinden nasıl gelebileceği.

  • 00:10:00 Bu bölümde, bir FPGA yongasının içindeki mantık öğelerini nasıl düzenleyeceğimizi öğreniyoruz. Çip üzerindeki her dikdörtgen blok, her LAB'nin on Uyarlanabilir Mantık Modülü (ALM) içerdiği bir Mantık Dizisi Bloğunu (LAB) temsil eder. Her bir ALM, aritmetik birimler, yerel ara bağlantı ve kayıt bağlantılarının yanı sıra özel kaynaklar ve girdilerin esnek organizasyonu ve belirli çıktı üretimi için uyarlanabilir bir arama tablosundan oluşur. Ayrıca, belirli LAB'leri bağlayabilen satır ve sütun ara bağlantılarımız ve cihaz yoğunluğuna bağlı olarak doğrusal olarak yönlendirme ölçeklerimiz var. Son olarak, tek veya çift bağlantı noktalı RAM, salt okunur bellek veya eMLAB'ler adı verilen küçük bellek yapıları dilimleri gibi farklı bellek yapılarını destekleyen gömülü bellek bloklarımız var.

  • 00:15:00 Bu bölümde, dijital sinyal işleme (DSP) blokları ve giriş/çıkış (IO) bileşenleri dahil olmak üzere FPGA'ların farklı işlevlerini öğreniyoruz. DSP blokları, FFT dönüşümleri ve yüksek performanslı çarpma ve toplama işlemleri gibi sinyal işleme işlevlerini uygulamak için kullanışlıdır. FPGA'lar ayrıca çeşitli IO bileşenleriyle iletişim kurarak çıktı etkinleştirme, kontrol etme ve sonlandırma sağlar. IO öğesi mantığı, çift yönlü pimler ve çıkış etkinleştirme sinyali kontrolü içerir ve çıkış yolu, saat sinyali aracılığıyla A ve B değerleri üretir. Öte yandan, çıkış kontrolü devre dışı bırakılırsa, giriş sinyalleri giriş yazmacından geçer.

  • 00:20:00 FPGA dahilileriyle ilgili bu bölümde, FPGA işlemlerini desteklemek için atanmış giriş saat pimlerinin kullanımıyla birlikte saat sinyallerinin önemi vurgulanır. Karmaşık sinyal koşullandırma ve işlemeye ihtiyaç duymadan FPGA'larda daha karmaşık sinyal protokollerini uygulamak için yararlı olan yüksek hızlı alıcı-vericiler de tartışılmaktadır. Giriş ve çıkış sinyallerinin bağlantısını kontrol eden programlanabilir bitleri yapılandırmak için SRAM hücre teknolojisi ve arama tablolarının kullanımı ile birlikte, cihaz genelinde kullanım için farklı saat sinyalleri üretmek üzere PLL'lerin kullanımı da açıklanmaktadır. Video ayrıca, programlama dizilerini kontrol etmek için harici W prom, Cpl D veya bir CPU kullanarak FPGA'ları programlamak için kullanılan yöntemleri ve daha fazla teşhis ve hata ayıklama için özel bir Donanım JTAG bağlantısının kullanımını kapsar.

  • 00:25:00 Bu bölümde, Sahada Programlanabilir Kapı Dizisinin (FPGA) tasarımı ve özellikleri ele alınmaktadır. Bir FPGA'daki alanın çoğunluğu, satır ve sütun ara bağlantıları aracılığıyla bağlanabilen mantıksal dizi bloklarıdır. Diğer bloklar arasında PR, alıcı-vericiler ve farklı bellek bileşenlerine bağlanabilen bir bellek denetleyicisi bulunur. Bir PJ alanı 10g X FPGA, 1 milyon mantık öğesi, 1,7 milyon kayıt, her biri 22 bitlik 54.000 bellek bloğu, 1.518 DSP bloğu, saniyede 367,4 gigabit alıcı-verici, iki sabit PCIe bloğu, 492 genel IO pimi ve 12 bellek denetleyicisi. FPGA'ların avantajı, karmaşık işlevler oluşturmak için yüksek yoğunluk, birden çok işlevin entegrasyonu, farklı IO standartlarına ve özelliklerine erişim ve tek bir çipte verilere doğrudan erişimdir.
FPGA Internals
FPGA Internals
  • 2020.04.18
  • www.youtube.com
The internal architecture of FPGA
 

11. Bir GPU Sisteminde OpenCL Belleği



11. Bir GPU Sisteminde OpenCL Belleği

Eğitmen, OpenCL belleğinin AMD GPU'ya eşlenmesini ve bir GPU sistemindeki farklı bellek katmanlarını açıklar. Bilgi işlem aygıtında, çoklu SIMD şeritli çekirdekler, özel kayıt dosyaları ve özel bellek işlevi gören işlem birimlerine yönelik yönergeleri yöneten bir komut işlemcisi bulunur. Çekirdek programı, mevcut tüm çekirdeklerin kullanılmasını sağlayan ve bellek erişim gecikmesini azaltan otonom işler sağlamayı amaçlar. Konuşmacı ayrıca, hesaplama ve bellek ekseni hareketi arasındaki orana atıfta bulunan aritmetik yoğunluk kavramından ve GPU'nun bellek bant genişliğinin sınırlayıcı faktör olmasını önlemek için ne kadar yüksek olması gerektiğinden bahseder.

  • 00:00:00 Bu bölümde, konuşmacı, özellikle AMD GPU'ya odaklanarak, farklı işlemcilerin donanım mimarisiyle ilgili olarak OpenCL'yi tartışıyor. Diyagram, küresel belleği, sabit belleği ve yerel belleği gösterir; soldaki çekirdek, bir veri paralel programı tasarlanırken kullanılan OpenCL çekirdeğini temsil eder. Her çalışma grubu, yerel bellek çalışma grubu için yerel olacak ve işlemci içindeki yürütme birimleriyle paylaşılacak şekilde verilere dayalı olarak hesaplamanın bir alt kümesini gerçekleştirir. Çalışma grubu içindeki iş öğeleri, her birinin kendi veri setine sahip olduğu gerçek hesaplamadır.

  • 00:05:00 Bu bölümde eğitmen, OpenCL belleğin AMD GPU'ya nasıl eşlendiğini ve bir GPU sistemindeki farklı bellek düzeylerini tartışır. Bilgi işlem aygıtında, 1. düzey önbelleğe sahip olan ve bazı 2. düzey önbelleği paylaşan ve genel belleğe bağlı olan bilgi işlem birimlerine yönergeler planlayan bir komut işlemcisi vardır. Bilgisayar birimi, birden çok SIMD hattı ve özel belleği oluşturan GPR adı verilen özel kayıt dosyaları ile bir çekirdek işlevi görür. Çekirdek programının, mevcut tüm çekirdekleri meşgul etmek için mümkün olduğu kadar çok sayıda olması gereken bağımsız iş parçaları sağlaması beklenir ve bu parçalar, bellek erişim gecikmesini en aza indirmek için donanım içeriğinin değiştirilmesine izin vermelidir. Donanımı verimli bir şekilde kullanmak için çekirdeğin de yüksek aritmetik yoğunluğa sahip olması gerekir.

  • 00:10:00 Bu bölümde konuşmacı, esas olarak hesaplama ve hafıza ekseni hareketi arasındaki oran olan romantik yoğunluk kavramını tartışıyor. Amaç, bellek bant genişliği ile sınırlandırılmaktan kaçınmak için bellek erişimlerine mümkün olduğunca yüksek matematik işlemleri yapmaktır.
OpenCL Memory on a GPU System
OpenCL Memory on a GPU System
  • 2020.05.23
  • www.youtube.com
This lecture introduces how OpenCL memory model is mapped to a GPU based system.
 

12. OpenCL Örneği: Matris Çarpımı



12. OpenCL Örneği: Matris Çarpımı

Bu video, OpenCL programlamanın bir örneği olarak matris çarpımını tanıtır. Konuşmacı, matris satırlarını ve sütunlarını kat edebilen bağımsız döngüler oluşturmak için C kodunun nasıl yazıldığını gösterir. İş öğeleri tartışılır ve bunların OpenCL'deki matris öğeleriyle nasıl eşlenebileceği tartışılır. Çekirdek işlevi argümanlarını, nasıl adlandırıldığını ve gövdesini kapsayan bir çekirdek uygulaması açıklanır. Konuşmacı, dizinleri hesaplamak için satır ve dizin numaralarını kullanarak giriş matrisinin tek boyutlu bir dizide nasıl depolandığını gösterir. Son olarak, çekirdek işlevi çıktı matrisindeki öğeyi üretmek için iç çarpımı hesaplar. Matrisleri fiziksel bellekte depolamaya yönelik doğrusal yaklaşım vurgulanmaktadır.

  • 00:00:00 Bu bölümde, OpenCL programlama örneği olarak matris çarpımını öğreniyoruz. Matris çarpımı, birçok farklı uygulamada kullanılmış olan klasik bir güç hesaplama örneğidir. Uygulama, A matrisinin sütun sayısının B matrisinin satır sayısına eşit olması şartıyla iç içe döngüler gerektirir. Bunun nedeni, C matrisindeki sonuçtaki her öğenin, A'nın bir satır vektörünün iç çarpımı olmasıdır. B'nin bir sütun vektörü ile. C kodunun işlemi gerçekleştirmek için nasıl yazıldığını ve döngülerin nasıl bağımsız çalıştığını görüyoruz, sonuçta ortaya çıkan C matrisinin her satırından veya sütunundan rastgele bir şekilde geçmemize izin veriyor.

  • 00:05:00 Bu bölümde iş kalemleri kavramı tanıtılmakta ve iş kalemlerinin OpenCL'de matris elemanlara nasıl eşlenebileceği açıklanmaktadır. Bağımsız olarak hesaplanacak bir matrisin her bir çıktı öğesi için iş öğeleri oluşturulabilir ve bu nedenle, iki boyutlu aralık iş öğelerine eşlenebilirler. OpenCL'de matris çarpımı için çekirdek uygulaması da tartışılmakta, burada çekirdek işlevi için argümanlar ve bunun ana işlevden nasıl çağrılacağı açıklanmakta ve çekirdek işlevinin gövdesi sunulmaktadır. Çekirdek işlevi, çıktı matrisinin her bir öğesini hesaplamak için bir satır vektörünün ve bir sütun vektörünün iç çarpımını hesaplar.

  • 00:10:00 Bu bölümde konuşmacı, OpenCL programlama dilini kullanarak matrisleri çarpma işlemini açıklıyor. Ana fikir, iç çarpım işlemini gerçekleştirmek için doğru öğeyi bulmak üzere doğru dizini hesaplamak için satır numarasını ve dizin numarasını kullanarak iki boyutlu girdi matrisini tek boyutlu bir dizide depolamaktır. Çekirdek işlevi, toplam değişkenini 0 ile başlatır ve iç çarpımı hesaplamak için A'nın satır vektörü ve B'nin sütun vektörü boyunca yinelenir, sonuçta sonucu C'deki karşılık gelen öğeye atar. matrisi fiziksel bellekte depolamak için gerekli olan doğrusal bir şekilde endeksleri hesaplar.
OpenCL Example: Matrix Multiplication
OpenCL Example: Matrix Multiplication
  • 2020.06.05
  • www.youtube.com
This video explains how to do matrix multiplication in OpenCL. Note the thinking process to break a large problem into smaller partitions, and compute the sm...
 

13. Bir OpenCL Programının Yapısı (kısım 1)



13. Bir OpenCL Programının Yapısı (kısım 1)

"Structure of an OpenCL Program (part1)" adlı videoda OpenCL uygulaması oluşturma süreci anlatılmaktadır. Program, kaynaklarını anlamak ve bir OpenCL bağlamı ve komut sırası oluşturmak için önce OpenCL platformunu sorgulamalıdır. Ardından, ana bilgisayar ve aygıt belleği arasında veri alışverişi için arabellekler oluşturulur ve çekirdek programı, aygıtta yürütülmek üzere bir ikili dosyada derlenir. Video, salt okunur ve salt yazılır arabelleklerin nasıl oluşturulacağını, çıktı matrisleri için yer nasıl ayrılacağını ve sonuçların ana bilgisayara nasıl kopyalanacağını açıklamaya devam ediyor. Başarılı yürütme için API çağrılarını kontrol etmenin önemi vurgulanmıştır.

  • 00:00:00 Bu bölümde, konuşmacı bir OpenCL uygulaması oluşturma adımlarını açıklıyor. İlk olarak, programın platformda bulunan kaynakları anlamak için OpenCL platformunu sorgulaması ve ardından arabellek işlemleri ve çekirdek başlatmaları için gerekli olan bir OpenCL bağlamı ve komut sırası oluşturması gerekir. Ardından, ana bilgisayar ve cihaz belleği arasında veri alışverişi yapmak için arabellekler oluşturulur. Bunu takiben, çekirdek programının hızlandırıcı cihazda bir FPGA veya bir GPU üzerinde yürütülebilen bir ikili dosyada derlenmesi gerekir. Derleme işlemi cihaza bağlı olarak farklılık gösterir.

  • 00:05:00 Bu bölümde, video, platformu ve cihazı oluşturmak için ortamın nasıl kurulacağını, bir bağlamı ve OpenCL programlama için komut sıralarını nasıl oluşturacağınızı tartışır. Bu, programcının kullanılabilir platform sayısını belirlemesine ve depolama için alan ayırmasına olanak tanıyan platform kimliğinin alınmasını içerir. Video, platform içindeki cihazların nasıl seçileceğini, seçilen cihaz hakkında nasıl bilgi alınacağını, uygun argümanların nasıl ayarlanacağını ve bu argümanların değerlerinin çekirdeği başlatmak için çekirdek işlevine nasıl iletileceğini açıklamaya devam ediyor. Son olarak, çekirdek tamamlandıktan sonra sonuçların cihazdan ana bilgisayarın belleğine nasıl kopyalanacağını gösterirler.

  • 00:10:00 Bu bölümde, video bir OpenCL içeriğinin nasıl oluşturulacağını ve komut sıraları ve arabellekler gibi OpenCL işlemleri için gerekli tüm kaynakları birbirine bağlamada bağlam nesnesinin önemini açıklar. Transkript, salt okunur ve salt yazılır arabelleklerin nasıl oluşturulacağını ve CL mürekkep ve Q yazma arabelleği komutlarında CL kullanılarak ana bilgisayar ile aygıt arasında verilerin nasıl kopyalanacağını ana hatlarıyla belirtir. Kullanılan örnek, A ve B matrislerinin girdi ve C matrisinin bir çıktı olduğu matris çarpımıdır. Video, başarılı API çağrılarını kontrol etmenin önemini vurguluyor.

  • 00:15:00 Bu bölümde konuşmacı, çıktı matrisi olan Matrix C için nasıl alan tahsis edileceğini açıklar. Arabellek C'nin, cihazın sonuçları içine yazmasına izin veren CL belleği olarak bildirildiğini söylüyorlar. Ancak bu, sonuçları cihazdan almak ve elde edilen matrisi ana bilgisayarda bir yere kopyalamak için gerekli olan bu tamponun ana bilgisayar tarafından okunmasını engellemez. Konuşmacı, beş bağımsız değişken alan arabellek API'sinin tam tanımını gösterir: bağlam, bayraklar, boyut, ana bilgisayar işaretçisi ve dönüş değeri.
Structure of an OpenCL Program (part1)
Structure of an OpenCL Program (part1)
  • 2020.06.05
  • www.youtube.com
This video describes the basic structure of an OpenCL program. (this is part1, a second part follows)
 

14. Bir OpenCL Programının Yapısı (kısım 2)



14. Bir OpenCL Programının Yapısı (kısım 2)

OpenCL programlamadaki üçüncü adım, çevrimdışı yapıldığından FPGA cihazları için farklı olan çekirdek derlemesini içerir. Kaynaklı CL oluşturma programı ve C TX, bir program oluşturmak için kullanılır, ardından CL oluşturma programı, programı ikili olarak oluşturmak için kullanılır. Uygun giriş noktası kullanılarak doğru çekirdek işlevi seçilir ve çekirdek bağımsız değişkenleri, doğru işaretçi ile CL set çekirdek bağımsız değişkeni kullanılarak başlatılmalıdır. Konuşmacı, matris çarpımında bağımsız değişkenlerin doğru şekilde ayarlanması hakkında ayrıntılara giriyor. Daha sonra, yerel ve genel çalışma grubu boyutlarını ayarlamayı, çekirdeği çalıştırmayı ve CL'yi kuyruk arabelleği API'sinde kullanarak sonuçları almayı tartışırlar. Son olarak, konuşmacı OpenCL programlamasındaki olaylardan kısaca bahseder.

  • 00:00:00 Bu bölümde, bir OpenCL programının çekirdek derlemesini içeren üçüncü adımı tartışılmaktadır. Derleme çevrimdışı yapıldığından, bu işlem FPGA cihazlarında biraz farklıdır. Program kaynak kodunun bir karakter arabelleğinde saklandığını varsayarsak, CL oluşturma programı kaynak ile ve C TX bir program oluşturmak için kullanılır ve CL oluşturma programı programı ikili olarak oluşturmak için kullanılır. Ardından, seçilen belirli çekirdek işlevi için uygun giriş noktası kullanılarak bir çekirdek oluşturularak kaynak kodundan doğru çekirdek işlevi seçilir. Çekirdek oluşturulduktan sonra, çekirdek bağımsız değişkenleri, gerçek değeri gösteren bir işaretçi ile CL set kernel bağımsız değişkeni kullanılarak uygun şekilde başlatılmalıdır. Örneğin, matris çarpımında, hedef arabellek, matrislerin boyutu ve iki giriş matrisi dahil olmak üzere yedi argüman uygun şekilde ayarlanmalıdır.

  • 00:05:00 Bu bölümde, konuşmacı birden çok çekirdek bağımsız değişkeninin başlatılmasından bahsediyor ve hatalardan kaçınmak için bu bağımsız değişkenlerin dizinlerini doğru şekilde ayarlamanın önemini vurguluyor. Daha sonra, bir gruptaki iş öğelerinin sayısını ve çalışma gruplarının sayısını belirterek, yerel ve genel çalışma grubu boyutlarının nasıl ayarlanacağını açıklarlar. Son olarak, OpenCL API'yi çağırmak ve CL'yi sıra arabelleği API'sini kullanarak cihazdan ana belleğe sonuçları almak dahil olmak üzere çekirdeği çalıştırma adımlarını açıklarlar. Konuşmacı ayrıca olaylardan ve bunların OpenCL programlamada nasıl kullanılabileceğinden de kısaca bahseder, ancak bu daha sonraki derslerde daha ayrıntılı olarak tartışılacaktır.
Structure of an OpenCL Program (part2)
Structure of an OpenCL Program (part2)
  • 2020.06.05
  • www.youtube.com
This video describe the basic structure of an OpenCL program. (continued from part 1)
 

15. OpenCL Matris Çarpma Demosu



15. OpenCL Matris Çarpma Demosu

"OpenCL Matris Çarpma Demosu" videosu, OpenCL çerçevesini kullanarak bir matris çarpma örneğini çalıştırma sürecini açıklar. Ana bilgisayar tarafı için bir ana C programı, çekirdek programı ve bir makefile gibi birden çok kaynak kodu dosyası içerir. Video, OpenCL çerçevesinin farklı yönlerini, platform ve cihaz kimliklerinin alınmasını, bir OpenCL bağlamı, program ve çekirdek nesneleri oluşturmayı, ana bilgisayar için arabellek yönetimini ve aygıtta arabellekleri oluşturmayı ve başlatmayı kapsar. Sunum yapan kişi ayrıca nokta ürün işlemlerini gerçekleştiren örnek bir çekirdeği ve bir AMD Radeon pro 575 bilgi işlem motorunda nihai sonucun bir demosunu gösterir.

  • 00:00:00 Bu bölümde, konuşmacı bir matris çarpımı örneğinin OpenCL aracılığıyla nasıl çalıştırılacağını açıklar. Örnek, ana bilgisayar tarafı programı olarak bir ana C programı, my kernel CL adlı bir çekirdek programı ve projeyi derlemeye yardımcı olacak bir makefile dahil olmak üzere birkaç kaynak kod dosyasından oluşur. Ana program, standart kitaplıkları, OpenCL çerçevesi için makro tanımlarını ve giriş matrisleri (matris A ve matris B) için bildirimlerin yanı sıra cihaz adını, platform tanımlayıcılarını ve cihaz numaralarını içerir. Konuşmacı ayrıca OpenCL çerçevesinin bağlam, program, çekirdek ve kaynak kodu okuma ve derleme gibi çeşitli yönlerini açıklar. Ayrıca konuşmacı, platform ve cihaz kimliklerinin yanı sıra koddaki matris boyutlarının önemini açıklıyor.

  • 00:05:00 Bu bölümde konuşmacı, platform ve cihaz kimliklerini edinme sürecini ve matris çarpımı demosu için OpenCL bağlamını oluşturmayı tartışıyor. Platform sayısının nasıl döndürüldüğünü ve dizinin platform kimliklerini depolamak için nasıl tahsis edildiğini açıklarlar. Ayrıca, seçilen belirli bir tür için cihaz kimliklerinin nasıl alınacağını ve adının nasıl sorgulanacağını da gösterirler. Video, her cihaz için bir komut sırasının nasıl oluşturulacağını ve OpenCL programının nasıl derleneceğini gösterir. Ayrıca, çekirdek kaynak kodu dosyasını açmak ve programı derlemek için open uygulamasının nasıl kullanılacağını açıklarlar.

  • 00:10:00 Bu bölümde video, OpenCL çekirdek kaynak kodundan bir program nesnesinin nasıl oluşturulacağını açıklar. Bu süreç farklı platformlarda farklıdır. Yerel OpenCL desteğine sahip Mac OS'de, kaynak kodu kullanılarak bir program nesnesi oluşturulabilir. Bununla birlikte, Altera FPGA OpenCL SDK'da bir program nesnesi oluşturmak, çekirdeğin derlenmesini ve Altera'nın özel API'sini kullanarak bu derlemenin ikili sonucundan oluşturulmasını içerir. Program nesnesi oluşturulduktan sonra, video çekirdek programının nasıl oluşturulacağını ve çekirdek nesnesinin nasıl oluşturulacağını gösterir. Son olarak video, ana bilgisayar tarafında arabellek yönetimine girer ve burada elde edilen C matrisini depolamak için bir arabellek tahsis edilir.

  • 00:15:00 Bu bölümde sunum yapan kişi, OpenCL kullanılarak matris çarpımı için aygıt tarafında arabelleklerin nasıl oluşturulacağını ve başlatılacağını açıklar. Küresel ve yerel çalışma grubu boyutlarının ayarlanması da dahil olmak üzere çekirdek bağımsız değişkenlerinin nasıl doğru şekilde ayarlanacağını göstermeye devam ediyorlar. CL'nin dönüş değerini kontrol etmenin önemi de vurgulanmıştır. Sunum yapan kişi daha sonra sonuçların ana bilgisayar belleğine nasıl okunacağını ve ardından ana bilgisayar ve OpenCL'de ayrılan kaynakların serbest bırakılmasını gösterir. Son olarak, bir matrisin genişliğini yinelemek, iç çarpım işlemlerini gerçekleştirmek ve sonuçları C matrisindeki karşılık gelen öğede depolamak için get global ID'yi kullanan örnek bir çekirdek gösterirler.

  • 00:20:00 Bu bölümde, konuşmacı ana C programını ve Mike Rinder CL programını oluşturmayı tartışıyor. Ana bilgisayar tarafı programını oluşturmak için, kullanıcıların tek bir C program dosyasını derlemesi gerekir ve çekirdek için, Micra'yı (CL'yi bir GPU ikili dosyasına) derlemek için GPU derleyicisini kullanabilir. Programı hem ana bilgisayar hem de cihaz tarafında oluşturduktan sonra, kullanıcılar "ana" adlı bir yürütülebilir dosyaya ve farklı GPU sürümleri için farklı ikili dosyalara sahip olur. Bu dosyayı çalıştırdıktan sonra konuşmacı, tüm öğeleri sekiz nokta içeren C matrisinin başlangıç değerine sahip bir AMD Radeon pro 575 bilgi işlem motoruna sahip bir OpenCL platformunu gösterir.
OpenCL Matrix Multiplication Demo
OpenCL Matrix Multiplication Demo
  • 2020.06.05
  • www.youtube.com
This video walks through the code of Matrix Multiplication.