Ticarette OpenCL - sayfa 4

 

AMD Developer Central: OpenCL Teknik Genel Bakış. 2. Bölüm: OpenCL™ nedir? (devam etti)



AMD Developer Central: OpenCL Teknik Genel Bakış. 2. Bölüm: OpenCL™ nedir? (devam etti)

Bu videoda Justin Hensley, uygulamaları hızlandırmak için OpenCL kullanırken anlaşılması önemli olan OpenCL'nin platform ve bellek modellerini tartışıyor. Bir ana bilgisayarın, tek bir yönerge çoklu veri modelinde kod yürüten bilgi işlem birimlerine sahip GPU'lar veya çok çekirdekli işlemciler gibi bir veya daha fazla OpenCL cihazına bağlı olduğunu açıklıyor. İş öğeleri özel belleğe sahipken, çalışma grupları yerel belleği paylaşırken, her cihazın genel ve sabit belleği vardır ve geliştiricilerin maksimum performans elde etmek için bellek senkronizasyonunu ve verileri açık bir şekilde yönetmesi gerekir. Ayrıca Hensley, aygıtlara iş göndermek, verileri senkronize etmek ve profil verilerini göndermek için kullanılan aygıtlar, bağlamlar, kuyruklar, arabellekler, görüntüler, programlar, çekirdekler ve olaylar gibi OpenCL nesnelerini tartışır. Son olarak, bir OpenCL programının üç kolay adımda nasıl yürütüleceğini özetliyor: program ve çekirdek nesneleri oluşturmak, bellek nesneleri oluşturmak ve uygun çekirdek yürütme sırasını sağlamak için olaylarla komut kuyrukları oluşturmak.

  • 00:00:00 Bu bölümde Justin Hensley, uygulamaları hızlandırmak için OpenCL kullanırken anlaşılması önemli olan OpenCL'nin platform ve bellek modellerini açıklıyor. Bir ana bilgisayar, tek bir yönerge çoklu veri modelinde kod yürüten bilgi işlem birimlerine sahip bir veya daha fazla OpenCL cihazına (GPU, DSP veya çok çekirdekli işlemci) bağlıdır. Bellek açısından, ana bilgisayar işlemcisi yalnızca CPU tarafından erişilebilen bir belleğe sahipken, bilgi işlem cihazı genel ve sabit belleğe (senkronize edilmemiş) sahiptir ve her iş öğesinin yalnızca kendisinin erişebileceği kendi özel belleği vardır. Çalışma gruplarının paylaşılan bir yerel belleği vardır ve geliştiriciler, cihazlarından maksimum performans elde etmek istiyorlarsa, bellek senkronizasyonunu ve verileri açıkça yönetmelidir. Son olarak Hensley, işi cihazlara göndermek, verileri senkronize etmek ve profil verilerini göndermek için kullanılan cihazlar, bağlamlar, kuyruklar, arabellekler, resimler, programlar, çekirdekler ve olaylar gibi OpenCL nesnelerini tartışıyor.

  • 00:05:00 Bu bölümde, konuşmacı bir OpenCL programının nasıl yürütüleceğini üç kolay adımda açıklıyor. İlk olarak, kaynak kodu oluşturmak için program nesneleri ve bağımsız değişkenlerle çeşitli cihazlarda çalıştırılacak kodu içeren çekirdek nesneleri yaratırsınız. İkinci olarak, görüntüler veya arabellekler gibi bellek nesneleri yaratırsınız. Üçüncüsü, komut kuyrukları oluşturursunuz ve bunları farklı cihazlar için işi kuyruğa almak için kullanırsınız, ancak iş emri yerinde veya bozuk olabilir. Bu nedenle olaylar, bağımlılıklar mevcut olduğunda çekirdeklerin ihtiyaç duyulan sırada yürütülmesini sağlamak için kullanılır.
Episode 2: What is OpenCL™? (continued)
Episode 2: What is OpenCL™? (continued)
  • 2013.05.27
  • www.youtube.com
In this video, you continue to learn about OpenCL™. We describe the details about the OpenCL™ platform and memory models. Topics covered include compute devi...
 

AMD Developer Central: OpenCL Teknik Genel Bakış. 3. Bölüm: Kaynak Kurulumu



AMD Developer Central: OpenCL Teknik Genel Bakış. 3. Bölüm: Kaynak Kurulumu

OpenCL öğretici serisinin 3. Bölümünde, konuşmacı OpenCL'de kaynak kurulumu ve yönetimini derinlemesine inceler ve bellek nesneleri, bağlam, aygıtlar ve komut sıraları gibi konuları kapsar. Görüntülere erişme ve bellek ayırma süreci de, okuma ve yazma görüntü çağrılarına ve desteklenen biçimlere odaklanılarak tartışılır. Veri transferinin tamamlanmasını garanti etmek için OpenCL olay yönetim sisteminin nasıl kullanılabileceğine dair bir açıklama ile senkronize ve asenkron bellek işlemlerinin özellikleri incelenir. Son olarak, kullanıcılara, algoritmaları için en iyi cihazı seçmek üzere CL cihaz bilgisi al çağrısıyla cihaz bilgilerini sorgulamaları önerilir.

  • 00:00:00 Bu bölümde, AMD'den Justin Hensley, özellikle bellek nesneleri, bağlam ve aygıt kurulumuna odaklanarak OpenCL'de kaynak tahsisini tartışıyor. Kullanılabilir cihazları bulmak için sistemin nasıl sorgulanacağını, paylaşılan bir bağlamın nasıl oluşturulacağını ve cihazlarla konuşmak için komut kuyruklarının nasıl kurulacağını açıklıyor. Hensley ayrıca, bir CPU'nun birden çok çekirdeğinin tek bir OpenCL aygıtı olarak kabul edildiğini ve farklı bağlamlardaki aygıtların verileri paylaşamayacağını not eder. Bir algoritma için en iyi cihazı seçmek üzere kullanıcılar, hesaplama birimlerinin sayısını, saat frekansını, bellek boyutunu ve desteklenen uzantıları belirlemek için CL get device info çağrısıyla cihaz bilgileri için OpenCL çalışma zamanını sorgulayabilir. Son olarak, Hensley arabellekleri basit bellek parçaları olarak ve görüntüleri opak 2D ve 3D formatlı veri yapıları olarak tanımlar.

  • 00:05:00 Bu bölümde video, OpenCL'nin görüntüleri nasıl işlediğini ve görsellere okuma ve yazma görüntü çağrıları aracılığıyla erişmenin nasıl gerekli olduğunu açıklar. Bir görüntünün formatı ve veri örnekleyicisi ayrıca tartışılır ve desteklenen formatları belirlemek için CL get destekli image formats çağrısının nasıl kullanılması gerektiği tartışılır. Bir görüntü arabelleği tahsis etmek için biçim ve boyut ayarlanır ve giriş ve çıkış verileri için bir arabellek nesnesi oluşturmak üzere CL create buffer çağrısı kullanılır. Sırayla okunan CL ve kuyruk sağ arabelleğindeki CL, sırasıyla bellek nesnelerinden veri okumak ve bunlara veri yazmak için kullanılan komutlardır. Bir bellek bölgesinin eşlenmesi gerekiyorsa
    ana bilgisayar adres alanına, kuyruk eşleme arabelleğindeki CL kullanılır. Son olarak, CLN kuyruk kopyalama arabelleği, iki bellek nesnesi arasında belleği kopyalamak için kullanılır.

  • 00:10:00 Bu bölümde konuşmacı, verilerin yalnızca aynı içerik içinde tahsis edilen bellek nesneleri ile paylaşılabileceğini ve tüm işlemlerin senkron veya asenkron olarak yapılabileceğini açıklar. Engelleme çağrısı CL true olarak ayarlandığında eşzamanlı işlemler gerçekleştirilir; bu, gerçek bellek işlemi gerçekleşene kadar veri aktarımının engelleneceği anlamına gelir. Bu, belleğin konumuna bağlı olarak biraz zaman alabilir. Alternatif olarak, CL false ile eşzamansız bir çağrı olur ve kullanılmadan önce belleğin tamamen kopyalanmasını garanti etmek için açık CL olay yönetim sistemini kullanmak gerekir.
Episode 3: Resource Setup
Episode 3: Resource Setup
  • 2013.05.27
  • www.youtube.com
In this video, you learn about resource allocation, resource setup and how to setup the OpenCL™ runtime. Topics include choosing devices, creating contexts a...
 

AMD Developer Central: OpenCL Teknik Genel Bakış. Bölüm 4: Çekirdek Yürütme



AMD Developer Central: OpenCL Teknik Genel Bakış. Bölüm 4: Çekirdek Yürütme

Bu bölümde Justin Hensley, çekirdek nesnelerinin belirli bir çekirdek işlevi içerdiğini ve çekirdek niteleyicisiyle bildirildiğini açıklayarak OpenCL'de çekirdek yürütme konusunu ele alıyor. Çekirdek bağımsız değişkenlerini ayarlamak ve çekirdeği kuyruğa almak da dahil olmak üzere, bir çekirdeği yürütmek için gereken adımları parçalara ayırır. Hensley, birden fazla çekirdeği yönetmek ve senkronizasyon sorunlarını önlemek için olayları kullanmanın önemini vurguluyor ve devam etmeden önce olayların tamamlanmasını beklemek için CL beklemeyi kullanmayı öneriyor. Video ayrıca yürütmesi en çok zaman alan çekirdekleri optimize etmek için uygulamanın profilini çıkarma hakkında ayrıntılara giriyor.

  • 00:00:00 Bu bölümde Justin Hensley, OpenCL'de çekirdek yürütmeyi tartışıyor. Çekirdek nesnelerinin bir programda belirli bir çekirdek işlevini kapsüllediğini ve çekirdek niteleyicisiyle bildirildiğini açıklıyor. Program nesnesi, program kaynağını veya diskten önceden derlenmiş ikiliyi ve bir aygıt listesini kapsar. Program nesnesi oluşturulduktan sonra, kullanıcı onu çalışma zamanında sahip oldukları cihazlar için derleyebilir. Çekirdek oluşturulduktan sonra, yürütme için çekirdek bağımsız değişkenlerini ayarlamak ve çekirdeği kuyruğa almak olan iki temel adımla yürütülmesi gerekir. Argümanları ayarlamak için kullanıcı, çalıştırılması gereken çekirdek olan ilk argümanla "CL Set Kernel Arg" adlı işlevi kullanır.

  • 00:05:00 Bu bölümde, video bağımsız değişkenlerin boyutunun nasıl ayarlanacağını ve çekirdeğin nasıl çalıştırılacağını açıklar. Kullanılan örnek, belirli bir boyuttaki bir görüntü yüksekliğine sahip bir görüntüye ayarlanmış global boyuta sahip görüntülerin işlenmesidir. Video, kuyruklardaki OpenCL çalışma zamanının görevleri eşzamansız olarak açıkladığını, bu nedenle yürütme durumunu izlemek için olayları kullanmak programcıya kalmıştır. Video ayrıca komutları senkronize etmenin ve olayları kullanarak kuyruklar arasında açıkça senkronize etmenin farklı yollarını da açıklıyor. Video, açık bağımlılık sorunlarından kaçınmak için olayları kullanmanın önemini açıklayan bir cihaz ve bir sıra ve iki cihaz ve iki sıra örnekleri sağlar.

  • 00:10:00 Bu bölümde Justin Hensley, OpenCL kullanırken çekirdeklerin ve olayların nasıl yönetileceğini tartışıyor. Birden çok çekirdeği yönetirken ve senkronizasyon sorunlarını önlerken olayları kullanmanın önemli olduğunu açıklıyor. Devam etmeden önce tüm olayların tamamlanmasını bekleyen olaylar için CL beklemeyi ve OpenCL çalışma zamanı tarafından daha sonra kullanılmak üzere kuyruklarda bir blok noktası olan ve uygulamanın engelleme olmadan çalışmaya devam etmesine izin veren olaylar için kuyrukta beklemeyi önerir. Ek olarak, geliştiricilerin yürütmesi en çok zaman alan çekirdekleri optimize edebilmesi için CL get olay profil oluşturma bilgisi uygulamanın profilini çıkarmak için kullanılabilir.
Episode 4: Kernel Execution
Episode 4: Kernel Execution
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the execution and synchronization of OpenCL™ kernels. Topics include program and kernel objects, compiling and executing kerne...
 

AMD Developer Central: OpenCL Teknik Genel Bakış. 5. Bölüm: OpenCL™ C ile Programlama



AMD Developer Central: OpenCL Teknik Genel Bakış. 5. Bölüm: OpenCL™ C ile Programlama

Bu video, iş öğesi işlevleri, çalışma grubu işlevleri, vektör türleri ve yerleşik senkronizasyon işlevleri dahil olmak üzere OpenCL™ C dilinin çeşitli özelliklerini tartışır. Video, verimli paralel kod yazma ve çalışma grupları arasında bellek paylaşımı için doğru adres alanı niteleyicilerini kullanmanın önemini vurgulamaktadır. Vektör türleri kavramı, çekirdek işaretçi bağımsız değişkenleri, yerel değişkenler ve program genel değişkenleri için doğru bellek alanının kullanımıyla birlikte ayrıntılı olarak tartışılır. Ek olarak, yerleşik matematik işlevleri ve bariyerler ve memfence'ler gibi çalışma grubu işlevleri, çalışma zamanında bu işlevlerin kontrol edilmesi için bir öneri ile kapsanmaktadır.

  • 00:00:00 Bu bölümde, AMD'den Dustin Hensley, iş öğesi işlevleri, çalışma grubu işlevleri, vektör türleri ve yerleşik senkronizasyon işlevlerini içeren OpenCL™ C dil özelliklerinden bahsediyor. OpenCL, standart C99 başlıkları, işlev işaretçileri, özyineleme, değişken uzunluklu diziler ve bit alanları kısıtlamaları olmaksızın ISO C99'u temel alır. OpenCL ile, çalışma grupları arasında belleğin paylaşılmasına olanak tanırken verimli paralel kod yazmaya izin veren adres alanı niteleyicileri vardır. Ek olarak, yerleşik görüntü işlevleri aracılığıyla görüntülere optimize edilmiş erişim ve çalışma zamanı bilgilerine erişmek için yerleşik çalışma zamanı işlevleri vardır. Hensley, iş öğesi işlevlerini kullanan basit bir veri paralel çekirdeği gösterdi ve bu çekirdeği oluşturmak için farklı OpenCL işlevlerinin ve değişkenlerinin nasıl kullanılabileceğini gösterdi.

  • 00:05:00 Bu bölümde OpenCL'deki vektör türleri kavramı tartışılmaktadır. Bu vektör türleri, farklı çalışma zamanlarında taşınabilir olacak şekilde tasarlanmıştır ve onları Hindistan'da güvenli kılan belirli özelliklere sahiptir, vektör uzunluğunda hizalanmıştır ve yerleşik işlevlere sahiptir. Ardından video, bir vektör sabit değeri oluşturma ve vektörün belirli bileşenlerini seçme gibi çeşitli vektör işlemleri örneklerini gösterir. Ek olarak, OpenCL'de birkaç farklı adres alanı olduğu ve çekirdek işaretçi argümanları, yerel değişkenler ve program global değişkenleri için doğru olanı kullanmanın önemli olduğu belirtilmektedir. Bir bellek alanı belirtilmemesi, varsayılanın özel olarak ayarlanmasına ve sorunlara neden olabilir.

  • 00:10:00 Bu bölümde, OpenCL'de global, yerel veya özel bellek alanlarından başka bir bellek alanına işaretçiler kullanılarak verilerin dönüştürülmesine izin verilmediği açıklanmaktadır. Gerekli bellek alanları için verilerin açık bir şekilde kopyalanması gereklidir. Anlambilim ve dönüştürmelerle ilgili olarak, skaler ve işaretçi dönüştürmeleri için C99 kurallarına uyulur ve vektör türleri için örtük dönüştürmelere izin verilmez. Açık olmanın önemi, işlemesi için makineye güvenmek yerine, işlemde gerçekleştirilen yuvarlama türünü belirlemek için belirli işlevler kullanılarak vurgulanır. OpenCL'nin günlük işlevi gibi yerleşik matematik işlevleri, belirsiz C99 kitaplığı uç durumlarını daha verimli bir şekilde işlemek için tam kesinlik, yarı kesinlik ve yerel işlev gibi farklı özellikler sunar ve bu alt çizgi türünü kullanarak farklı veri türleri arasında geçiş yapmak için farklı yöntemler mevcuttur. bir türü başka bir türe dönüştürmek.

  • 00:15:00 Bu alıntıda, konuşmacı OpenCL C'nin dahili çalışma grubu fonksiyonlarını ve uzantılarını tartışıyor. Bu fonksiyonlar, belleğin senkronizasyonuna izin veren bariyerler ve Memphis'ler gibi senkronizasyon araçlarını içerir. Konuşmacı ayrıca, tüm öğelerin çarpmayacağı bir engel oluşturmak yerine, bir çalışma grubundaki tüm çalışma öğelerini aynı işlevi gerçekleştirmek için kullanmanın öneminden bahseder. Ek olarak, konuşmacı, atomik işlevler ve derleme zamanında yuvarlama modlarının seçilmesi dahil olmak üzere çeşitli uzantılardan bahseder. Konuşmacı, bu işlevler ve uzantılar hakkında daha fazla bilgi edinmek için teknik özelliklere gitmenizi ve bunları çalışma zamanında kontrol etmenizi önerir.
Episode 5: Programming with OpenCL™ C
Episode 5: Programming with OpenCL™ C
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the OpenCL™ C kernel language. Topics include work items and work groups, data types, vector operations, address spaces, type ...
 

GPU çalışması için OpenCL nasıl kullanılır?



GPU çalışması için OpenCL nasıl kullanılır?

Video, karta bağlı olarak CUDA veya belirli grafik sürücülerinin gerekli kurulumuyla Windows'taki çoğu yeni grafik kartında çalışabilen açık standart bir araç olarak OpenCL'yi tanıtıyor. Konuşmacı basit bir programı, bir çekirdek oluşturma sürecini, veriler için arabellekleri, çekirdek bağımsız değişkenlerini ve genel çalışma boyutunu ayarlamayı ve iş yükünü aygıtta OpenCL'de çalıştırmayı CUDA ile karşılaştırarak anlatır. GPU çalışması için OpenCL'de bir çekirdek oluşturma, okuma arabelleğini kuyruğa alma, belleğin tahsisini kaldırma ile ilgili parametreler, hesaplamaları kontrol etmek için örnek kodlarla açıklandı. Sunucu, OpenCL kullanarak gri tonlamalı görüntülere ince bulanıklık uygulayan küçük bir programı sergileyerek, OpenCL'nin CUDA'dan daha fazla ortak koda sahip olduğunu ancak farklı grafik kartlarına uygulanabilen açık ve standart bir çözüm olduğunu ve üreticisinden bağımsız olarak farklı sistemlerde yeniden kullanılabileceğini vurguluyor.

  • 00:00:00 Bu bölümde, konuşmacı OpenCL'yi tanıtıyor ve karta bağlı olarak ya CUDA ya da belirli grafik sürücüsünü yükleme gereksinimiyle Windows'taki en yeni grafik kartlarıyla çalışabilen açık bir standart olduğunu tartışıyor. Konuşmacı daha sonra basit bir program sunar ve CUDA ile karşılaştırarak OpenCL'de nasıl çalıştığını açıklar. Aygıtta iş yükünü çalıştırmadan önce bir çekirdek oluşturma, veriler için arabellekler oluşturma ve çekirdek argümanlarını ve genel çalışma boyutunu ayarlama sürecinden geçerler.

  • 00:05:00 Bu bölümde, konuşmacı GPU çalışması için OpenCL'de bir çekirdek oluşturmaya dahil olan parametreleri açıklıyor. Global iş boyutu parametresi çalışmak istediğiniz birim sayısı iken, yerel iş boyutu her bir birimde ne kadar yapmak istediğinizdir. Global çalışma boyutunun yerel çalışma boyutunun birkaç katı olması gerekir ve global yerel çalışma boyutunu belirtmeden çalışabilseniz de, üzerinde çalıştığınız boyutları bilmeniz için her ikisini de ayarlamak daha iyidir. Konuşmacı daha sonra kuyruğa alma okuma arabelleğini, belleğin nasıl yeniden tahsis edileceğini açıklamaya devam eder ve tüm hesaplamaların doğru yapıldığını kontrol etmek için bir örnek kod sağlar. Son olarak, konuşmacı örneklerini bir görüntü üzerinde bulanıklık oluşturan bir iş yüküyle karşılaştırarak parametreleri ve demetlerin kullanımını gösterir.

  • 00:10:00 Bu bölümde, konuşmacı önceki bir örnekteki kod değişikliklerini açıklıyor ve bir görüntü üzerinde ince bir bulanıklık gerçekleştirecek bir çekirdek sunuyor. Farklı boyutlarda işaretçiler ve arabellekler oluşturduktan sonra, konuşmacı belleği geri getirmeden ve işaretçileri serbest bırakmadan önce çekirdeğe bağımsız değişkenler ayarlar. Son olarak, konuşmacı gri tonlamalı görüntüleri okur, pikselleri sonuca geri ayarlar ve gri tonlamalı görüntüyü yazar.

  • 00:15:00 Bu bölümde sunum yapan kişi, OpenCL kullanarak gri tonlamalı bir görüntüye ince bir bulanıklık uygulayan küçük bir program sergiliyor. Sunum yapan kişi, OpenCL'nin CUDA'ya kıyasla daha fazla standart koda sahip olduğunu belirterek, tüm çekirdek programını ve komut kuyruğu değişkenlerini düzenli tutmak için bir sınıf veya nesnenin kullanılmasını önerir. Ancak sunum yapan kişi, OpenCL'nin farklı grafik kartlarında çalışan ve belirli bir marka veya üreticiye bağlanmadan farklı sistemlerde yeniden kullanılabilen açık ve standart bir çözüm olduğunun altını çiziyor. Genel olarak sunum yapan kişi, GPU çalışması için OpenCL kullanımına ilişkin yararlı bir giriş sağlar.
How to use OpenCL for GPU work
How to use OpenCL for GPU work
  • 2018.03.04
  • www.youtube.com
We use OpenCL to run workloads on GPU and try a simple blur filter.Git repositoryhttps://github.com/kalaspuffar/openclPlease follow me on Twitterhttp://twitt...
 

EECE.6540 Heterojen Hesaplama (Massachusetts Lowell Üniversitesi)



1. Örneklerle Paralel İşleme Kısa Tanıtım

Bu video, örneklerle birlikte paralel işlemeye kısa bir giriş sağlar. Konuşmacı, paralel hesaplamanın daha büyük bir görevi paralel olarak yürütülecek daha küçük alt görevlere bölmeyi içerdiğini açıklıyor. Bunu başarmak için iki ana strateji, böl ve fethet ve dağıt ve topla. Video, insan duyuları, sürücüsüz arabalar ve hücre büyümesi gibi doğası gereği pek çok paralelliğe sahip doğal ve insan yapımı uygulamaların örneklerini sunar. Video ayrıca paralel işlemenin faydalarını tartışıyor ve bunun sıralamaya, vektör çoğaltmaya, görüntü işlemeye ve bir metin gövdesinde bir karakter dizisinin geçiş sayısını bulmaya nasıl uygulanabileceğini gösteriyor. Son olarak video, paralel kaynaklardan elde edilen sonuçları toplamak ve işlemek için toplama işlemi olarak da bilinen indirgeme sürecini tanıtıyor.

  • 00:00:00 Bu bölümde, konuşmacı paralel bilgi işlem kavramını tanıtıyor ve paralel olarak yürütülecek daha büyük bir görevi daha küçük alt görevlere bölmeyi içerdiğini açıklıyor. Bunu başarmak için iki ana strateji, böl ve fethet ve dağıt ve topla. Konuşmacı, insan duyuları, sürücüsüz arabalar ve hücre büyümesi gibi doğası gereği pek çok paralellik içeren doğal ve insan yapımı uygulamalardan örnekler verir. Ek olarak, konuşmacı bir sıralama problemine örnek verir ve böl ve fethet stratejisi kullanılarak bu probleme nasıl yaklaşılabileceğini açıklar.

  • 00:05:00 Bu bölümde, konuşmacı, örnek olarak birleştirme sıralama kullanarak sıralamadan başlayarak iki paralel işleme örneğini tartışıyor. Uzun sıralanmamış tamsayı listeleri, grup başına iki tam sayıdan oluşan daha küçük alt problemlere bölünür ve dört hesaplama birimi, nihai sıralanmış tamsayı dizisini elde etmek için alt problemleri haritalandırır ve karşılaştırır. Tartışılan ikinci örnek, her çarpma işlemi diğerlerinden bağımsız olduğu için doğası gereği veri paralel olan vektör çarpmasıdır. Bu problemin düşük aritmetik yoğunluğu vardır, bu da onu gerçekleştirmeyi basit ve hızlı hale getirir. Konuşmacı ayrıca, farklı türde işleme problemlerinde hesaplama ve bellek erişimi arasındaki ödünleşimi vurgulamak için aritmetik yoğunluk kavramından kısaca bahseder.

  • 00:10:00 Bu bölümde, konuşmacı paralel işlemenin faydalarını ve bilgi işlem kaynaklarının verimli kullanımına nasıl izin verdiğini tartışıyor. Paralel işleme ile, verileri sürekli olarak yükleyip boşaltmaya gerek kalmadan aynı anda birden fazla hesaplama yapabileceğinizi açıklıyor. Birden fazla bilgi işlem biriminin farklı veriler üzerinde bağımsız olarak çalıştığı görev paralelliği kavramı tanıtıldı. Görüntü işleme örneği, hesaplamayı en üst düzeye çıkarmak için verilerin birden çok işlevsel birimden oluşan bir ardışık düzenden nasıl geçirilebileceğini göstermek için kullanılır. Paralel işleme uygulayarak, bilgi işlem birimleri aynı anda çalışabilir, bekleme sürelerini azaltabilir ve hesaplama hızını artırabilir.

  • 00:15:00 Bu bölümde, paralel işleme kavramı, bir metin gövdesinde bir karakter dizisinin geçiş sayısını bulma örneği kullanılarak daha ayrıntılı olarak açıklanmaktadır. Problem, paralelleştirilebilen bireysel kelime karşılaştırması yoluyla yapılabilecek olası eşleşmelerin karşılaştırmasına bölünebilir. Karşılaştırma, her harfi paralel olarak karşılaştırarak daha ayrıntılı olarak da yapılabilir. Veri seti, aynı işlemi paralel olarak gerçekleştirmek için daha küçük birimlere bölünerek karşılaştırma görevini oldukça paralel hale getirir.

  • 00:20:00 Bu bölümde, toplama işlemi olarak da bilinen indirgeme işlemi olan paralel işlemenin ikinci aşamasını öğreniyoruz. Burada toplama aşaması, bireysel rakiplerden karşılaştırma sonuçlarını toplar ve bunları son işlem için toplar. Nihai sonuç, paralel kaynaklardan ara sonuçların toplanması ve toplanmasıyla üretilir. Karşılaştırma birimlerinden elde edilen çıktılar bir eşleşme gösteriyorsa, tüm bu çıktılar toplandıktan sonra elde edilen nihai sayı, bir kelimenin orijinal metinde kaç kez geçtiğini gösterir.
Brief Introduction to Parallel Processing with Examples
Brief Introduction to Parallel Processing with Examples
  • 2020.05.21
  • www.youtube.com
This video starts the series on Heterogeneous Computing. In this video we introduce the concept of parallel processing with some examples.If you are interest...
 

2. Eşzamanlılık, Paralellik, Veri ve Görev Ayrıştırmaları



2. Eşzamanlılık, Paralellik, Veri ve Görev Ayrıştırmaları

Video, eşzamanlılık ve paralellik kavramlarının yanı sıra görev ve veri ayrıştırmalarının kullanımı ile paralellik ve eşzamanlılık için veri ayrıştırma tekniklerini derinlemesine inceler. Amdahl Yasası, görevleri birden fazla işlemci üzerinde çalıştırırken teorik hızlanmayı hesaplamanın bir yolu olarak araştırılır. Görev bağımlılığı grafiklerinin önemi, bir problemi alt görevlere ayırırken görevler arası bağımlılıkları belirlemede vurgulanır. Girdi verileri ve satır vektörü bölümleme gibi veri ayrıştırma yöntemlerinin, hesaplamayı gerçekleştirmek için yararlı olduğu belirtilir. Atomik işlemler ve senkronizasyon, tüm alt görevler tamamlandıktan sonra doğru sonucu elde etmek için hayati olarak tanımlanır.

  • 00:00:00 Bu bölümde video, eşzamanlılık ve paralellik kavramlarını tanıtıyor. Eşzamanlılık, farklı işlemcilerde veya hatta zaman paylaşım teknikleri kullanan tek bir işlemcide olabilen iki veya daha fazla etkinlik aynı anda gerçekleştiğinde ortaya çıkar. Öte yandan paralellik, kesinlikle iki etkinliğin aynı anda CPU'lar veya FPGA'lar gibi farklı donanım yürütme birimlerinde yürütülmesi anlamına gelir. Video ayrıca görevleri birden fazla işlemci üzerinde çalıştırırken teorik hızlanmayı hesaplamak için kullanılan Amdahl Yasasını da tartışıyor. Bazı görevlerin seri olarak kalması gerekse de, paralel çalışacak şekilde yeniden tasarlanabilen görevler, GPU'lar, FPGA'lar veya çok çekirdekli işlemciler gibi işlem birimleri kullanılarak gerçekleştirilebilir.

  • 00:05:00 Bu bölümde, konuşmacı paralel bilgi işlem kavramını ve bunun CPU mimarilerinde, özellikle Intel'in Pentium işlemcilerinde nasıl uygulandığını tartışıyor. Geleneksel işlemci mimarisinde, yönerge düzeyinde paralelliğin genellikle bağımsız yönergeleri aynı anda yürütmek için kullanıldığını ve bunun sonucunda performansın arttığını açıklıyorlar. Bununla birlikte, sınıflarında görev ve veri paralelliğine ve bu üst düzey paralelliklerin algoritmalar ve yazılım dizileri kullanılarak nasıl kullanılacağına odaklanırlar. Bir algoritmayı bireysel görevlere ayırmayı içeren görev ayrıştırma kavramını ve bir veri kümesini paralel olarak çalıştırılabilen ayrı parçalara bölmeyi içeren veri ayrıştırma kavramını tanıtırlar.

  • 00:10:00 Bu bölümde video, görev bağımlılığı grafikleri kavramını ve bunların bir sorunu alt görevlere ayrıştırırken görevler arasındaki ilişkileri tanımlamada nasıl yararlı olduğunu tartışıyor. Görevlerin bağımlılıkları yoksa paralel olarak yürütülebilir ve bu da daha verimli işlemeye olanak tanır. Video ayrıca, verilerin hesaplama için farklı görevlere bölünmesini içeren veri ayrıştırma kavramını da tanıtıyor. Görüntü evrişimi ve matris çarpımı örnekleri, çıktı verilerinin, verilerin farklı gruplara veya bölümlere nasıl ayrıştırılabileceğini belirlemek için nasıl kullanılabileceğini gösterir.

  • 00:15:00 Bu bölümde, konuşmacı paralellik ve eşzamanlılık için farklı veri ayrıştırma tekniklerini tartışıyor. İlk teknik, bire bir veya çoktan bire eşleme için verileri orijinal matristeki satır vektörlerine bölmeyi içerir. İkinci teknik, çoklu çıktı verilerine karşılık gelen bir girdi verisine sahip olan girdi verisi ayrıştırmasını içerir. Bunun örnekleri arasında tar gram histogramları ve alt dizileri aramak yer alır. Bu ara veri parçalarından nihai sonucu hesaplamak için, tüm alt görevlerin tamamlandığından ve doğru sonucun üretildiğinden emin olmak için senkronizasyon ve atomik işlemler gerekli olabilir.
Concurrency, Parallelism, Data and Task Decompositions
Concurrency, Parallelism, Data and Task Decompositions
  • 2020.05.21
  • www.youtube.com
This video compares concurrency with parallelism, and discusses decomposition methods to parallelize a task.
 

3. Paralel Hesaplama: Yazılım ve Donanım



3. Paralel Hesaplama: Yazılım ve Donanım

Video, bilgi işlemde yüksek düzeyde paralellik elde etmeye yönelik farklı yaklaşımları tartışıyor. Konuşmacı, talimat düzeyinde paralellik (ILP), yazılım dizileri, çok çekirdekli CPU'lar, SIMD ve SPMD işlemciler dahil olmak üzere paralel hesaplama gerçekleştirmek için kullanılan donanım ve yazılım tekniklerini açıklar. Video ayrıca verimli paralel hesaplamaya izin veren paralellik yoğunluğunun ve bilgi işlem/işlem birimleri kavramının önemini açıklıyor. Ayrıca konuşmacı, senkronizasyon amaçları için atomik işlemler oluşturmanın zorluklarını ve GPU'larda verimli yürütme için sorunları yeniden yapılandırma ihtiyacını tartışıyor.

  • 00:00:00 Bu bölümde, konuşmacı yüksek düzeyde paralellik elde etmeye yönelik farklı yaklaşımları tartışıyor. İşlemci tasarımının ilk günlerinde, insanlar paralellik elde etmek için komut düzeyinde paralelliğe (ILP) ve yazılım iş parçacıklarına güvendiler. Ancak bu tasarımlar otomatik olarak yapılmamakta ve programcının bu yazılım uygulamalarını tasarlama konusunda deneyimli olması gerekmektedir. Donanım açısından, paralel bilgi işlem görevleri için farklı türde işlemciler mevcuttur. Çok çekirdekli CPU'lar görev paralelliği için tasarlanırken, SIMD işlemciler veri paralelliğinden yararlanmak için tasarlanmıştır. GPU'lar, yüzlerce hatta binlerce çekirdek üzerinde aynı anda birden çok veriyi gerçekleştirebildikleri için veri paralelliği görevleri için en iyisidir.

  • 00:05:00 Bu bölümde konuşmacı, paralel hesaplamada yaygın olarak kullanılan SIMD ve SPMD kavramlarını tartışıyor. SIMD, her bir çekirdeğin aynı anda farklı veriler üzerinde işlemler gerçekleştirebildiği Tek Komutlu Çoklu Veri anlamına gelir. Öte yandan SPMD, aynı programın birden çok örneğinin farklı veri bölümlerinde bağımsız olarak çalıştığı Tek Program Çoklu Veri anlamına gelir. Döngü şeridi madenciliği, veri paralel görevlerini aynı anda yinelemeleri yürütmek için vektör birimini kullanabilen bağımsız işlemciler arasında bölmek için popüler bir tekniktir. Konuşmacı, her programın farklı veri bölümlerinde çalıştığı döngü gezisi madenciliği ile SPMD kullanan bir vektör toplama örneği sağlar.

  • 00:10:00 Bu bölümde, konuşmacı, her bir veri yığınını bağımsız bir iş parçacığı olarak yürütme örneğini kullanarak, paralel hesaplamada farklı işlemcilerin verilerin farklı bölümlerinde nasıl çalışabileceğini açıklar. GPU'lar için iş parçacığı oluşturma maliyeti yüksektir, bu nedenle her işlemcide beklenen hesaplama, paralellik yoğunluğu olarak bilinen daha büyük olmalıdır. FPGA'lar için iş parçacığı oluşturma ek yükü çok düşüktür, bu nedenle çok sayıda SGMD yürütme örneği olabilir. Tek talimat çoklu veri (SIMD), talimatı birlikte yürüten birçok aritmetik mantık birimi (ALU) ile aynı anda birden fazla veri üzerinde bir talimatın yürütülmesine izin verir. Paralel algoritmalar, kontrol akışı miktarını ve diğer donanımları ALU birimleri lehine azaltabilir.

  • 00:15:00 Bu bölümde konuşmacı, hesaplama için bir çip içinde kullanılan bilgi işlem/işlem birimleri kavramını açıklar. Veri girişlerini alabilir ve eş zamanlı olarak işlemleri gerçekleştirerek verimli paralel hesaplamaya olanak tanırlar. Mimari, SMID'ye (Single Instruction Multiple Data) dayanmaktadır ve GPU donanımında yaygın olarak kullanılmaktadır. Konuşmacı, senkronizasyon amaçları için atomik işlemlerin önemini vurguluyor, ancak bu işlemlerin büyük genel giderleri konusunda uyarıda bulunuyor. Girdi verisi bölümlemesi kullanılarak ayrıştırılan sorunların, bir GPU üzerinde verimli yürütme için büyük olasılıkla yeniden yapılandırılması gerekecektir.
Parallel Computing: Software and Hardware
Parallel Computing: Software and Hardware
  • 2020.05.21
  • www.youtube.com
This video introduces the general characteristics of parallel computing, the associated software and hardware methods.
 

4. Heterojen İşlemciler Hakkında İki Önemli Bildiri



4. Heterojen İşlemciler Hakkında İki Önemli Bildiri

Video, işlemci tasarımı ve enerji verimliliğindeki eğilimler, özelleştirilmiş donanım ve özel hızlandırıcılar kullanmanın faydaları, büyük ve küçük çekirdekleri dengelemenin önemi ve çekirdekler arasında veri taşıma ve verimli iletişimin zorlukları dahil olmak üzere heterojen bilgi işlemle ilgili çeşitli makaleleri kapsar. Makaleler ayrıca, heterojen işlemcilerle çalışırken ve OpenCL, CUDA ve OpenMP gibi programlama dilleri ve çerçevelerinin kullanımıyla zamanlama ve iş yükü bölümlemesini anlama ihtiyacını tartışıyor. Genel olarak, makaleler, heterojen bilgi işlem ortamlarında performansı ve enerji verimliliğini en üst düzeye çıkarmak için birden çok çekirdek ve hızlandırıcı kullanmanın potansiyel faydalarını vurgulamaktadır.

  • 00:00:00 Bu bölümde konuşmacı, son on yılda yayınlanan heterojen bilgi işlemle ilgili iki önemli makaleyi tartışıyor. İlk makale, tek bir işlemci çekirdeğinden birden çok çekirdeğe geçiş trendinden ve daha fazla performans elde etmek için gönderilmemiş transistörlerin verimli kullanımından bahsediyor. İkinci makale, bilgisayar mimarlarının, programcılarının ve araştırmacılarının hem performansı hem de kullanımı en üst düzeye çıkarmak için CPU ve GPU'yu birlikte kullanma konusunda nasıl daha işbirlikçi bir yaklaşıma doğru ilerlediklerini anlatan bir anket belgesidir. Konuşmacı ayrıca, tek çekirdekli performanstan molekül performansına veya heterojen çekirdekler ve hızlandırıcılar kullanarak verim açısından performansa geçme eğiliminden bahsediyor. Transkript ayrıca 1971'den 2009'a kadar tek bir çip üzerindeki transistör sayısındaki artışı gösteren bir grafik içerir ve heterojen bilgi işlem kullanmanın başlıca faydalarını vurgular.

  • 00:05:00 Bu bölümde video, transistör ölçeklendirmeyi ve bunun tek bir çipte daha fazla transistöre nasıl izin vererek daha iyi performans ve enerji verimliliği sağlayabileceğini tartışıyor. Ardından video, daha fazla çekirdek eklemek veya spekülatif yürütme uygulamak gibi mikroişlemcileri tasarlamak için kullanılan farklı teknikleri gösteren bir diyagram sunar. Her yıl performansta önemli bir artış olmamasına rağmen, enerji verimliliği neredeyse beş kat iyileşerek daha fazla görevin daha yüksek verimde gerçekleştirilmesine olanak sağladı. Video ayrıca, işlemcilerin performansı hakkında basit bir gözlem olan Pollock kuralını da tanıtıyor.

  • 00:10:00 Bu bölümde konuşmacı, transistörlerin alanı veya sayısı arttıkça işlemcilerdeki performans artışını tartışıyor. Bu faktörler arasındaki ilişki, transistör sayısının yaklaşık olarak kareköküdür. Öte yandan, DRAM yoğunluğu her iki yılda bir neredeyse iki katına çıkıyor, ancak okuma/yazma hızı açısından performans buna ayak uyduramıyor. Toplam enerji bütçesi sabittir, dolayısıyla transistör boyutunu küçültmek ve transistör sayısını artırmak bile performansı önemli ölçüde artırmaz. Transistör boyutu küçüldükçe kaçak güç baskın hale gelir; bu, frekans artışına, besleme voltajındaki azalmaya ve tek başına bağlantıların ve kabloların kapasitansına güvenmenin, terabit veya daha fazla işlem gibi amaçlanan performans hedeflerine ulaşamayacağı anlamına gelir.

  • 00:15:00 Bu bölümde, konuşmacı heterojen işlemcilerde birden fazla çekirdeğin tasarımını tartışıyor ve büyük, tek tip çekirdeklere sahip olmanın faydalı olmayabileceğinin altını çiziyor. Bunun yerine, donanımı sabit veya programlanabilir hızlandırıcılarla özelleştirmek ve mantığı çekirdeklerle birleştirmek, çekirdeklerin daha iyi kullanılmasına yol açabilir. Konuşmacı, 30 küçük çekirdeğe (her biri 5 milyon transistör) sahip bir tasarımın, aynı toplam transistör sayısını (150 milyon) kullanırken altı büyük çekirdeğe (her biri 25 milyon transistör) sahip bir tasarımı geride bıraktığı bir örnek sunuyor. Verim ve tek çekirdek performansı arasındaki denge, büyük ve küçük çekirdekler arasında bir denge sağlanarak da optimize edilebilir.

  • 00:20:00 Bu bölümde konuşmacı, özelleştirilmiş donanım için heterojen işlemcilerin kullanımını ve genel amaçlı CPU çekirdekleri yerine daha küçük, özelleştirilmiş çekirdekler kullanmanın faydalarını tartışıyor. Tasarımcılar, çarpanlar veya FFT birimleri gibi işlevsel birimler oluşturmak için özel mantık kullanarak genel amaçlı tasarımlardan daha yüksek enerji verimliliği elde edebilirler. Ek olarak, makale, veri hareketinin zorluklarından ve çekirdekler arasında verimli iletişim için verimli bellek hiyerarşilerine ve ara bağlantılara sahip olmanın öneminden bahsediyor. Rapor, daha iyi tek iş parçacığı performansı elde etmek için süper skalar sıra dışı işlemciler oluşturmak için geleneksel %90 yerine özel hızlandırıcılar ve çekirdekler için %10'luk bir bölünme önermektedir.

  • 00:25:00 Bu bölümde video, heterojen işlemciler hakkında iki makaleyi tartışıyor. İlk makale, veri hareketi ve enerji verimliliğinde karşılaşılan zorluklardan bahsediyor. Bir tasarım trendi, farklı çekirdeklerin farklı hızlarda çalıştırılmasına izin veren ve iş yüküne ve görev zamanlamasına bağlı olarak enerji tüketimini büyük ölçüde azaltabilen voltaj ölçeklendirmedir. İkinci makale, büyük ölçekli paralelliğe ve değişen boyutlara ve esnek frekans ve gerilime sahip heterojen çekirdeklere yönelik eğilimi tartışıyor. Ek olarak, çip üzerinde yerleşik farklı donanım hızlandırıcıları kullanmaya ve gereksiz veri hareketini azaltmak için verimli veri konumlandırmaya odaklanmaya yönelik bir hareket var. Makale, farklı CPU mimarilerinin benzersiz güçlerini ve gelecekteki CPU özelliklerini eşleştirmek için algoritmalar tasarlamayı kabul ediyor.

  • 00:30:00 Bu bölümde konuşmacı, CPU FPGA gibi heterojen işlemcilerle çalışırken zamanlama tekniklerini ve iş yükü dağılımını anlamanın önemini tartışıyor. Zamanlama, bir alt görevin belirli bir işlemcide ne zaman çalışması gerektiğine karar vermeyi içerirken, iş yükü bölümü veri ve görev bölümleme ile ilgilenir. Konuşmacı ayrıca farklı işlemci türleri için OpenCL, CUDA ve OpenMP gibi çeşitli programlama dillerinden ve çerçevelerinden bahseder.
Two Important Papers about Heterogeneous Processors
Two Important Papers about Heterogeneous Processors
  • 2020.05.21
  • www.youtube.com
This video provides an overview of two important papers on the design and programming of heterogenous processors/systems.S. Borkar and A. Chien, The Future o...
 

5. Bilgi İşlem Donanımına Genel Bakış



5. Bilgi İşlem Donanımına Genel Bakış

Video, işlemci mimarileri, tasarım konuları, çoklu iş parçacığı, önbelleğe alma, bellek hiyerarşisi ve kontrol mantığı tasarımı gibi konuları tartışarak bilgi işlem donanımına genel bir bakış sağlar. Ayrıca, bir programın, bir bilgisayarın bir görevi gerçekleştirmek için izlediği bir dizi talimat olduğunu ve sistem yazılımı ve uygulamaları da dahil olmak üzere farklı program türlerini açıklar. Video, programları yürütmek ve görevleri gerçekleştirmek için birlikte çalışan CPU ve bellek gibi bilgisayarın donanım bileşenlerinin önemini vurgulamaktadır.

  • 00:00:00 Bu bölümde, konuşmacı işlemci mimarileri ve yenilikleri, mimari tasarım alanı, CPU ve GPU mimarisi ve yüksek performanslı gelişmekte olan bir mimari olarak FPGA'yı içeren sınıfta ele alınacak konuları tanıtıyor. Konuşmacı ayrıca OpenCL'nin kökenlerinden ve sağladıkları işlemcilere dayalı olarak farklı satıcılar tarafından kademeli olarak nasıl şekillendirildiğinden ve platform bağımsızlığını sağlayan rahat bir tutarlılık blok tabanlı paradigma modeline yol açtığından bahsediyor. OpenCL programlarının performansı hala uygulamaya, algoritmaya ve donanım mimarisine ne kadar iyi eşlenebileceğine bağlıdır. Farklı işlemcilerin tasarımı, tek çekirdekli bir işlemciye mi yoksa birden çok işlemciye mi sahip olunacağı gibi birçok hususu ve takası gerektirir.

  • 00:05:00 Bu bölümde video, süper skalar çekirdekler ve talimat zamanlaması gibi bilgi işlem donanımı söz konusu olduğunda bazı tasarım hususlarını açıklıyor. Video ayrıca, bir işlemcinin işleyebileceği yararlı iş miktarını artırmanın bir yolu olarak çoklu iş parçacığının yanı sıra önbelleğe alma ve bellek hiyerarşisinin önemini tartışıyor. GPU'lu CPU'ları, FPGA'ları ve büyük ve küçük çekirdekli işlemcileri içeren işlemcilerdeki heterojenlik daha yaygın hale geliyor. Son olarak, karmaşık kontrol akışlarında talimat seviyesi paralelliğinden yararlanmak için talimatların yeniden düzenlenmesini sağlayan kontrol mantığının tasarımı çok önemlidir.

  • 00:10:00 Bu bölümde video, programın, bilgisayarın belirli bir görevi yerine getirmek için izlediği bir dizi talimat olduğunu açıklıyor. Program, bir programlama dilinde yazılan ve daha sonra bilgisayarın anlayabileceği makine diline derlenen veya yorumlanan kodlardan oluşur. Video, işletim sistemleri ve aygıt sürücüleri gibi sistem yazılımlarının yanı sıra kelime işlemciler ve oyunlar gibi uygulamalar da dahil olmak üzere farklı program türlerini açıklamaya devam ediyor. Bilgisayarın CPU ve bellek gibi donanım bileşenleri, bu programları yürütmek ve istenen görevleri gerçekleştirmek için birlikte çalışır.
Overview of Computing Hardware
Overview of Computing Hardware
  • 2020.05.22
  • www.youtube.com
This video introduces hardware tradeoffs and conventional CPU architecture.