Ticarette OpenCL - sayfa 6

 

16. OpenCL Örneği: Görüntü Döndürme



16. OpenCL Örneği: Görüntü Döndürme

Bu video, görüntü döndürmeyi ve OpenCL kullanılarak nasıl uygulanabileceğini tartışıyor. Bir görüntüdeki her pikselin koordinatları vardır ve belirli bir renk ölçeğini temsil eder ve döndürme, piksellerin orijinal ve yeni koordinatlarını ve dönüş açısını hesaba katan bir formüle dayalı olarak yeni bir konuma taşınmasını içerir. Konuşmacı, tek bir pikselin yeni konumunu hesaplamak için her iş öğesinin atanmasını önerir ve tüm genel çalışma alanını daha küçük çalışma gruplarına bölmek için giriş ayrıştırmasını kullanır ve işlemi daha verimli bir şekilde gerçekleştirir. Cihazdaki tampondan ana bilgisayardaki tampona bir görüntü aktarma işlemi de hataların kontrol edilmesi ve geçen sürenin hesaplanması vurgulanarak açıklanmaktadır.

  • 00:00:00 Bu bölümde video, görüntü döndürmeyi ve bunun arkasındaki matematiği tartışıyor. Bir görüntüdeki her pikselin koordinatları olduğunu ve belirli bir renk ölçeğini temsil ettiğini açıklar. Döndürme, orijinal ve yeni koordinatlarını ve döndürme açısını hesaba katan bir formüle dayalı olarak pikselleri yeni bir konuma taşımayı içerir. Video, tek bir pikselin yeni konumunu hesaplamak için her bir iş öğesinin atanmasını önerir ve tüm genel çalışma alanını daha küçük çalışma gruplarına bölmek için giriş ayrıştırmasını kullanır, böylece işlemi daha verimli hale getirir.

  • 00:05:00 Bu bölümde, konuşmacı, görüntü döndürmeyi gerçekleştirmek için görüntünün OpenCL'de çalışma gruplarına nasıl bölündüğünü açıklar. Görüntü yatay ve dikey alanlara bölünür, her biri görüntünün genişliğinin ve yüksekliğinin 16'nın katı olduğunu varsayarak 16 çalışma grubuna sahiptir. Konuşmacı daha sonra görüntü döndürmeyi gerçekleştirmek için kullanılan, orijinal gibi argümanları alan çekirdek işlevini tanıtır. ve hedef verileri, görüntü boyutları ve döndürme parametreleri. Çekirdek işlevi içinde konuşmacı, döndürme parametreleri kullanılarak her pikselin yeni konumunun nasıl hesaplandığını ve sınır kontrolü gerçekleştirildikten sonra piksel içeriğinin orijinal konumdan yeni konuma nasıl kopyalandığını gösterir.

  • 00:10:00 Bu bölümde, konuşmacı OpenCL kullanılarak bir görüntünün nasıl döndürüleceğini açıklamaktadır. Süreç, koordinatların kontrol edilmesini ve bunların görüntünün boyutları içinde pozitif değerler olmasını sağlamayı içerir. Piksel bilgileri daha sonra, fiziksel bellek konumunu belirlemek için hesaplamalar kullanılarak orijinal konumdan yeni konuma kopyalanır. Bu bölümde listelenen örnek kod, bu uygulama ile önceki matris çarpımı arasındaki farkları gösterir. OpenCL API için C++ bağlaması, ortamı platformları sorgulamak, cihazı almak, bir komut sırası oluşturmak ve verileri taşımak için arabellekleri bildirmek üzere ayarlamak için kullanılır. Çekirdek derlenir ve parametreler, sonuçları ana bilgisayara geri okuyarak tamamlanan çekirdeği çalıştıracak şekilde ayarlanır.

  • 00:15:00 Bu bölümde konuşmacı, cihazdaki arabellekteki bir görüntünün ana bilgisayardaki arabelleğe aktarılması sürecini tartışıyor. Konuşmacı, bu işlemin clEnqueueReadBuffer işlevini kullanarak aygıttaki arabelleği okumayı ve ana bilgisayardaki arabelleğe boyutu, ofseti ve işaretçiyi belirtmeyi içerdiğini açıklıyor. Ek olarak, konuşmacı bir if ifadesi kullanarak bu işlem sırasında hataları denetlemenin önemini not eder ve clGetEventProfilingInfo işlevini kullanarak kodun bu kısmı için geçen sürenin nasıl hesaplanacağını gösterir.
OpenCL Example: Image Rotation
OpenCL Example: Image Rotation
  • 2020.06.05
  • www.youtube.com
This video explains the math behind the image rotation and the code implementation.
 

17. OpenCL Örnek Görüntü Döndürme Demosu



17. OpenCL Örnek Görüntü Döndürme Demosu

"OpenCL Örnek Görüntü Döndürme Demosu" öğreticisi, programın işleyeceği C kodunu ve görüntü dosyalarını içeren farklı klasörleri içeren demo'nun kaynak kodunu kapsar. Video, giriş ve çıkış görüntüleri için arabellek oluşturma, orijinal görüntüyü aygıt arabelleğine kopyalama, çekirdek bağımsız değişkenlerini ayarlama, çekirdeği tüm görüntü olarak tanımlanan genel bir boyutta çalıştırma ve çıktı verilerini ana bilgisayara geri okuma adımlarını adım adım anlatır. Çekirdek işlevi, her pikselin yeni koordinatlarını hesaplamak ve sınır kontrolü ile piksel bilgilerini yeni konuma kopyalamak için döndürme parametrelerini alır. Program ayrıca döndürülen görüntüyü BMP formatında saklama işlevi içerir ve tamamlandıktan sonra tüm kaynakları serbest bırakır. Demo, döndürülmüş görüntüyü oluşturmak için orijinal görüntünün piksellerini başarıyla okur ve hesaplar.

  • 00:00:00 Bu bölümde sunum yapan kişi, ana ve destekleyici C kod dosyalarını içeren farklı klasörlerin yanı sıra programın işleyeceği görüntü dosyalarını içeren görüntü döndürme demosunun kaynak koduna genel bir bakış sunar. Kod, Mac OS ve Altera OpenCL platformları için başlık dosyalarını, arabellek tanımlarını ve çekirdek parametrelerini içerir ve görüntü dosyalarını açmak ve formatlarını dönüştürmek için destekleyici işlevleri kullanır. Kod aynı zamanda çıktı arabelleğinin oluşturulmasını ve rasgele sayılarla başlatmayı da içerir. Son olarak, kod bir komut kuyruğu, program nesnesi ve çekirdek nesnesi oluşturur ve çekirdek işlev adını belirtir.

  • 00:05:00 Bu bölümde, konuşmacı giriş ve çıkış görüntüleri için arabellek oluşturma, orijinal görüntüyü aygıt arabelleğine kopyalama, çekirdek bağımsız değişkenlerini ayarlama, çekirdeği tüm görüntü olarak tanımlanan global boyutta yürütme, ve çıktı verilerinin ana bilgisayara geri okunması. Çekirdek işlevi, her pikselin yeni koordinatlarını hesaplamak ve sınır denetimiyle piksel bilgilerini yeni konuma kopyalamak için hedef ve kaynak arabellek işaretçilerini, görüntü boyutlarını ve döndürme parametrelerini alır. Program ayrıca döndürülen görüntüyü BMP formatında saklama işlevi içerir ve tamamlandıktan sonra tüm kaynakları serbest bırakır.

  • 00:10:00 Bu bölümde konuşmacı, bir kedinin orijinal görüntüsünü alan ve onu saat yönünde 45 derece döndürerek kaydedilenle aynı boyutta yeni bir görüntü oluşturan Avatar FPGA platformunu kullanarak bir OpenCL örnek görüntü döndürme demosunu gösterir. görüntü döndürme klasöründe yeni bir adla. Demo, döndürülmüş görüntüyü oluşturmak için orijinal görüntünün piksellerini başarılı bir şekilde okuduğunu ve hesapladığını gösterir.
OpenCL Example Image Rotation Demo
OpenCL Example Image Rotation Demo
  • 2020.06.05
  • www.youtube.com
This video walks through the code of Image Rotation and demonstrates the results.
 

18. OpenCL Örneği: Görüntü Evrişimi



18. OpenCL Örneği: Görüntü Evrişimi

"OpenCL Örneği: Görüntü Evrişimi" videosu, bir görüntüdeki her pikseli, bulanıklaştırma filtresi gibi bir filtre uygulayarak komşu piksellerinden gelen bilgileri kullanarak değiştiren görüntü evrişimini açıklar. Video, görüntü konvolüsyon işlevinin bir çekirdek uygulamasını sağlar ve OpenCL'de görüntü veri türleri için tasarlanmış, grafik işlemcilerde verimli işlemeye izin veren "görüntü" veri yapısını tanıtır. Video, OpenCL kullanarak görüntü evrişim çalışması için görüntü ve filtre verilerinin cihaza nasıl kopyalanacağını ve görüntüye erişmek için OpenCL örnekleyici nesnesinin kullanımını gösterir. Video ayrıca, iş öğesinin nasıl elde edileceğini ve görüntü nesnesinden piksel bilgisi elde etmek için filtre satırları ve sütunlarında yinelemeyi, bunları filtre pikselleriyle çarpmayı ve toplam değişkenine toplamayı gösterir. Son olarak video, bir OpenCL görüntü nesnesi kullanılarak piksel değerlerinin nasıl güncelleneceğini gösterir.

  • 00:00:00 Bu bölümde video, komşu piksellerden gelen bilgileri kullanarak bir görüntüdeki her bir pikselin değerini değiştiren bir işlem olan görüntü evrişimini tartışır. Bu, orijinal görüntüye, değerleri arasındaki farkları azaltmak için komşu piksellerin ağırlıklı ortalamasını alan bulanıklaştırma filtresi gibi bir filtre uygulanarak yapılır. Video, bir görüntünün küçük bir bölgesine 3x3 filtrenin nasıl uygulanacağını ve filtrelenmiş görüntüdeki her yeni pikselin değerini hesaplamak için öğe bazında çarpma ve toplamanın nasıl kullanılacağını gösterir. Ancak video, bu tür filtreleme işlemlerini tüm bir görüntüye uygularken, komşu sekiz pikselin tümüne sahip olmayan sınır piksellerine dikkat edilmesi gerektiğini belirtiyor. Video ayrıca, farklı efektler elde etmek için bir görüntüye uygulanabilen bulanıklaştırma ve kenar algılama gibi birkaç örnek filtre gösterir.

  • 00:05:00 "OpenCL Örneği: Görüntü Evrişimi" videosunun bu bölümünde konuşmacı, görüntünün her pikselinden geçen ve ona bir filtre uygulayan görüntü evrişim işlevinin tohum uygulamasını sağlar. Ayrıca, grafik işlemcilerde daha verimli bir şekilde işlenebilen uzun komut dizilerine izin veren, özellikle görüntü veri türleri için tasarlanmış olan "görüntü" adlı OpenCL'de yeni bir veri yapısı sunarlar. Görüntü nesneleri, belirtilen biçimler, boyutlar ve diğer parametrelerle oluşturulabilir. Video, cihaz tarafında bir 2B görüntü arabelleğinin nasıl oluşturulacağını gösterir.

  • 00:10:00 bölümü, OpenCL kullanarak görüntü konvolüsyon çalışması için görüntü ve filtre verilerinin cihaza kopyalanması sürecini tartışır. Bu bölüm ayrıca bir görüntüye nasıl erişileceğini açıklamak için kullanılan OpenCL örnekleyici nesnesini de tanıtır. Örnekleyici nesnesi için adresleme modu, filtreleme modu ve normalleştirilmiş koordinatların kullanımı belirtilir. Bu bölüm ayrıca çekirdek işlevini ve OpenCL çalışma zamanının filtre nesnelerini genel bellekteki belirli sabit bölgeye koymasını sağlayan nesne özelliklerini belirtmek için "salt okunur" ve "sabit" anahtar sözcüklerin kullanımını gösterir.

  • 00:15:00 OpenCL görüntü konvolüsyon örneğinin bu bölümünde, konuşmacı get_global_id kullanarak iş öğesini elde etme, filtrenin yarı genişliğini hesaplama, filtre indeksini başlatma, filtre satırları ve sütunlarını yineleme adımlarından geçer. ve görüntü nesnesinden piksel bilgilerini elde etmek için read_image işlevini kullanma. Piksel bilgisi daha sonra filtredeki piksel ile çarpılır ve toplam değişkenine toplanır. Bu işlem, filtredeki her piksel için tekrarlanır ve görüntü evrişiminde komşu piksel bilgilerinin kullanılmasına izin verir.

  • 00:20:00 Bu bölümde, eğitim videosu, bir görüntü nesnesi kullanılarak bir OpenCL görüntü kıvrımındaki piksel değerlerinin nasıl güncelleneceğini gösterir. Çekirdeği başarıyla çalıştırdıktan sonraki adım, görüntüyü geri okumak için Q okuma görüntüsünde CL'yi kullanmaktır. Bu işlev, Q komutunu ilk bağımsız değişken, çıktı görüntü nesnesi ve okumanın tamamlanana kadar engellenmesi gerektiğini belirtmek için gerçek bir değer olarak alır. Görüntü nesnesini oluşturmak için kullanılan orijin ve bölge parametreleri, görüntü verilerinin depolandığı ana bilgisayar tarafındaki arabellek ile birlikte sağlanır.
OpenCL Example: Image Convolution
OpenCL Example: Image Convolution
  • 2020.06.07
  • www.youtube.com
This video introduces the principles of image convolution and how to implement it in OpenCL.
 

19. Demo: OpenCL Örneği - Görüntü Evrişimi



19. Demo: OpenCL Örneği - Görüntü Evrişimi

Video, bulanıklaştırma, keskinleştirme, kenar keskinleştirme, algılama ve kucaklama filtresi gibi farklı filtreleri tanımlayan bir OpenCL görüntü konvolüsyon örneğini açıklıyor. Sunum yapan kişi, filtre değerlerinin başlatılmasını ve dosyadan BMP görüntü verilerinin okunmasını, girdi ve çıktı görüntü nesneleri oluşturulmasını ve çekirdeği çalıştırmak için çekirdek bağımsız değişkenlerinin ayarlanmasını gösterir. Video ayrıca örnekleyici oluşturmayı, piksellerin sınır dışında nasıl işleneceğini tanımlamayı, çekirdeği başlatmayı, piksel verilerini bir dosyaya kaydetmeyi ve BMP formatı için gerekli başlıkları oluşturmayı öğretir. Son olarak, kayan hesaplama nedeniyle yalnızca hafif bir sapma ile altın sonuçla eşleşmesi gereken filtrelenmiş bir görüntü oluşturmak için iki arabellekteki değerleri karşılaştırarak sonuçların doğrulanması.

  • 00:00:00 Videonun bu bölümünde sunum yapan kişi, bir OpenCL görüntü konvolüsyon örneğinin kodunu gözden geçiriyor. Kod, bulanıklaştırma, keskinleştirme, kenar keskinleştirme, algılama ve kucaklama filtresi dahil olmak üzere farklı filtreler tanımlar. Sunucu, belirli bir filtrenin, bu durumda kenar algılama filtresinin nasıl test edileceğini gösterir. Ayrıca, filtre değerlerinin nasıl başlatılacağını ve dosyadan BMP görüntü verilerinin nasıl okunacağını, giriş ve çıkış görüntü nesnelerinin nasıl oluşturulacağını ve çekirdeği çalıştırmak için çekirdek bağımsız değişkenlerinin nasıl kurulacağını açıklarlar. Video ayrıca örnekleyicinin nasıl oluşturulacağını ve sınırın dışında kalan piksellerin nasıl işleneceğini de kapsar.

  • 00:05:00 Bu bölümde sunum yapan kişi, OpenCL kullanarak bir görüntü evrişimi örneği gösteriyor. Sunum, çekirdeği başlatmak, piksel verilerini bir dosyaya depolamak ve BMP formatı için gerekli başlıkları oluşturmak ve iki arabellekteki değerleri karşılaştırarak sonuçları doğrulamak gibi ana bilgisayarda filtreyi gerçekleştirmek için gerekli adımları gösterir. Bu alıştırmanın amacı, kayan hesaplama nedeniyle yalnızca hafif bir sapma ile altın sonuçla eşleşmesi gereken filtrelenmiş bir görüntü oluşturmaktır. Genel olarak sunum, OpenCL çekirdek işlevinden çıktının nasıl derleneceğini, çalıştırılacağını ve doğrulanacağını vurgular.
Demo: OpenCL Example - Image Convolution
Demo: OpenCL Example - Image Convolution
  • 2020.06.07
  • www.youtube.com
This demonstrates the example of Image Convolution.
 

20. Ders 5 OpenCL Eşzamanlılık Modeli



20. Ders 5 OpenCL Eşzamanlılık Modeli

Bu ders, çoklu komut kuyrukları, kuyruk modeli, OpenCL çekirdekleri çalışma öğeleri ve çalışma grupları dahil olmak üzere OpenCL çalışma zamanı ve eşzamanlılık modelini kapsar. Senkronizasyon noktaları, komutların yürütülmesini yönetmek için kullanılır ve bekleme olayları, cihaz tarafındaki bir komut kuyruğundaki komutları senkronize etmek için kullanılır. Ders, OpenCL'deki eşzamansız işlemlerin önemini vurgular ve komutlar arasındaki bağımlılıkları belirtmek için olayların kullanımını açıklar. Öğretim görevlisi ayrıca olay tamamlama için geri arama işlevlerinin kullanımını tartışır ve performans ayarı için profil oluşturmanın önemini vurgular. Buna ek olarak ders, ardışık düzen ve paralel yürütme modelleri dahil olmak üzere bir sistemdeki birden fazla cihaz için OpenCL eşzamanlılık modelini kapsar. Son olarak öğretim görevlisi, farklı çekirdeklerin paralel yürütülmesine izin veren çekirdek olaylarını kullanarak bir yürütme modelinin uygulanmasını gösterir.

OpenCL eşzamanlılık modeli, yürütmede paralellik elde etmek için yerel senkronizasyona sahip çalışma gruplarını kullanarak performansı artırmak için birden çok iş öğesinin bağımsız olarak yürütülmesine izin verir, ancak çok fazla iş öğesi kaynak çekişmesine neden olabilir. İş öğeleri kendi program sayaçlarını korumaktan sorumludur ve GPU işleme öğelerinden yararlanan iş öğelerini tasarlamak için sorun boyutlarını ve sorun boyutlarını anlamak önemlidir. OpenCL, iş öğeleri arasında gelişmiş senkronizasyon için çalışma grubu engellerini kullanır, ancak aynı çekirdek yürütmesinin farklı çalışma gruplarındaki iş öğeleri arasında senkronizasyonu destekleyen hiçbir mekanizma yoktur. Aynı çalışma grubu içindeki iş öğelerini senkronize etmek için bariyer API'si kullanılır, ancak küresel ölçekte senkronizasyon için olaylar ve bekleme olayları kullanılır. Çekirdek işlevi, genel ve yerel belleklerdeki bellek nesnelerine işaretçiler kullanır ve tüm işleme öğeleri tarafından erişilebilen yerel bellek, çalışma grubu içinde veri paylaşımı için kullanılabilir. Ders ayrıca, C işlevlerinin OpenCL derleyicilerine dayanmadan bir aygıtta çekirdek olarak kullanılmasına, OpenCL bellek nesnelerini sıra içi yerel çekirdek API'sini kullanan bir kullanıcı işlevine geçirmeye ve yerleşik çekirdek işlevlerine izin veren yerel çekirdekleri de kapsar. Bir videodaki komşu kareler arasındaki hareketi tahmin etmek üzere görüntü işleme için kullanılan OpenCL için hareket tahmin uzantısı.

  • 00:00:00 Bu bölümde, OpenCL komutları, kuyruk modeli, çoklu komut kuyrukları, OpenCL çekirdekleri çalışma öğeleri ve çalışma grupları dahil olmak üzere OpenCL çalışma zamanı ve eşzamanlılık modeli hakkında bilgi ediniyoruz. OpenCL, görev paralel ana bilgisayar tarafından kontrol edilen bir modeldir ve görevleri paralel olarak gerçekleştirmek için çekirdekler kullanılır. Birden çok yazılım iş parçacığı bir ana bilgisayarda çalışıyor olabileceğinden ve aynı komut kuyruğunda çalışıp çalışmayabileceğinden, komut sıraları iş parçacığı açısından güvenlidir. Asenkron işlemler OpenCL'de önemlidir ve veri taşıma ve diğer işlemler gelecekte bir noktada kuyrukta yürütülür. Ana bilgisayarların aygıtla etkileşime girdiği en küçük birim komuttur ve bir komutun tamamlanması yalnızca komut kuyruğu eşitleme noktasında garanti edilir. Bu eşitleme, bir ana bilgisayar hibe kuyruğundaki komutlar arasında ve bir cihaz tarafı komut kuyruğundaki komutlar arasında gerçekleşir.

  • 00:05:00 Bu bölümde ders, QAPI'de okuma bağımsız değişkeninin engellenmesine ve bunun bir senkronizasyon noktası ayarlamak için nasıl kullanılabileceğine odaklanır. Okuma engellemeyi true olarak ayarlayarak, bu API, okuma işlemi tamamlanana kadar diğer bellek işlemlerini durduracak bir engelleme okuma işlemine dönüştürülebilir. Ders ayrıca, çoklu komutları, veri transferlerini ve hesaplamaları içeren karmaşık işlemlerde yararlı olabilecek komutlar arasındaki bağımlılıkları belirlemek için QAPI'deki olayların kullanımını açıklar. Ayrıca, kuyrukta Co kullanılarak gönderilen komutlar eşzamansız olarak işlendiğinden ve hata koşullarını veya profil oluşturma verilerini döndüremediğinden, olaylar bir komut hakkında komutun kendisinden daha fazla bilgi sağlayabilir. Bununla birlikte, bir komutla ilişkili bir olay oluşturularak, komutla ilgili bilgiler CL get event info API kullanılarak sorgulanabilir.

  • 00:10:00 Bu bölümde, OpenCL eşzamanlılık modeli, özellikle komutların yürütülmesini yönetmek için senkronizasyon noktalarının kullanımı tartışılmaktadır. Senkronize etmenin bir yolu, ana bilgisayarın belirli bir olay gerçekleşene kadar engelleyebileceği bekleme olaylarının kullanılmasıdır; bu sırada kuyruk API'sinde komutlar arası senkronizasyon için birkaç bekleme olayı bulunur. Bariyer işlemi ise sıra dışı kuyruklar için kullanılan ve senkronizasyon noktası haline gelen özel bir komuttur. İşaretçiler benzer bir amaca hizmet eder, ancak yürütmeyi engellemez, bunun yerine önceki komutların tamamlanma durumunu bildirmek için çıktı olaylarıyla örtülü bir girdi olayı olarak hizmet eder. Bir komutla ilgili hata koşulları gibi diğer bilgiler, CIL get event info API kullanılarak sorgulanabilir.

  • 00:15:00 Bu bölümde öğretim görevlisi, OpenCL'nin ana bilgisayar ve cihaz arasındaki veri akışını kontrol etmek için kullanılan komut ve olay API'lerini tartışır. Komut API'sinin, kullanıcıların çekirdek yürütme, arabellek okuma ve yazma ve bellek eşlemeleri gibi çeşitli işlemleri gerçekleştirebilen komut kuyruğuna komutlar göndermesine izin verdiğini açıklıyor. Kullanıcılar, olay API'sini kullanarak gönderilen komutun yürütme durumunu sorgulayabilir ve bağlam içinde profil oluşturma uygulayabilir. Öğretim görevlisi ayrıca, bir sıradaki bir komutun belirli yürütme durumu oluştuğunda tetiklenen olay geri çağırma işlevinden de bahseder. Geri arama işlevi, basit görevleri gerçekleştirmek ve OpenCL uygulamasının yararlanacağı çıktı verileri sağlamak için kullanılabilir. Öğretim elemanı, geri arama işlevinin mümkün olan en kısa sürede tamamlanması gerektiğini ve bir engelleme işlevi olmaması gerektiğini vurgular.

  • 00:20:00 Bu bölümde konuşmacı, olay tamamlamayı işlemek için geri arama işlevlerini ayarlamayı tartışır. Henüz olayla ilişkilendirilmiş bir komut olmadığından, bir tamamlama olayı bildirdikten hemen sonra geri arama işlevinin ayarlanması geçerli bir konum değildir. Geçerli bir olay, yalnızca bir komut kendisiyle ilişkilendirildikten sonra, örneğin komut kuyruğuna bir çekirdek eklendiğinde oluşturulur. Geri arama işlevleri, iş parçacığı açısından güvenli, hızlı tamamlanmalı ve pahalı sistem rutinlerini çağırmamalıdır. Bir komutun yürütme durumunu ve zamanını belirlemeye yardımcı olduğundan, performans ayarı söz konusu olduğunda profil oluşturmayı etkinleştirmek de önemlidir. Profil oluşturmayı etkinleştirmek için clq profil oluşturma etkinleştirme bayrağı kullanılır.

  • 00:25:00 Bu bölümde konuşmacı, kullanıcıların kuyruktaki olaylar hakkında bilgi almasını sağlayan OpenCL profil oluşturma API'sini tartışıyor. Profil oluşturmayı etkinleştirerek, bir işaret yürütme süresini hesaplamak için kullanılabilecek komutlar için başlangıç ve bitiş zamanları gibi bilgiler sağlayabilir. Konuşmacı ayrıca, belirli bir komutla ilişkili olmayan ve isteğe bağlı olarak kullanılabilen kullanıcı olaylarını da açıklar. Bir kullanıcı olayı yaratarak ve bir okuma komutunun onu beklemesini sağlayarak, okuma işlemi, kullanıcı olayı tamamlanana kadar bloke olacak ve komutların sıralaması üzerinde daha spesifik kontrole izin verecektir.

  • 00:30:00 Bu bölümde, konuşmacı komutların yürütme sırasının nasıl kontrol edileceğini ve sıra dışı bir kuyruk kullanarak daha iyi performansın nasıl elde edileceğini açıklar. Varsayılan olarak, bir komut kuyruğundaki komutlar sırayla yürütülür, ancak esneklik ve daha iyi performans elde etmek için sıra dışı bir sıra kullanılabilir. Konuşmacı, birden çok olay ve arabellek nesnesi içeren sıra dışı bir kuyruk oluşturmanın somut bir örneğini gösterir. Örnek, bir yazma işlemini ve bloke olmayan, salt yazılır ve salt okunur arabelleklerle bir okuma işlemini içerir. Kullanıcı olayları ve olay durumu da tartışılır. Genel olarak bu bölüm, sıra dışı bir sıra oluşturmak ve daha iyi performans için komutların yürütme sırasını optimize etmek için kapsamlı bir anlayış sağlar.

  • 00:35:00 Bu bölümde öğretim görevlisi, OpenCL API kullanarak kayan noktalı sayıların ana bilgisayar giriş arabelleğinden aygıtın bellek arabelleğine nasıl kopyalanacağını açıklar. Kod, yürütme birimi boyutunu ayarlamayı, iki çekirdek işlevini başlatmayı ve tamamlanma olaylarını beklemeyi içerir. Ders ayrıca, iki çekirdek işlevinin ayrı komutlar olduğunu vurgular ve çıktı verilerinin ana bilgisayar tarafında nasıl okunacağını, olayları beklemeyi ve temizleme gerçekleştirmeyi gösterir. Genel olarak bu bölüm, bir ana bilgisayar ile bir cihaz arasında verileri kopyalamak ve işlemek için dört OpenCL komutunun kullanımını gösterir.

  • 00:40:00 Bu bölümde, komut sıralarının ve olayların OpenCL komutlarının yürütülmesini nasıl kontrol ettiğini görüyoruz. Olayları kullanarak bağımlılıklar kurarak, komutların belirli bir sırada yürütülmesini sağlayabiliriz. Ancak, sıra dışı bir kuyruktaki komutların sırasını değiştirirsek, bu komutların yürütülmesini etkilemez. Ancak, sıralı bir sıra kullanır ve komutları değiştirirsek, kilitlenmeye yol açabilir.
    Bu nedenle, olası sorunlardan kaçınmak için bağımlılıkları doğru şekilde ayarlamak ve uygun sıra türünü kullanmak çok önemlidir. Ek olarak, çoklu komut sıralarını ve bunların OpenCL programlarında eşzamanlılığı geliştirmek için nasıl kullanılabileceğini öğreniyoruz.

  • 00:45:00 Bu bölümde öğretim görevlisi, bir sistemdeki birden fazla cihaz için OpenCL eşzamanlılık modelini açıklar. Her cihazın kendi komut kuyruğuna ihtiyacı vardır ve tek bir cihaz için birden çok komut kuyruğuna sahip olmak da mümkündür, ancak yaygın olarak kullanılmaz. Genel olarak, OpenCL kullanan birden fazla cihaz iki farklı yürütme modeli kullanır - ardışık düzen veya paralel olarak. Ardışık düzen modelinde iki veya daha fazla aygıt olmasına rağmen bir aygıt başka bir aygıttan sonucu bekleyerek bir ardışık düzen oluşturur. Paralel modelde ise cihazlar kendi arabelleklerine paralel olarak bağımsız çalışır ve bağımsız olarak çalışır. Ders ayrıca OpenCL platformunda bir bağlamda birden çok komut kuyruğu örneği, kendi komut sıralarına sahip iki cihaz ve OpenCL'de bir uygulama içerir.

  • 00:50:00 Bu bölümde, OpenCL'deki ardışık düzen ve paralel yürütme modellerini öğreniyoruz. Ardışık düzen modelinde, veriler iki çekirdek arasında paylaşılır; çekirdek 0 ilk önce çalışır ve çekirdek 1 bir sonraki hesaplamaya geçmeden önce tamamlanmasını bekler. Olayları ve API çağrılarını kullanarak bu modelin uygulanmasını görüyoruz. Paralel model, görevler arasında bağımlılık olmadığında ve çekirdekler aynı anda farklı cihazlarda çalışabildiğinde kullanılır. Verilen örnekte, her biri için ayrı komut kuyruğu olan üç aygıt, GPU aygıtları 0 ve 1 ve bir CPU aygıtı 2 vardır. Çekirdek 0 ve çekirdek 1 paralel olarak çalışacak şekilde ayrı ayrı başlatılır ve tamamlandıktan sonra CPU çekirdeği 2 başlayabilir.

  • 00:55:00 Bu bölümde konuşmacı, farklı çekirdeklerin paralel yürütülmesine izin veren bir çekirdek olayı oluşturarak OpenCL'de bir yürütme modelinin nasıl oluşturulacağını tartışır. İlk iki API çağrısı, albay 0 ve albay 1 için iki ayrı GPU kuyruğu oluşturmak için kullanılır. Ardından, üçüncü API çağrısı, çalıştırmadan önce her iki GPU çekirdeğinin tamamlanmasını bekleyen bir CPU çekirdeğini başlatır. Tartışılan yaklaşım, CPU ve GPU çekirdekleri arasında bağımlılıklar oluşturmak için olayları kullanır, ancak aynı zamanda GPU çekirdeklerinin paralel olarak çalışmasına izin verir. Konuşmacı ayrıca, bir kopyayı veya hesaplama örneğini tanımlayan OpenCL çalışma öğeleri kavramlarını ve bir donanım aygıtındaki en küçük birim olan işleme öğelerini açıklar.

  • 01:00:00 Bu bölümde, performansı artırmak için birden çok iş öğesinin bağımsız olarak yürütülmesine izin vermeye dayanan OpenCL eşzamanlılık modeli açıklanmaktadır. Çalışma grupları, yürütmede belirli bir derecede paralellik elde etmenin bir yolu olarak yerel senkronizasyona izin veren, bilgi işlem birimleriyle eşlenen küresel bir yürütme alanındaki bir dizi iş öğesidir. Bununla birlikte, bir bilgi işlem birimine çok fazla iş öğesi eşlemek, tüm işleme öğelerini her zaman meşgul etmeye ve çalışma gruplarını tek bir toplu işte bitirmeye yetecek kadar iş verilmesini gerektiren kaynak çekişmesine neden olabilir.

  • 01:05:00 Videonun bu bölümünde, konuşmacı OpenCL eşzamanlılık modelini ve iş öğelerinin donanım iş parçacıkları veya bağlamları halinde nasıl gruplandırılabileceğini tartışıyor. İş öğeleri, iş öğelerini eşlerken ve bunları OpenCL çerçevesinden gönderirken kendi program sayaçlarını korumaktan sorumludur. Konuşmacı, iş öğelerinin GPU işleme öğelerini yerine getirmek ve bunlardan yararlanmak için tasarlanması gerektiğini açıklıyor. Sorun boyutunun ve üzerinde çalışılan mevcut öğenin boyutlarını anlamak önemlidir. Konuşmacı, problem boyutlarını, genel boyutu, yerel boyutu anlamak ve daha da önemlisi, genel ve yerel kimliği bir dizin olarak almak ve asıl veri öğesinin ne olduğunu bulmak için kullanılabilecek bir dizi yerleşik işlev sağlar. geçerli iş öğesinde üzerinde çalışılması gerekiyor. OpenCL eşzamanlılık modelinin farklı yönlerini açıklamak için basit bir çekirdek örneği de sağlanmıştır.

  • 01:10:00 Bu bölümde öğretim görevlisi, hesaplama için küresel bir alanda kimlik numarasını almak için get global ID yöntemiyle kullanılacak adresi hesaplayan bir çekirdek işlevini açıklar. Çekirdek işlevi daha sonra adresi bir dizinin indeksi olarak kullanır, sonucu iki ile çarpar ve ürünü farklı bir tampona atar. Öğretim görevlisi, sıfır boyutundaki global ID'nin hesaplama yapılacak öğeyi belirlemek için nasıl kullanıldığını ve birinci boyuttaki global ID'nin şimdiye kadar kaç satırın geçtiğini belirlemeye nasıl yardımcı olduğunu açıklamaya devam ediyor. Buradaki fikir, her iş öğesinin benzersiz bir öğe üzerinde işlem yapmasını ve herhangi bir öğe üzerinde hesaplamaların tekrarlanmamasını sağlayarak GPU veya CPU döngülerinden tasarruf sağlamaktır.

  • 01:15:00 Bu bölümde video, OpenCL senkronizasyonunun nasıl çalıştığını ve donanım tabanlı sıralamayı garanti etmenin neden zor olabileceğini tartışıyor. OpenCL, programın nerede yürütüleceğini bilmeyen platformlar arası bir API çerçevesidir, bu nedenle donanım tabanlı sıralamayı garanti edemez. OpenCL, multi-threading'i destekleyebilecek cihazlarda çalışır, ancak bu tür cihazlarda ayrı çalışan bir işletim sistemi yoktur. Bu, iş parçacıklarını bir yürütme kuyruğundan kaldıracak bir ana veya işletim sistemi çekirdeği olmadığı anlamına gelir. Sonuç olarak, semafor veya benzeri mekanizmalar kullanılırken kilitlenme riski vardır. İş öğeleri arasında gelişmiş senkronizasyon gerçekleştirmek için OpenCL bir çalışma grubu engeli kullanır. Ancak OpenCL, aynı çekirdek yürütmesinin farklı çalışma gruplarındaki iş öğeleri arasında senkronizasyonu destekleyecek mekanizmalara sahip değildir. Çalışma grubu içinde veya aynı bilgi işlemde veri paylaşımını desteklemek için, tüm işleme öğelerinin erişebileceği yerel bellek kullanılabilir.

  • 01:20:00 Bu bölümde, OpenCL'de aynı çalışma grubu içindeki iş öğelerini senkronize etmek için bariyer işlemini kullanmayı öğreniyoruz. Bariyer API'si bir senkronizasyon noktası olarak kullanılır ve iş grubundaki diğer tüm iş öğeleri de engele ulaşana kadar iş öğelerinin engeli aşmasına izin verilmez. Bu, devam etmeden önce gruptaki tüm iş öğelerinin aynı verilere sahip olmasını sağlar. OpenCL'deki küresel eşitleme hattını kullanarak, küresel ölçekte eşitlemek için olay ve bekleme olayı kullanılabilir, ancak iş grubu içinde iş öğeleri seviyesinde, kişinin eşitlemeyi gerçekleştirmek için bariyer işleminden yararlanması gerekir.

  • 01:25:00 Bu bölümde, OpenCL'deki çekirdek işlevini ve küresel ve yerel belleklerdeki bellek nesnelerine işaretçiler olan argümanlarını öğreniyoruz. Yerel bellek, bir bilgi işlem birimi içinde bulunur ve bu işlem birimindeki işlem öğeleri tarafından paylaşılır. Çekirdek işlevi, genel bellekteki verileri okumak ve yerel arabellekteki karşılık gelen öğeye atamak için genel kimliği ve yerel kimliği kullanır. Aynı atama deyimi üzerinde çalışan tüm iş öğelerini senkronize etmek için, çalışma grubu engeli ve yerel bellek hücumu senkronizasyon noktaları olarak kullanılır. Senkronizasyondan sonra, çekirdek işlevi, yerel arabellekteki veriler üzerinde işlemler gerçekleştirir ve sonucu, genel bellekteki çıktı arabelleğindeki karşılık gelen konumda depolar.

  • 01:30:00 Bu bölümde ders, OpenCL derleyicilerine güvenmeden C işlevlerinin bir aygıtta çekirdekler olarak kullanılmasına izin veren OpenCL'deki yerel çekirdekler kavramını tanıtıyor. Yerel çekirdekleri çağırmak için API, "kutudan çıkarma" adı verilen bir şema kullanılarak argümanları C işlevine iletmek için mekanizma ile birlikte sunulur. Ders, sabit sayıların ve işaretçilerin OpenCL ortamından alınan OpenCL arabellekleri dahil olmak üzere bellek nesnelerine iletilmesini içeren argümanları iletmeye bir örnek sağlar.

  • 01:35:00 Bu bölümde öğretim görevlisi, sıradaki yerel çekirdek API'sini kullanarak OpenCL bellek nesnelerinin bir kullanıcı işlevine nasıl aktarılacağını açıklar. API, geçirilen bellek nesnelerinin sayısını ve ilgili konumlarının bir listede belirtilmesini gerektirir. Bu, etkileşimli geçiş gerektirdikleri için bellek nesnelerinden ayrılan bellek nesneleri ve sabit sayılar için yer tutucuları içerir. Yerleşik çekirdekler aygıta özgüdür ve özel donanım kaynaklarından yararlanır, ancak evrensel değildirler ve farklı aygıtlarda aynı işleve sahip olmayabilirler.

  • 01:40:00 Bu bölümde, bir videodaki komşu kareler arasındaki hareketi tahmin etmek için görüntü işlemede kullanılan OpenCL için şirket içi hareket tahmin uzantısı gibi yerleşik çekirdek işlevlerini öğreniyoruz. Bu uzantı, donanım hızlandırma veya yerleşik ürün yazılımı işlevleri sağlar ve OpenCL web sitesinde daha ayrıntılı olarak keşfedilebilir.
Lecture 5 OpenCL Concurrency Model
Lecture 5 OpenCL Concurrency Model
  • 2018.10.13
  • www.youtube.com
OpenCL Runtime and Concurrency Model (please refer to Chapter 5 of textbook)
 

21. Harita Küçültme Kavramı



21. Harita Küçültme Kavramı

MapReduce kavramı, bir haritalama aşaması ve ardından bir indirgeme aşaması kullanılarak büyük sorunları daha küçük alt problemlere ayırmayı içeren bu videoda açıklanmaktadır. Bu yaklaşım, Google tarafından veri merkezlerindeki bilgisayarlarında büyük miktarda veriyi işlemek için kullanılır. Video, işlemcilerin bağımsız olarak nasıl çalıştığına, işlemcilere üzerinde çalışacakları bazı verileri atadığına ve bu da tamamlandıktan sonra anahtar-değer çiftleri ürettiğine dair bir örnek sunuyor. Anahtar/değer çiftleri, indirgeme aşamasında nihai sonucu elde etmek için bir grup farklı işlemci tarafından işlenir. Bu yaklaşım, iş yükünü birden çok makineye dağıtarak büyük veri kümelerinin verimli bir şekilde işlenmesine olanak tanır.

  • 00:00:00 Bu bölümde, konuşmacı, verimli bir şekilde ele alınabilecek daha küçük sorunları elde etmek için büyük sorunları ayrıştırma bağlamında MapReduce kavramını tartışıyor. Ayrıştırma için, problemin özelliklerine veya donanım sınırlamalarına bağlı olarak birbirinin yerine kullanılan, böl ve fethet ve dağıt ve topla olmak üzere iki ana strateji belirlerler. İlk olarak 2004 yılında Google tarafından önerilen MapReduce yaklaşımının, büyük sorunları daha küçük alt problemlere böldüğünü ve bunları bir haritalama aşaması ve ardından bir azaltma aşaması kullanarak ayrı ayrı işlediğini açıklıyorlar. Google'ın, arama motoru sorgularına ve web sayfalarına hizmet veren veri merkezlerindeki bilgisayarlarında büyük miktarda veriyi işlemek için bu kavramın nasıl kullanıldığını gösteriyorlar.

  • 00:05:00 Bu bölümde, MapReduce yaklaşımı iki aşamada açıklanmaktadır: haritalama ve indirgeme. İlk aşama, işlemcilere üzerinde çalışacakları bazı verilerin atanmasını içerir; bu, tamamlandığında anahtar/değer çiftlerinin üretilmesiyle sonuçlanacaktır. İndirgeme olarak bilinen ikinci aşama, işlemcilerin birinci aşamadan anahtar-değer çiftlerini almasını ve belirli bir "T"ye karşılık gelen değerler üzerinde azaltma gerçekleştirmesini içerir. Bu yaklaşım etkilidir, çünkü orijinal problem alt problemlere bölündüğünde işlemciler bağımsız olarak çalışabilir ve farklı boyutlardaki problemlere göre ölçeklenebilir hale gelir. Video, bu yaklaşımın potansiyel verimliliğini gösteren, işlemcilere atanmış altı bloğa sahip bir girdi kullanılarak bu yaklaşımın nasıl uygulanabileceğine dair somut bir örnek veriyor.

  • 00:10:00 Bu bölümde harita küçültme kavramı anlatılmakta ve işlemcilerin orijinal girdiyi eşit büyüklükte altı parçaya birleştirerek dengeyi sağlamak için nasıl toplama yaptıkları anlatılmaktadır. Her bir anahtar/değer çifti, eşleme işlemi sırasında farklı işlemciler tarafından hemen hemen aynı anda üretilir. Bir sonraki aşama, nihai sonucu elde etmek için bu anahtar değer çiftlerinin bir grup farklı işlemci tarafından işlenmesini içerir. Son olarak, indirgeme aşaması bu anahtar değer çiftlerini birleştirir ve işlemciler, bir anahtar kelime değerine dayalı olarak bazı bağlantıların listesini oluşturur.

  • 00:15:00 Bu bölümde konuşmacı, görevleri paralel olarak yürütülebilecek daha küçük alt görevlere ayırmayı içeren MapReduce'ta eşleme sürecini açıklıyor. Bu, analiz edilmesi gereken her anahtar sözcük için bir liste oluşturarak yapılır ve listedeki her öğe, o anahtar sözcükle ilişkili bir değeri temsil eder. Bu, iş yükünü birden çok makineye dağıtarak büyük veri kümelerinin verimli bir şekilde işlenmesine olanak tanır.
Map Reduce Concept
Map Reduce Concept
  • 2020.06.14
  • www.youtube.com
This video introduce the basic concept of MapReduce
 

22. Harita Küçültme Örneği: WordCount ve Weblink



22. Harita Küçültme Örneği: WordCount ve Weblink

Bu YouTube videosu, büyük bir metin dosyasındaki her kelimenin tekrarını saymak ve web sayfası URL ilişkilerini analiz etmek için MapReduce'un nasıl uygulanabileceğini gösterir. MapReduce, her işlemcinin, belgeyi daha küçük bölümlere ayırmayı içeren eşleme aşamasında belirli anahtar kelimeleri bağımsız olarak hedeflemesine olanak tanır. İndirgeme aşaması, kelime anahtarına göre anahtar-değer çiftlerinin gruplandırılmasını ve her kelimenin toplam görünüş sayısını elde etmek için değerlerin toplanmasını içerir. Web sayfası analizi için eşleme işlemi, anahtar olarak URL ve değerler olarak bağlantılı web sayfalarının bir listesi ile anahtar-değer çiftleri oluşturmayı içerir ve indirgeme aşaması, web sayfaları arasındaki ilişkiyi göstermek için son haritayı oluşturur.

  • 00:00:00 Bu bölümde, MapReduce'un somut bir örneğini iş başında görüyoruz: yüzbinlerce İngilizce kelime içeren büyük bir metin dosyasındaki her bir kelimenin tekrarını saymak. MapReduce için ideal bir kullanım durumudur çünkü farklı anahtar sözcükler bağımsız olarak sayılabilir ve her bir işlemci belirli anahtar sözcükleri hedefler. Eşleme aşaması, belgenin daha küçük parçalara bölünmesini içerir; her işlemci, ilginç sözcüklerin anahtar/değer çiftlerinin oluşumlarını saymak için benzer boyutta bir bölüm alır. İndirgeme aşaması, kelime anahtarına dayalı olarak tüm anahtar-değer çiftlerini gruplandırmayı ve her kelime için toplam görünüm sayısını elde etmek için değerleri toplamayı içerir. Örnek, URL'yi bir anahtar kelime olarak uygulayarak veya farklı web sitelerinin web bağlantısı ilişkilerini analiz ederek web sayfası erişimlerini saymak için kullanılabileceği MapReduce'un çok yönlülüğünü göstermektedir.

  • 00:05:00 Bu bölümde, konuşmacı MapReduce'un çok sayıda web sayfası URL'sini ve aralarındaki ilişkiyi gösteren bir grafik oluşturmak için bağlantılarını analiz etmek için nasıl kullanılabileceğini açıklıyor. Eşleme işlemi, demetlerin daha küçük parçalar halinde gruplandırılmasını ve anahtar olarak URL ile bir anahtar-değer çifti ve anahtardan bağlanacak değerler olarak web sayfalarının bir listesini oluşturmak için bunları eşleme işlemcilerine atamayı içerir. Daha sonra indirgeme aşamasında, farklı işlemciler tarafından birden fazla anahtar işlenebilir ve anahtar-değer çifti, son haritayı oluşturmak ve web sayfaları arasındaki ilişkiyi göstermek için kullanılır.
Map Reduce Example: WordCount and Weblink
Map Reduce Example: WordCount and Weblink
  • 2020.06.14
  • www.youtube.com
This video introduce MapReduce concept with two examples: word count and web link relationship.
 

23. OpenCL cihazında MapReduce ile ilgili hususlar



23. OpenCL cihazında MapReduce ile ilgili hususlar

Bu YouTube videosundaki tartışma, hafıza yapısı, iş organizasyonu ve yerel/küresel indirgemeye odaklanarak MapReduce'un OpenCL cihazlarında kullanımına odaklanıyor. Konuşmacı, OpenCL cihazlarında çok sayıda işleme öğesi kullanmanın avantajını belirtiyor ve büyük veri kümelerini verimli bir şekilde işlemek için MapReduce kullanırken farklı bellek hiyerarşilerinin kullanımını vurguluyor. Ayrıca, MapReduce'un OpenCL cihazlarında kullanımına dahil olan, haritalama sürecini, yerel indirgemeyi, iş öğelerinin senkronizasyonunu, küresel engelleri ve nihai sonuç üretimini kapsayan beş adımı detaylandırıyorlar.

  • 00:00:00 Bu bölümde, OpenCL cihazlarındaki MapReduce'un geleneksel CPU ortamlarından nasıl farklı olduğuna odaklanılmaktadır. Ana fark, hiyerarşik olan ve her biri farklı boyutlara ve veri görünürlüğüne sahip özel, yerel ve küresel bellekten oluşan bellek yapısında yatmaktadır. Özel bellek yalnızca iş öğesinin kendisi tarafından görülebilirken, yerel bellek işlem birimindeki tüm iş öğeleri tarafından görülebilir, ancak birimler arasında görülemez. Genel bellek ise tüm iş öğeleri tarafından görülebilir. OpenCL cihazlarında çok sayıda işleme öğesinden yararlanmak bir fırsat sunar, ancak bellek yapısı dikkate alınmalıdır.

  • 00:05:00 Bu bölümde konuşmacı, OAKLAND veri kümesi gibi sorunları ele almak için OpenCL cihazlarında işlem yapmak için MapReduce kullanımını tartışıyor. Farklı iş öğeleri kullanmanın gerekliliğini açıklarlar ve üzerinde çalışılacak matristeki her bir öğeye hesaplamalar atarlar. Birincil ve yerel bellek de dahil olmak üzere bellek hiyerarşisini kullanmak önemlidir ve konuşmacı, bazı azalmalar için genel bellek yerine yerel belleği kullanmanın yararına dikkat çeker. Çalışma gruplarının nasıl organize edildiğini ve bir iş öğesine atanan her bir veri yığını için eşleme işlemlerinin nasıl gerçekleştirildiğini ayrıntılarıyla anlatırlar. MapReduce'un bu şekilde kullanılması, OpenCL cihazları kullanılarak büyük veri kümelerinin verimli bir şekilde işlenmesine yardımcı olabilir.

  • 00:10:00 Bu bölümde, konuşmacı bir OpenCL aygıtında MapReduce'ta yerel ve küresel indirgeme kavramını tartışıyor. Yerel indirgeme, her işleme elemanı tarafından üretilen anahtar/değer çiftleri üzerinde yapılırken, küresel indirgeme, birden çok çalışma grubunun sonuçlarını genel bellekte birleştirir. MapReduce'u OpenCL cihazlarında uygulamanın zorluğu, eşleme aşaması tarafından üretilen anahtar-değer çiftlerinin sayısının bilinmemesi ve ara sonuçlar için uygun şekilde bellek alanları ayırma ihtiyacının olmasıdır. Ek olarak, yerel etkileşim sonuçları yerel bellekte saklanmalı ve farklı bellek hiyerarşileri dikkate alınmalıdır.

  • 00:15:00 Bu bölümde, konuşmacı OpenCL cihazlarında MapReduce için beş adımı tartışıyor. İlk adım, eşleme sürecini gerçekleştiren iş öğesi grubunu ve yerel indirgeme aşamasının bir bölümünü içerir. İkinci adım, azaltmaları gerçekleştirmeden önce iş öğelerini senkronize etmek için yerel bir engelin yürütülmesini içerir. Üçüncü adım, her gruptaki yerel ID sıfır iş öğesinin, diğer iş öğeleri tarafından üretilen anahtar/değer çiftlerini önceden işlemesini sağlamaktır. Dördüncü adım, tüm çalışanlar işini bitirene kadar daha fazla yürütmeyi önlemek için küresel bir engelin uygulanmasını içerir. Son olarak, beşinci adım, nihai sonucu elde etmek için her bir çalışma grubundan elde edilen sonuçların birleştirilmesini içerir ve bunu yapmadan önce tüm iş öğelerinin bittiğinden emin olunur.
Considerations of MapReduce on OpenCL device
Considerations of MapReduce on OpenCL device
  • 2020.06.14
  • www.youtube.com
This video introduces specifics of implementing MapReduce on OpenCL devices.
 

24. MapReduce Örneği: Demo ile Dizi Arama



24. MapReduce Örneği: Demo ile Dizi Arama

Video, dizi aramayı uygulamaya odaklanarak OpenCL programlama ve MapReduce'un çeşitli yönlerini gösterir. Konuşmacı, yerel niteleyici kullanılarak belleğin nasıl bildirileceğini ve tahsis edileceğini açıklar ve çekirdek işlevinde dinamik bellek ayırmaya izin verilmediğini belirtir. Ayrıca vektör veri türlerini tanıtıyorlar ve bunların öğe bazında toplamayı ve bellek erişimini nasıl basitleştirebileceklerini gösteriyorlar. Ana odak noktası, giriş metninin çalışma öğelerine bölündüğü ve bir anahtar sözcük aramak için bir harita işlevine atandığı MapReduce kullanılarak dize aramanın uygulanmasıdır. Her iş öğesi, metin parçalarını bir desen vektörüyle karşılaştırırken bu işlemi gerçekleştirir. Yerel sonuçlar, çarpışmaları önlemek için atomik artışla elde edilir ve nihai sonuç, her iş öğesinden elde edilen sonuçların toplanmasıyla elde edilir. Konuşmacı ayrıca, gerekli bağımsız değişkenler ve nasıl başlatıldığı da dahil olmak üzere çekirdek işlevinin ayrıntılı bir açıklamasını sağlar.

  • 00:00:00 Bu bölümde, konuşmacı OpenCL'de yerel bellek ayırmayı tartışır ve bunun bir dizi arama çekirdeği işlevi bağlamında nasıl yapılabileceğini gösterir. Yerel bellek, "yerel" niteleyici kullanılarak bildirilir ve bir iç köşeli parantez kullanılarak belirtilir. Konuşmacı, çekirdek işlevinde dinamik bellek ayırmaya izin verilmediğini, bu nedenle ana bilgisayar programında yerel bellek alanı ayırmak için set kernel argümanı API'sinin kullanıldığını not eder. Ek olarak, konuşmacı, aynı türde birden çok öğeye sahip dizilerde daha hızlı ve daha kolay işlemlere izin veren vektör veri türünü tanıtır.

  • 00:05:00 Bu bölümde, konuşmacı eleman bazında toplama için OpenCL çekirdek işlevinde vektör veri türünün nasıl kullanılacağını açıklar. Vektörlerin kullanılması toplama ve atama sürecini basitleştirir ve işlem vektördeki her bir öğeye uygulanır. Vektörlerin başlatılması, açıkça belirli değerlerle veya vektördeki tüm öğeler için tek bir değerin tekrarlanmasıyla da yapılabilir. Konuşmacı ayrıca, özellikle her öğenin bir harf veya bir bayt olduğu bir dizi karakterle çalışırken, kompakt bellek erişiminin vektör türünden nasıl yararlandığını tartışır.

  • 00:10:00 Bu bölümde konuşmacı, dizi aramayı bir demo ile uygulamak için MapReduce'un nasıl kullanılacağını açıklıyor. Arama, 16 karakterlik bir karakter deseni kullanılarak bir giriş metninde gerçekleştirilir. Mesaj vektörünün ilk sekiz harfini kullanarak hızın nasıl kullanıldığını açıklıyorlar ve ayrıca atomlara farklı bir sırada nasıl ulaşılacağını gösteriyorlar. Karakter vektörünün bölümlerine nasıl değer atadıklarını detaylandırıyorlar, örnekler veriyorlar ve girdi metnini arayan çekirdek işlevinin nasıl oluşturulacağını, bu işlevin gerektirdiği argümanları ve nasıl başlatıldığını açıklıyorlar. Son olarak, küresel sonuçların nasıl elde edildiğini ve bu sonuçların ne anlama geldiğini açıklarlar.

  • 00:15:00 Bu bölümde konuşmacı, MapReduce örneğinin dize araması için yerel bellek çiti içindeki başlatma sürecini ve senkronizasyon noktasını açıklar. Orijinal belgedeki karakterler, karşılık gelen anahtar sözcüğü aramak için her gruba belirli bir harf grubu atanacak şekilde gruplara ayrılmıştır. Öğe başına genel kimlik ve karakter, her grubun atanmış çalışması için başlangıç noktasını belirlemek üzere kullanılır. Genel olarak, bu bölüm MapReduce'un teknik yönlerine ve dizi aramadaki uygulamasına ilişkin bilgiler sağlar.

  • 00:20:00 Bu bölümde konuşmacı, bir demo kullanarak dizi araması yapmak için MapReduce uygulamasını açıklamaktadır. Girdi verileri iş öğelerine bölünür ve her iş öğesi, bir metin öbeğinde anahtar sözcük aramak için bir harita işlevine atanır. Konuşmacı, metin parçalarının belleğe nasıl yüklendiğini ve anahtar kelimeyi aramak için karakter penceresinin nasıl taşındığını gösterir. Karşılaştırma için 16 karakterle yüklenmiş bir vektör kullanılır ve sonuç yığın için başka bir vektörde saklanır. Bu süreç her iş öğesi için tekrarlanır ve her iş öğesinden elde edilen sonuçların toplanmasıyla nihai sonuç elde edilir.

  • 00:25:00 Bu bölümde video, kullanıcı tarafından girilen anahtar kelimelere karşılık gelen metin vektörlerinin desen vektörü ile karşılaştırılmasıyla pilin belirli bir bölüme nasıl atandığını açıklamaktadır. Karşılaştırma işlemi, iki vektörün her öğesini karşılaştırarak her öğe için 1 veya 0 üretir. Bir anahtar kelime varsa, karşılaştırmanın sonucu o bölüme atanan pilin değerini belirler. Kontrol vektörünün ilk dört öğesinin anlamlı biti, bir anahtar sözcük olup olmadığını belirler. Koşul doğruysa, yani tüm önemli bitler 1'dir, o zaman bir anahtar kelime bulunur ve yerel sonuç artırılır, bu da programın bir eşleşme bulduğunu gösterir.

  • 00:30:00 Bu bölümde, konuşmacı bir String Search MapReduce örneğinin nasıl çalıştığını açıklar. Kod, her grubun metin içinde bloklara bölünmüş belirli anahtar kelimeleri kontrol ettiği birkaç çalışma grubundan oluşur. Amaç, her blokta anahtar kelimelerden herhangi birinin olup olmadığını bulmaktır. Sonuç doğruysa, çarpışmaları önlemek için yorum atomik artış kullanılarak artırılır. Tüm anahtar kelimeler bir blokta kontrol edildikten sonra, küresel belleğe erişen herhangi bir işlemin tamamlandığından emin olmak için bir bariyer kullanılır. Döngü daha sonra sonraki 16 harflik grubu kontrol etmek için pencereyi sağa kaydırır ve işlem her çalışma grubu için tekrarlanır. Son olarak, yerel sonuç sayacı, çarpışmaları önlemek için atomik ekleme kullanılarak genel sonuca eklenir.

  • 00:35:00 Bu bölümde, konuşmacı Demo ile Dize Arama için bir MapReduce Örneğinin uygulanmasını açıklamaktadır. Yerel belleğin başlatıldığı, sayaçların sıfırlandığı ve programın, ofseti hesaplamak ve metin vektörüne bir seferde 16 bayt yüklemek için Pope ID'yi kullandığı çekirdek işlevi açıklanır. İşlev daha sonra sonuçları karşılaştırır ve her şeyden önce ve indirgeme işlevini kullanarak genel indirgeme gerçekleştirir. GitHub'daki örnek kod gösterilir ve konuşmacı kalıplar, metin faktörü, metin arabelleği, bir öğenin karakteri, orijinal metnin toplam uzunluğu ve görüntünün boyutu gibi bağımsız değişkenleri ana hatlarıyla belirtir. Son olarak, küresel boyutun mevcut kaynaklara ve istenen diziyi bulma sürecinde yer alan biçimsel bilime nasıl bağlı olduğundan bahsediyor.

  • 00:40:00 Bu bölümde öğretim görevlisi, belirli bir metin dosyasında belirli sözcükleri aramak için MapReduce kullanımının örneğini açıklar. Amaç, metin dosyasındaki belirli dört kelimenin geçişini saymaktır. Öğretim görevlisi, sürecin daha iyi anlaşılması için kaynak kodunun ve çalışma zamanının gözden geçirilmesini önerir.
MapReduce Example: String Search with Demo
MapReduce Example: String Search with Demo
  • 2020.06.14
  • www.youtube.com
This video explains the implementation of string search on OpenCL device using MapReduce approach. Vector instructions and operations are briefly explained. ...
 

25. OpenCL Örneği: Radix Sıralaması



25. OpenCL Örneği: Radix Sıralaması

Bu videoda, sıralanan öğelerin gerçek değerleri yerine sayısal gösterime dayalı olarak daha büyük bir sıralama problemini daha küçük alt kümelere bölmeyi içeren taban sıralama kavramı tanıtılmaktadır. Konuşmacı, sekiz sayıyı onaltılık gösterimde en az önemli basamaklarına göre sıralama örneğini gösterir. OpenCL shuffle ve shuffle2 işlevleri, sıralama işlemi sırasında öğeleri verimli bir şekilde yeniden düzenlemek için kullanılır. Video ayrıca OpenCL kullanılarak bir karıştırma işleminin nasıl gerçekleştirileceğini ve taban sıralaması için çekirdek işlevinde karıştırma komutlarının nasıl kullanılacağını açıklar. Ayrıca video, giriş vektörünü ikili basamaklarındaki değerlere göre sıfırlara ve birler grubuna bölerek OpenCL'deki dizileri etkili bir şekilde sıralayan, taban sıralaması sekiz sıralama sekiz adı verilen çekirdek işlevini araştırıyor.

  • 00:00:00 Bu bölümde video, büyük bir sıralama problemini alt kümelere göre sıralayarak daha küçük problemlere bölen taban sıralama kavramını tanıtıyor. Sıralama işlemi, öğelerin kendi değerlerinden ziyade öğelerin sayısal temsiline göre gerçekleştirilir. Konuşmacı, sıralamanın onaltılık gösterimde en önemsiz basamağa dayandığı 8 sayıyı sıralama örneğini gösterir. Sıralama işlemi, sayıların en önemsiz basamaklara göre kovalara yerleştirildiği ve sayılar artan düzende sıralanana kadar diğer basamaklar için tekrarlandığı birkaç yineleme yoluyla yapılır.

  • 00:05:00 Videonun bu bölümünde, konuşmacı bir sayı kümesine sayı tabanı sıralamasının nasıl uygulanacağını, önce sayıları en önemli basamaklarına göre kümeler halinde düzenleyerek gösterir. Daha sonra en önemsiz basamağı kullanarak işlemi tekrarlarlar ve her sayının tüm basamaklarını inceleyene kadar devam ederler. Konuşmacı, taban sıralamasının her adımının aslında bir karıştırma olduğunu ve OpenCL'nin karıştırma işlevlerinin kullanılmasının, sıralama işlemi sırasında öğelerin verimli bir şekilde yeniden düzenlenmesine izin verdiğini not eder. Son olarak, konuşmacı, sıralanması gereken öğelerin indekslerini belirtmek için bir maskenin nasıl kullanılabileceğinin bir örneğini verir ve bu kavramın iki vektör ve bir maske dizisi ile nasıl uygulanacağını gösterir.

  • 00:10:00 Bu bölümde OpenCL'de shuffle fonksiyonu ve shuffle2 fonksiyonunun kullanımı anlatılmaktadır. Karıştırma işlevi, yeni bir çıkış vektörü oluşturmak için verilen maskeye dayalı olarak orijinal değerleri giriş vektörlerinden kaydıran veya karıştıran bir çıkış vektörü oluşturur. shuffle2 işlevi benzerdir ancak bir yerine iki girdi vektörü alır. Maskenin boyutu ve veri türü, dönüş faktörü ile eşleşmelidir ve veri türü, işaretsiz bir tamsayı türü olmalıdır. Ek olarak, döndürülen faktör, giriş vektörü ile aynı veri tipine ve bileşen sayısına sahip olacaktır ve maske vektörünün bileşenlerinde yalnızca belirli sayıda bit önemlidir. Shuffle2'deki K değeri, giriş vektöründeki bileşen sayısına bağlıdır.

  • 00:15:00 Bu bölümde, konuşmacı OpenCL kullanılarak karışık çalma işleminin nasıl gerçekleştirileceğini açıklar. Bir giriş vektörü ve bir maske alan ve maske tarafından giriş vektöründen seçilen değerlere dayalı olarak bir vektör çıkaran bir karıştırma işlemi örneği sağlarlar. Ayrıca, çıkış vektörünü oluşturmak için giriş vektöründen hangi değerlerin seçileceğini belirlemek için maske değerlerinin nasıl kullanılacağını da açıklarlar. Konuşmacı, harfleri içeren iki girdi vektörü içeren ikinci bir örnek sağlar ve girdi vektörlerinden seçilen değerlere dayalı olarak çıktı vektörünü oluşturmak için maskenin nasıl kullanılacağını açıklar.

  • 00:20:00 Bu bölümde video, taban sıralaması için OpenCL örneğinin çekirdek işlevinde karıştırma yönergelerinin nasıl kullanılacağını tartışır. Çekirdek işlevi "karıştırma testi" olarak adlandırılır ve iki argüman alır: bir kayan nokta vektörü ve bir karakter 16 elemanlı vektör. Video, girdi olarak dört elemanlı bir kayan nokta vektörü kullanarak sekiz kayan noktalı sayı içeren bir çıktı vektörü oluşturmak için maske olarak bir tamsayı vektörü kullanmanın bir örneğini gösterir. Video, en önemsiz ikili basamağa bakarak ve bunu yeni bir vektör oluşturmak için tek sayıları seçmek için kullanarak çekirdek işlevinde sıralamanın nasıl çalıştığını açıklamaya devam ediyor.

  • 00:25:00 Videonun bu bölümünde, konuşmacı bir vektördeki öğelerin en önemsiz basamağına dayalı bir maskenin nasıl oluşturulacağını açıklıyor. Öğeleri belirlenen vektörlere kopyalayarak ve öğelerin en az anlamlı hanesine dayalı bir maske oluşturarak, işleve karıştır, orijinal ve belirlenmiş vektörlerden değerleri almak ve yeni bir vektör oluşturmak için kullanılabilir. Bu işlem, temel sayıları ikili basamaklarına göre 0 ve 1 olmak üzere iki kümeye ayırır.

  • 00:30:00 Bu bölümde, giriş vektörünü ikili basamaklarındaki değerlere göre sıfırlar ve birler grubuna bölerek çalışan, sayı tabanı sıralama sekiz sort sekiz adlı çekirdek işlevini öğreniyoruz. Çekirdek işlevi, sıfır sayım ve bir sayım olmak üzere iki sayaç kullanarak veri dizisini sıralamak için arabellek olarak kullanılan bir birleşim yapısını tanımlar. CMP değeri bir, değerlerin hangi ikili basamağın karşılaştırılacağını belirlemek için kullanılır ve işlev, sıralanan öğeleri depolamak için videodaki şemaya karşılık gelen maske dizileri ve veriler olmak üzere iki dizi kullanır. For döngüsünün, sıralanacak sekiz sayı üzerinde çalışmak için sekiz yinelemesi vardır ve J, sıfır ve birler kovalarına kaç öğenin girmesi gerektiğini belirlemek için sıfırdan sekize gider. Sayı tabanı sıralama sekiz sıralama sekiz, OpenCL'de dizileri sıralamanın etkili bir yoludur.

  • 00:35:00 Bu bölümde konuşmacı, bir veri kümesindeki değerlerin her konumdaki karşılık gelen basamağa göre sıralanmasını içeren taban sıralamasının nasıl çalıştığını açıklar. İşlem en önemsiz basamaktan başlar ve en anlamlı basamağa doğru ilerler. Konuşmacı, son çıkış vektörünü oluşturmak için bir karıştırma işlemi gerçekleştirmeden önce, birler ve sıfırlarla biten değerlerin farklı dizilere nasıl ayrıldığını göstermek için bir örnek kullanır. İşlem diğer basamaklar için tekrarlanır ve nihai sonuç genel bir arabellekte saklanır.
OpenCL Example: Radix Sort
OpenCL Example: Radix Sort
  • 2020.03.26
  • www.youtube.com
OpenCL Example: Radix Sort using Shuffle Function
Neden: