Ticarette OpenCL - sayfa 9

 

EECE.6540 Heterojen Hesaplama (Massachusetts Lowell Üniversitesi) - 46. Temel FPGA kavramları



46. Temel FPGA kavramları

Bu video, sahada programlanabilir kapı dizilerinin (FPGA'ler) temel kavramlarını kapsar. CPU'lardan farklı olarak, FPGA'lar belirli donanım kaynaklarına uyacak şekilde programlanabilirler, yani son derece özelleştirilebilirler. Video, devre tasarımında gecikmenin önemini ve f max'ı maksimize ederek nasıl dengelenebileceğini tartışıyor. Bir devredeki veri yollarını ve kontrol yollarını tartışmanın yanı sıra bir hesaplamanın gerçekleştirilebileceği frekansı artırmak için boru hattı tasarımı kavramını sunar. Son olarak, video bir FPGA'da devre doluluğunu ve azalan baloncukların ve artan doluluğun f max'ı nasıl artırabileceğini tartışıyor.

  • 00:00:00 Bu bölümde, sahada programlanabilir kapı dizilerinin (FPGA'ler) temel kavramlarını ve diğer işlemci mimarilerinden nasıl farklı olduklarını öğreniyoruz. CPU'lardan farklı olarak, FPGA'ların sabit bir veri yolu yoktur ve farklı sayıda kayıt, hesaplama mantığı ve bunların bağlantılarını barındıracak şekilde belirli donanım kaynaklarına uyacak şekilde programlanabilirler, bu da onları oldukça özelleştirilebilir hale getirir. FPGA'lar, farklı tasarımları uygulamak için bağlanabilen uyarlanabilir mantık, RAM blokları, DSP blokları ve programlanabilir yönlendirme anahtarları gibi çeşitli bileşenleri içerir. Ek olarak, bir FPGA'nın maksimum çalışma frekansı, devrenin gecikmesini ve çalışma hızını etkileyen kombinasyonel mantığın fiziksel yayılma gecikmesi tarafından belirlenir.

  • 00:05:00 Bu bölümde gecikme kavramı ve devre tasarımındaki önemi anlatılmaktadır. Gecikme, bir devrenin bir veya daha fazla işlemi tamamlaması için geçen süredir ve zaman veya saat döngüleriyle ölçülebilir. Gecikmeyi azaltmak genellikle hedeftir, ancak f max'ı en üst düzeye çıkarmakla dikkatli bir şekilde dengelenmelidir. Gecikme için optimize edilmiş ve boru hattı kullanımı yoluyla f max için optimize edilmiş bir tasarım örneği verilmiştir. Uzun kritik yolları ayırmak ve hızı artırmak için boru hattı kayıtlarının önemi vurgulanmaktadır.

  • 00:10:00 Bu bölümde video, boru hattı tasarımı kavramını ve bunun bir hesaplamanın gerçekleştirilme sıklığını nasıl artırdığını açıklıyor. Bir ardışık düzen kaydı kullanılarak gecikme kısaltılabilir, bu da daha yüksek saat hızlarına ve verimde bir artışa olanak tanır. Video daha sonra bir devrede veri yolu ve kontrol yolu fikrini sunar; burada veri yolu, kayıt zinciri ve hesaplamayı gerçekleştiren kombinasyonel mantıktır ve kontrol yolu, devrenin çalışmasını kontrol eden veri yolu dışındaki her şeydir. . El sıkışma akış kontrolü, döngü kontrolü ve şube kontrolü için kontrol yoluna çeşitli mantıklar eklenir ve doluluk, bir devredeki veri yolunun başlatma oranını tanımlamak için kullanılır.

  • 00:15:00 Bu bölümde, konuşmacı bir FPGA'da devre doluluk kavramını açıklıyor. Devrenin birkaç kaydı vardır ve bunlardan biri, giriş verilerinin geçerli olup olmadığını belirleyen geçerli bir kayıttır. Amaç, tüm devredeki baloncukları en aza indirerek doluluğu artırmak için devredeki baloncukları azaltmaktır. Kaynakların nasıl kullanıldığını görmek için her döngü sayılır ve devredeki boş kısımlara baloncuklar denir. Baloncukları azaltarak ve doluluğu artırarak, f max artırılabilir.
Basic FPGA concepts
Basic FPGA concepts
  • 2021.04.07
  • www.youtube.com
This video introduces basic concepts of FPGA and design for FPGA
 

47. Tasarım Analizi (I): FPGA İlk Görüntülerini Analiz Edin



47. Tasarım Analizi (I): FPGA İlk Görüntülerini Analiz Edin

Videonun bu bölümü, bir DPC++ tasarımı için ilk FPGA görüntülerini analiz etme sürecine odaklanmaktadır. Konuşmacı, programı derlemek, FPGA ikili dosyası oluşturmak ve profil oluşturmayı çalıştırmak gibi ilgili adımları açıklar. Video, raporların nasıl oluşturulacağına ve raporlarda sağlanan çeşitli bilgi panellerinin nasıl yorumlanacağına dair bir demo içerir. Konuşmacı ayrıca bir b2 modülünün FPGA ilk görüntülerini analiz eder ve çeşitli mantık bloklarını, döngüleri, yük birimini ve açılma faktörünü tartışır. Ayrıca, bir çekirdek işlevi tasarımının FPGA üzerindeki dahili tasarımı nasıl önemli ölçüde etkileyebileceğini tartışıyorlar ve verimi artırmak için iç ve dış döngülerin nasıl açılabileceğine dair örnekler veriyorlar. Örnekler, üst düzey dil programlamanın FPGA'nın donanım kaynaklarını etkilemedeki esnekliğini göstermektedir.

  • 00:00:00 Videonun bu bölümünde, konuşmacı, özellikle FPGA erken dönem görüntülerini analiz etmeye odaklanarak, bir DPC++ tasarımını analiz etme sürecini tartışıyor. Bu, işlevsel doğruluğu sağlamak için programın bir FPGA öykünücüsüne derlenmesi, FPGA ikili dosyası oluşturulması, bir özellik kartında çalıştırılması ve çalışma zamanı performansını belirlemek için profil oluşturma gibi birkaç adımı içerir. İkinci aşama, gerekirse tasarımı revize etmeden önce raporların oluşturulmasını ve darboğazların aranmasını içerir. Video, raporların nasıl oluşturulacağına ve bunların bir tarayıcıda nasıl analiz edileceğine dair bir demo içerir ve raporlarda sağlanan çeşitli bilgi panellerinin ve özetlerin nasıl yorumlanacağını açıklar.

  • 00:05:00 Bu bölümde, konuşmacı tasarım analiz aracı ve özelliklerine genel bir bakış sunar. Kaynak kullanım panelinin tasarım tarafından kullanılacak kaynaklar hakkındaki bilgileri nasıl gösterdiğini ve sistem görüntüleyiciler panelinin kullanıcıların tasarımın bellek bileşenleri ve kanallar gibi farklı bileşenlerini görüntülemesine nasıl olanak tanıdığını açıklarlar. Sistem görüntüleyiciler panelindeki grafik görüntüleyici, tasarımda kullanılan bileşenlerin bir listesini ve bunların birbirine nasıl bağlandığını gösterir. Konuşmacı ayrıca, kullanıcıların kaynak kodda karşılık gelen bölümleri görüntülemek için ayrı ayrı modülleri nasıl yakınlaştırabileceklerini de gösterir.

  • 00:10:00 Bu bölümde, konuşmacı bir b2 modülünün ilk FPGA görüntülerini analiz eder ve tasarımı oluşturan çeşitli mantık blokları ve döngülerini tartışır. Ayrıca, bellek bileşeninden veri yüklemek için yük biriminin kullanımını ve döngü işlemlerinin verimliliğini artırmak için açma faktörünü açıklar. Konuşmacı ayrıca paralel 4 ve tek görev tasarımlarını karşılaştırır ve bellek erişimini optimize etmek için FPGA tasarımları için tek görev kullanılmasını önerir.

  • 00:15:00 Bu bölümde, konuşmacı bir çekirdek işlevi tasarımının FPGA'daki dahili tasarımı önemli ölçüde nasıl etkileyebileceğini tartışıyor. Konuşmacı, FPGA'nın donanım kaynaklarından yararlanmak için iç ve dış döngülerin nasıl açılabileceğine ve böylece iş hacminin nasıl artırılabileceğine dair örnekler sağlar. Örnekler, üst düzey dil programlamanın FPGA'nın donanım kaynaklarını etkilemedeki esnekliğini göstermektedir.
Design Analysis (I): Analyze FPGA Early Images
Design Analysis (I): Analyze FPGA Early Images
  • 2021.04.07
  • www.youtube.com
This video introduce the design workflow and how to analyze the early image using DPC++ compiler report.
 

48. DPC++ FPGA Tasarım Analizi (II): Çalışma Zamanı Profili Oluşturma



48. DPC++ FPGA Tasarım Analizi (II): Çalışma Zamanı Profili Oluşturma

Bu videoda sunum yapan kişi, FPGA bit akışlarına profil oluşturma araç kayıtları ekleyerek performans verilerini toplayan araçları kullanarak bir programın çalışma zamanı performansını analiz etme sürecini tartışıyor. Kullanıcı tarafından eklenen performans sayaçları ile Intel FPGA dinamik profil oluşturucu kullanılarak profil oluşturmak için nasıl derleneceğini ve toplu profil oluşturma sonuçlarının nasıl yorumlanacağını gösterirler. V2 profil oluşturucunun, çalışma zamanı profil oluşturma sonuçlarını analiz etmek için kullanılan çekirdek işlevlerini ve yürütülebilir dosyaları nasıl görüntülediğini ve bölüm darboğazlarının nasıl belirleneceğini ve bunların nasıl optimize edileceğini gösterirler. Kullanılan örnek, genel bellekle iletişimi azaltmak ve tasarım verimliliğini artırmak için yerel bellek kullanılarak optimize edilmiş, küresel belleğe çok fazla bellek erişimi olan bir matris modifikasyon çekirdeğidir.

  • 00:00:00 Bu bölümde sunum yapan kişi, bir programın çalışma zamanı performansını analiz etmeyi tartışır. FPGA bit akışlarına profil oluşturma araç kayıtları ekleyerek performans verilerini toplamak için araçların nasıl kullanılacağını açıklarlar. Intel FPGA dinamik profil oluşturucu, çekirdek performans verilerini toplamak için kullanıcı tarafından eklenen performans sayaçlarıyla birlikte kullanılır. Performans verileri, yürütmenin sonunda profile.mall adlı bir dosyada saklanır ve Intel v2 profil oluşturucunun dosyaları okumasına izin vermek için bir json dosyası oluşturulur. Sonuçlar klasörü Intel Retune araç setine yüklenirken her iki dosya da gereklidir. Verileri v2'ye yüklerken dizinden veri almak önemlidir.

  • 00:05:00 Bu bölümde sunum yapan kişiler, profil oluşturmak için nasıl derleneceklerini ve toplu profil oluşturma sonuçlarının nasıl yorumlanacağını gösterir. V2 profil oluşturucunun, çalışma zamanı profil oluşturma sonuçlarını analiz etmek için kullanılan çekirdek işlevlerini ve yürütülebilir dosyaları nasıl görüntülediğini gösterirler. Panel, bellek işlem işlevlerini ve döngü işlemlerini, sürelerini, duraklama yüzdesini, doluluğu, boşta kalma süresini, etkinlik yüzdesini, veri aktarım boyutunu ve ortalama bant genişliğini gösterir. Panelin alt kısmı, küresel bellek bant genişliği doluluğu için FPGA kullanımını ve diğer ölçümleri daha ayrıntılı olarak gösterir. Tasarımcılar, ayrıntılı istatistikleri göstererek, tasarımlarını optimize etmelerine ve geliştirmelerine yardımcı olan bireysel çekirdekleri ve bunların işlevlerini anlayabilir.

  • 00:10:00 Videonun bu bölümünde, konuşmacı bölüm darboğazlarının nasıl belirleneceğini ve bunların nasıl optimize edileceğini tartışıyor. Kullanılan örnek, genel belleğe çok fazla bellek erişimi olan ve 15.57 GB veri aktarımıyla sonuçlanan bir matris modifikasyon çekirdeğidir. Çekirdeğin tasarımı bellek bağıdır ve çözüm, küresel bellekle iletişimi azaltmak ve tasarım verimliliğini artırmak için yerel belleği kullanarak bellek erişimini optimize etmektir. Bu optimizasyon bir sonraki derste tartışılacaktır.
DPC++ FPGA Design Analysis (II): Runtime Profiling
DPC++ FPGA Design Analysis (II): Runtime Profiling
  • 2021.04.07
  • www.youtube.com
This video introduces DPC++ profiling and how to analyze run-time profiling reports using Intel VTune tool.
 

EECE.6540 Heterojen Hesaplama (Massachusetts Lowell Üniversitesi) - 49. OpenCL Örnekleri



49. OpenCL Örnekleri (I)

"OpenCL Örnekleri (I)" adlı YouTube videosu, C programlamada iç içe döngüler kullanılarak matris çarpımının uygulanmasını ve bunun bir OpenCL çekirdeği olarak uygulanmasını kapsar. Öğretim görevlisi, matriste ortaya çıkan öğenin iç çarpım hesaplaması için iki düzeyde iç içe döngülerin nasıl kullanılacağını ve C matrisinin her bir çıktı öğesinin OpenCL'de nasıl ayrı bir iş öğesi olarak ele alındığını açıklar. Video ayrıca OpenCL çekirdeğini yürütmeye hazırlamak ve elde edilen matrisi bir cihazdan bir ana bilgisayara almak için gerekli adımların yanı sıra çalışma grubu boyutlarını ayarlamak ve çekirdeği değiştirilmiş çekirdek bağımsız değişkenleriyle yürütmek için gereken adımları da kapsar. Ek olarak, matris çarpımı için örnek bir kod sağlanır ve konuşmacı, bir Mac OS'de aygıt ve platform kimliklerini alma ve farklı platformlarda bir program nesnesi oluşturma sürecini gösterir. Son olarak, video arabellek yönetimini, ana bilgisayar tarafında tahsis edilen kaynakları ve kullanılan OpenCL kaynaklarını izlemeyi açıklar ve basit bir çarpma çekirdeği örneği sağlar.

Bu video, matris çarpma, görüntü döndürme ve görüntü filtreleme dahil olmak üzere OpenCL kullanımına ilişkin çeşitli örnekleri kapsar. Görüntü döndürme için konuşmacı, girdi ayrıştırmasını kullanarak sorunun nasıl çözüleceğini açıklar ve her pikselin orijinal ve yeni konumunu belirlemek için kullanılan çekirdek işlevini gösterir. Görüntü filtreleme için konuşmacı, aygıt tarafında görüntü nesneleri oluşturma kavramını ve görüntüye nasıl erişileceğini tanımlamak için OpenCL örnekleyicinin kullanımını tartışır. Ayrıca, iç içe geçmiş iki for döngüsü ile görüntü konvolüsyon fonksiyonunun örnek bir uygulamasını sunarlar. Video, bir görüntü üzerinde evrişim filtresi gerçekleştirmek ve sonuçları doğrulamak için OpenCL kullanımının gösterilmesiyle sona eriyor.

  • 00:00:00 Bu bölümde, öğretim görevlisi klasik bir hesaplama örneği olan matris çarpımını tanıtıyor ve bunun C programlamada iç içe döngülerle nasıl uygulanabileceğini açıklıyor. Ayrıca, A matrisindeki bir satırın ve B matrisindeki bir sütunun ürünü olan matristeki sonuçtaki öğenin iç çarpım hesaplamasını da açıklarlar. Ders, iç içe geçmiş iki döngü seviyesinin bağımsız olarak yürütülebileceğini ve gerçekleştirilebileceğini açıklar. rastgele bir şekilde.

  • 00:05:00 Bu bölümde iş öğesi kavramı ve OpenCL çekirdeğinde matris çarpımını uygulamak için nasıl uygulanabileceği tartışılmaktadır. Matris C'nin her bir çıktı öğesi, ayrı bir iş öğesi olarak ele alınır ve FPGA veya GPU işleme öğelerinin yardımıyla, iki boyutlu bir dizi iş öğesi, donanım uygulamasındaki diğer döngüler için eşlenebilir. Matris çarpımını gerçekleştirmek için, gerekli tüm girdi matrislerini ve bunların boyutlarını gerektiren, bir bağımsız değişkenler listesiyle birlikte "basit çarpma" adlı bir çekirdek işlevi tanımlanır. Çekirdek işlevinin gövdesi, iş öğesinin iki boyutlu konumunu hesaplamak için genel tanıtıcıları kullanır ve C matrisinin sonuçtaki öğesini hesaplamak için toplamı başlatır.

  • 00:10:00 Bu bölümde, konuşmacı OpenCL programlama çerçevesini kullanarak matris çarpımı için çekirdek işlevini açıklamaktadır. Çekirdek işlevi, a'dan satır vektörünün ve B'den sütun vektörünün öğelerini yinelemek için bir iç çarpım işlemi ve bir for döngüsü kullanır. İki boyutlu giriş matrisinin endeksleri, bulmak için satır numaraları ve sütun numaraları kullanılarak hesaplanır. satır vektörü ve sütun vektöründeki doğru eleman. İç çarpım hesaplandıktan sonra, ortaya çıkan öğe C'deki karşılık gelen öğeye atanır. Platforma bağlı olan ve platformdaki mevcut kaynakların ve önemli parametrelerin anlaşılmasını içeren hesaplama ortamı da tartışılır.

  • 00:15:00 Bu bölümde, konuşmacı, çekirdekleri başlatmak için bir bağlam ve komut kuyruğu oluşturmaya başlayarak bir OpenCL çekirdeğini çalışmaya hazırlamak için gerekli adımları özetliyor. Ardından, giriş verileri, ana bilgisayar tarafında arabellekler tahsis edilerek, ana bilgisayar belleğinden cihaz belleğine veri kopyalanarak ve çekirdeği göndererek hazırlanır. Program daha sonra cihaz hafızasını okuyarak sonuçları toplamak için çekirdeğin tamamlanmasını bekler. OpenCL uygulamasının iki katmanı vardır: platform katmanı ve çalışma zamanı katmanı ve çekirdek programı, bir FPGA veya GPU gibi hızlandırıcı cihazda yürütülebilen bir ikili dosyada derlenmelidir. Bu adımlar cihaza göre farklılık gösterir ve bir PG ikili dosyası için derleme saatler alabilirken, GPU derlemesi genellikle hızlıdır.

  • 00:20:00 Bu bölümde, videoda OpenCL programlama için ortamın nasıl kurulacağı anlatılmaktadır. İlk adım, sistemdeki kullanılabilir platformların sayısını döndüren CL get platform IDs işleviyle yapılan platform kimliğini almayı içerir. Ardından, video, kullanıcı tercihine dayalı olarak platformda belirli bir aygıtın nasıl alınacağını ve komut sıraları ve arabellekler gibi tüm kaynakların muhafazası olan bir OpenCL içeriğinin nasıl oluşturulacağını açıklar. Öğretici, işlemin başarılı olmasını sağlamak için dönüş değerinin kontrol edilmesini önerir.

  • 00:25:00 Bu bölümde video, arabellekleri bildirerek ve OpenCL API işlevlerini kullanarak giriş matrisleri B ve C ile çıkış matrisi C'den verilerin nasıl oluşturulacağını ve taşınacağını açıklar. A, B ve C matrislerinin zaten kayan tip diziler olarak bildirildiğini varsayarlar ve verileri fiziksel bellekte doğrusal adres alanında depolarlar. Video, A ve B matrisleri için arabellekleri bildirmek üzere CL oluşturma arabellek işlevinin nasıl kullanılacağını ve A ve B matrislerinden ilk verileri cihazda bulunan oluşturulan arabelleklere kopyalamak için CL Inc you write buffer işlevinin nasıl kullanılacağını gösterir. Bir sonraki adım, cihaz hesaplama sonuçlarını ona yazdığı için CL belleği salt okunur arabellek olarak bildirilen C matrisi için yer ayırmaktır.

  • 00:30:00 "OpenCL Örnekleri (I)" adlı YouTube videosunun bu bölümünde, konuşmacı bir cihazdan sonuçları alma ve elde edilen matrisi arabellek C'den bir ana bilgisayara kopyalama sürecini açıklıyor. API C tanımı, arabellek oluşturmaya yönelik bağlam, bayraklar, boyut, ana bilgisayar işaretçisi ve dönüş değeri dahil olmak üzere beş bağımsız değişkenin açıklamasıyla birlikte gösterilir. Konuşmacı daha sonra, FPGA aygıtları için basit bir derleme işlemi kullanarak çekirdek derlemesi olan OpenCL programındaki üçüncü büyük adımı açıklamaya devam eder. Süreç, bir programın oluşturulmasını ve oluşturulmasını ve kaynak koddan doğru çekirdek işlevinin seçilmesini içerir. Son olarak, konuşmacı çekirdek programını çalıştırmadan önce CL set kernel argümanı OpenCL API'sini kullanarak kernel argümanlarının nasıl başlatılacağını tartışır.

  • 00:35:00 Bu bölümde, konuşmacı bir OpenCL programında çekirdek bağımsız değişkenlerini başlatma, çalışma grubu boyutlarını ayarlama, çekirdeği çalıştırma ve sonuçları alma sürecini tartışır. Kullanıcı, 'CL çekirdek oluştur' API'sini kullanmalı ve gerçek değere bir işaretçi kullanarak çekirdek bağımsız değişkeninin boyutunu ve değerini belirtmelidir. Konuşmacı, argüman indekslerini doğru bir şekilde ayarlamanın ve kopyalayıp yapıştırırken her satır için bunları değiştirmenin önemini vurgular. İş öğelerinin ve iş gruplarının sayısı için yerel ve genel çalışma grubu boyutları ayarlanmalıdır. Son olarak, birleştirilmiş CL arabelleği, ana bilgisayarın belleğindeki çıktı arabelleğini okumak için kullanılır ve düzgün yürütme için eşitleme gereksinimlerini belirtir.

  • 00:40:00 Bu bölümde, konuşmacı OpenCL kullanarak bir matris çarpımı örneği sunuyor. Matris çarpma örneğinin kaynak kodu, ana bilgisayar programı, çekirdek programı ve projeyi derlemeye yardımcı olacak bir makefile dahil olmak üzere birkaç dosyadan oluşur. Ana bilgisayar tarafı programı C ile yazılmıştır ve OpenCL çerçevesi için standart kitaplıklar ve belirli başlık dosyaları içerir. Örnek, platformların ve aygıtların sayısı, bağlam, OpenCL programı ve OpenCL çekirdeği dahil değişkenler için giriş matrislerini ve bildirimlerini içerir. Konuşmacı ayrıca çekirdek kaynak kodunun nasıl derleneceğini açıklar ve girdi matrislerinin boyutlarını ve sonuçta ortaya çıkan çıktı matrisini açıklar.

  • 00:45:00 Videonun bu bölümünde sunum yapan kişi, Mac OS'de OpenCL için cihaz ve platform kimliklerinin nasıl alınacağını gösterir. Platform kimliği alma ve komut sıraları oluşturma gibi çeşitli OpenCL işlevlerini çağırarak, konuşmacı bir OpenCL bağlamı oluşturur ve programı derler. Ayrıca gösterilen kodun hem Mac OS'yi hem de bir OpenCL SDK'yı desteklediğini ve farklı bir platformda çalıştırılırsa bir hata bildireceğini açıklıyorlar.

  • 00:50:00 Bu bölümde video, farklı platformlarda OpenCL kullanarak bir program nesnesinin nasıl oluşturulacağını gösterir. Mac OS'de program nesnesi bir çekirdek kaynak kodu dosyasından oluşturulurken Altera FPGA OpenCL SDK'da derleme yoluyla oluşturulan bir ikili dosyadan oluşturulur. Program nesnesi oluşturulduktan sonra, çekirdek programı oluşturulabilir ve bu program nesnesinden belirli çekirdek işlevi seçilebilir. Bu bölümün sonunda, programın bir sonraki bölümü için gerekli nesneler ve işlevler hazırdır.

  • 00:55:00 Bu bölümde video, matris sonuçlarını depolamak için bir arabellek ayırma ve cihaz tarafında arabellek oluşturmak için CL oluşturma arabelleği kullanma dahil olmak üzere arabellek yönetimi sürecini tartışır. Video ayrıca, özellikle FPGA'ları kullanırken, başarılı yürütmeyi sağlamak için CL'nin Q'daki dönüş değerini ve albay aralığını kontrol etmenin önemini vurgulamaktadır. Ek olarak video, ana bilgisayar tarafında tahsis edilen kaynakları ve kullanılan OpenCL kaynaklarını yazdırarak sonuçları doğrulama sürecini açıklıyor ve yinelemeler aracılığıyla iç ürün işlemini gerçekleştirmek için yedi bağımsız değişkenin kullanıldığı basit bir çarpma çekirdeği örneği sağlıyor.

  • 01:00:00 Videonun bu bölümünde, konuşmacı OpenCL kullanımının iki örneğini açıklıyor. İlki matris çarpımıdır. Program iki matrisi işler ve sonucu üçüncü bir matriste depolamak için bunlara karşılık gelen öğeleri çarpar. İkinci örnek, programın bir görüntünün piksellerini belirli formüllere göre döndürdüğü görüntü döndürmedir. Bu formüller, her pikselin orijinal ve yeni koordinatlarını ve dönüş açısını hesaba katar.

  • 01:05:00 Bu bölümde, konuşmacı bir görüntü döndürme sorununu girdi ayrıştırma kullanarak daha küçük sorunlara nasıl ayıracağını tartışıyor. Görüntünün piksel bilgilerinin, x ve y boyutlarının bağımsız hesaplamaları yoluyla yeni bir konuma kopyalanacağını açıklıyorlar. Global kimliğini kullanarak her pikselin yeni konumunu hesaplamak için çalışma grupları atanır. Konuşmacı ayrıca iş öğesi gruplarının ve boyutlarının nasıl belirleneceğini ve bu işlemi tamamlamak için gereken çekirdek işlevinin ayrıntılarını verir. Amaç, görüntü döndürme hesaplamaları için daha verimli ve ölçeklenebilir bir yöntem oluşturmaktır.

  • 01:10:00 Bu bölümde, video sunucusu bir görüntüyü döndürmek için OpenCL'nin nasıl kullanılacağını açıklar. Çekirdek işlevi, bir pikselin orijinal konumunu belirlemek, döndürme parametrelerini kullanarak pikselin yeni konumunu hesaplamak, yeni koordinatların orijinal görüntü boyutu içinde kalmasını sağlamak için sınır kontrolünü kontrol etmek ve piksel bilgilerini orijinal konumdan kopyalamak için kullanılır. yeni konuma. Kod ayrıca OpenCL API için C++ bağlamalarını ve platformları sorgulama, aygıtları edinme ve verileri ana bilgisayar belleğinden aygıt arabelleğine taşımak için arabellekleri bildirme adımlarını içerir. Orijinal verilerin güvenliğini sağlamak için salt okunur arabellek de oluşturulur.

  • 01:15:00 Bu bölümde, konuşmacı OpenCL kullanarak bir görüntü döndürme gerçekleştirmek için gerekli adımları açıklar. İlk olarak, orijinal görüntünün bir görüntü arabelleğine kopyalanması gerekir. Ardından, hedef arabellek başlatılarak ve orijinal resmin boyutları ve döndürme parametreleri dahil olmak üzere doğru çekirdek bağımsız değişkenleri ayarlanarak çekirdek derlenir ve yürütülür. Çekirdek, genel çalışma grubu boyutu ve yerel çalışma grubu boyutu ile yürütülür. Son olarak, in Q okuma arabelleği kullanılarak sonuç ana bilgisayara geri okunur. Konuşmacı ayrıca, orijinal ve döndürülmüş görüntüler için başlık dosyaları, yardımcı işlevler, platform ve aygıt kimlikleri, komut sıraları, program ve çekirdek nesneleri ve giriş/çıkış arabelleklerini içeren görüntü döndürme için örnek kaynak kodunu gösterir.

  • 01:20:00 Bu bölümde video, OpenCL kullanılarak bir görüntünün döndürülmesi sürecini anlatıyor. Ana bilgisayar, görüntüyü BMP biçiminde okur ve onu giriş görüntüsü arabelleğinde depolanan bir kayan noktalı sayılar dizisine dönüştürür. Ana bilgisayardaki çıktı arabelleği oluşturulur ve rasgele sayılarla başlatılır. Platform, platformdaki cihazları bulmak ve bir bağlam ve komut kuyruğu oluşturmak için sorgulanır. Program ve çekirdek nesneleri oluşturulur ve orijinal ve döndürülmüş görüntüyü depolamak için aygıt tarafı arabellekleri oluşturulur. Orijinal görüntü, aygıt tarafındaki arabelleğe kopyalanır ve çekirdek bağımsız değişkenleri ayarlanır. Çekirdek, küresel ve yerel çalışma grubu boyutlarıyla başlatılarak yürütülür. Çekirdeğin başarıyla çalıştığından emin olmak için dönüş değeri kontrol edilir.

  • 01:25:00 Bu bölümde, konuşmacı OpenCL kullanarak görüntü döndürmeye genel bir bakış sunar. Çekirdeği tamamladıktan sonra, çıktı verileri cihaz tarafındaki genel belleğe işaretçi kullanılarak ana bilgisayara geri okunur ve görüntüyü depolamak için bir ana bilgisayar arabelleği sağlanır. BMP biçimlendirmesi sürece dahil edilir ve sonucu gösteren yeni bir BMP dosyası oluşturmak için write BMP float adlı bir yardımcı işlev kullanılır. Çekirdek işlevi, hedef ve kaynak arabellek işaretçilerinin görüntü boyutları ve döndürme parametreleriyle birlikte iletildiği ayrıntılı olarak açıklanmaktadır. Her pikselin yeni koordinatlarını hesaplama formülü kullanılır ve piksel bilgileri orijinal konumdan yeni konuma kopyalanmadan önce bir sınır kontrolü uygulanır. İşlem, bir kedi görüntüsünü 45 derece döndürme örneğiyle gösterilmiştir.

  • 01:30:00 Bu bölümde, konuşmacı OpenCL kullanarak görüntü filtreleme kavramını açıklıyor. Yeni filtrelenmiş piksel değerini elde etmek için komşu piksellerin değerlerini çarpmak ve toplamak için 3x3 filtre kullanma sürecini açıklar. Ayrıca, filtreyi uygulamak için daha az komşu piksele sahip sınıra yakın piksellerle uğraşırken dikkatli olunması gerektiğini vurguluyor. Konuşmacı daha sonra, OpenCL kullanılarak orijinal bir görüntüye uygulanabilen farklı türde görüntü filtrelerini gösterir. Ardından, görüntüdeki her pikselden geçen iki iç içe for döngüsü ve filtredeki öğelerden geçen üçüncü bir döngü ile görüntü konvolüsyon fonksiyonunun örnek bir uygulamasını sunar.

  • 01:35:00 Bu bölümde konuşmacı, çok boyutlu bir yapı olarak korunan ve görüntü veri türleri için kullanılan opak bir tür olan OpenGL'deki görüntü veri yapısından bahsediyor. Tamsayı veya işaretçi türlerinden farklı olarak, görüntüler bir aygıttaki noktalardan doğrudan görüntülenemez ve piksel değerleri kayan veya tamsayı değerleri olarak belirtilebilir. Cihaz tarafında görüntü nesneleri oluşturmak, OpenCL bilgi işlem birimlerinin görüntü nesnelerine yeni pikseller okumasına ve yazmasına olanak tanır ve görüntü verisi işleme veya grafik işlemcilere özgü uzun, optimize edilmiş komut dizileri için faydalıdır. Konuşmacı ayrıca CL Write Image ve CL Create Buffer gibi API'leri kullanarak görüntü ve filtre verilerini cihaza kopyalayarak bir kaynak görüntü arabelleğinin, bir çıktı görüntü nesnesinin ve bir filtrenin nasıl oluşturulacağını açıklar.

  • 01:40:00 Bu bölümde sunum yapan kişi, bir görüntüye nasıl erişileceğini açıklamak için kullanılan bir nesne olan OpenCL örnekleyici kavramını tanıtır. Örnekleyici, bağlamı bağımsız değişken olarak alan ve koordinatların normalleştirilip normalleştirilmeyeceğini tanımlayan API işlevi kullanılarak oluşturulur. Görüntü koordinatlarının aralık dışında olduklarında nasıl ele alınacağını yöneten adresleme modu da tanımlanır. Filtreleme modu, koordinatlar pikseller arasına düştüğünde uygulanması gereken filtreyi belirtir. Girdi ve çıktı 2B görüntü nesnelerini, filtre değerlerini depolamak için sabit bir kayan filtreyi ve örnekleyici nesnesini alan evrişim adlı bir çekirdek işlevi de tanıtılmıştır. Çekirdek işlevi, görüntü nesnesinden veri öğelerini okur ve görüntü verileri üzerinde aritmetik yapmak için dört kayan noktalı sayıdan oluşan bir vektör döndürür.

  • 01:45:00 Bu bölümde, konuşmacı dört elemanlı bir kayan nokta vektörü kullanarak kayan nokta vektörleri üzerinde işlemlerin nasıl gerçekleştirileceğini açıklar. Filtre dizinini başlatma, iki öğeli koordinatlar için değişkenleri bildirme, filtre satırlarını yineleme ve iki boyutlu koordinatları hesaplama sürecinden geçerler. Piksel, görüntü okuma F işlevi kullanılarak görüntü nesnesinden okunur ve çıktı görüntüsünde saklanan güncellenmiş değerle filtre piksel değeriyle çarpılır. Son olarak, görüntü bir CL mürekkebi kullanarak görüntü okuma işlevini kullanarak geri okunur.

  • 01:50:00 Bu bölümde, görüntü işlemede kullanılmak üzere filtreler sağlayan OpenCL Örnekleri (I) kodu ele alınmaktadır. Program, her filtre türüne farklı boyutlar ve değerler atar ve filtre değerlerini başlatmak ve bir dosyadan BMP görüntü verilerini okumak için yardımcı işlevleri kullanır. Giriş ve çıkış görüntülerinin yanı sıra filtre arabelleği oluşturulmadan önce platform ve cihaz keşfi gerçekleştirilir. Başlatıldıktan sonra örnekleyici, çekirdeği uygun filtre parametreleriyle çalıştırmadan önce sınırın dışına düşen piksellerin nasıl işleneceğini ayarlar. Global boyut, görüntüdeki sütun ve satır sayısına ayarlanır.

  • 01:55:00 Bu bölümde, konuşmacı bir görüntü üzerinde evrişim filtresi gerçekleştirmek için OpenCL kullanmanın bir örneğini gösterir. Süreç, tüm görüntüyü işleyen ve tek bir veri boyutunda bir grupta 8'e 8 iş öğesinden oluşan yerel bir boyut kullanan bir çekirdeğin kurulmasını içerir. Çıktı görüntüsü cihaz tarafında saklanır ve CL okuma görüntüsü kullanılarak ana bilgisayara geri okunabilir. Sonuçlar daha sonra ana bilgisayar tarafında filtre uygulanarak oluşturulan filtrelenmiş bir referans görüntü ile karşılaştırılır. İki resim görsel olarak aynıdır ve sonuçları doğrular. Son olarak, hem ana bilgisayar hem de cihaz tarafındaki kaynaklar serbest bırakılır.
OpenCL Examples (I)
OpenCL Examples (I)
  • 2017.09.29
  • www.youtube.com
Lectures on OpenCL Examples (I)
 

Devasa Paralel Destek Vektörü Sınıflandırması için SYCL, OpenCL, CUDA ve OpenMP Karşılaştırması ( WOCL / SYCLcon 2022 )



Devasa Paralel Destek Vektörü Sınıflandırması için SYCL, OpenCL, CUDA ve OpenMP Karşılaştırması

Video, büyük ölçüde paralel destek vektör makinesi sınıflandırması için SYCL, OpenCL, CUDA ve OpenMP'nin farklı donanım platformlarındaki performansını karşılaştırıyor. Konuşmacı, matris-vektör çarpımının paralelleştirilmesini, çoklu gpu yürütmeyi destekleyen, ancak yalnızca ikili sınıflandırma ve yoğun hesaplamaları destekleyen Parallel Fibonacci adlı bir uygulamayla açıklıyor. Test için kullanılan donanım, Nvidia A100 ve RTX 380 GPU'ları, AMD Radeon Pro 7 GPU ve Intel Core E9-10-09020X CPU'yu içerir. Sonuçlar, CUDA'nın Nvidia GPU'lar için en hızlı arka uç olduğunu, OpenCL'nin ise CPU'lar için en hızlı arka uç olduğunu gösteriyor. SYCL kullanıcı dostudur, Hipsicle ise ucuz kullanım için DPC++ ve OpenCL'den daha hızlıdır. Ayrıca konuşmacı, FPGA'lerdeki performansı araştırmak, MPI'ler yoluyla dağıtılmış sistemler için destek eklemek ve karma kesinlik hesaplamaları ve NVIDIA'nın tensör çekirdekleri gibi özel makine öğrenimi donanımlarını kullanmak gibi gelecekteki çalışmaları tartışıyor.

  • 00:00:00 Videonun bu bölümünde, konuşmacı SYCL, OpenCL, CUDA ve OpenMP dahil olmak üzere farklı paralel programlama dillerinin bir karşılaştırmasını sunuyor ve bunların büyük ölçüde paralel destek vektör makinesi (SVM) sınıflandırması için kullanımlarına odaklanıyor. çok satıcılı donanım. Konuşmacı, destek vektör makinesini tanıtır ve bunun ikili sınıflandırma için denetimli makine öğrenimindeki kullanımını ana hatlarıyla belirtir. Bununla birlikte, geleneksel destek vektör makinelerinin bir dışbükey ikinci dereceden programlama problemini sıralı bir şekilde çözmeleri gibi bir sorunu vardır. Bu sorunu çözmek için konuşmacı, sorunu bir doğrusal denklem sistemini çözmeye indirgeyen en küçük kareler destek vektör makinesi formülasyonunu kullanır. Konuşmacı ayrıca Paralel Fibonacci adı verilen kitaplıklarının uygulama ayrıntılarını da tartışıyor.

  • 00:05:00 Bu bölümde konuşmacı, modern C++ ile yazılmış PLSS VM'yi açıklıyor. Tek bir şablon parametresi kullanarak, tek ve çift duyarlıklı kayan nokta türleri arasında geçiş yapmak mümkündür. Konuşmacı ayrıca, algoritmanın hesaplama açısından en kapsamlı kısmı olduğundan, CG algoritmasında matris-vektör çarpımının paralelleştirilmesinden de bahsediyor. Dört farklı arka uç (OpenMP, CUDA, OpenCL, Signal) uyguladılar ve çoklu gpu yürütmeyi desteklediler. Ancak, şu anda yalnızca ikili sınıflandırma ve yoğun hesaplamalar desteklenmektedir ve kutudan çıkar çıkmaz çok sınıflı sınıflandırmayı desteklememektedirler. Ek olarak, OpenMP arka ucu diğer uygulamalardan oldukça farklıdır ve GPU arka uçları (CUDA, OpenCL ve SYCL) için bir CG uyguladılar ve kod tekrarını ve olası hataları azaltmak için bunu üç arka uç için de kullandılar.

  • 00:10:00 Videonun bu bölümünde kullanılan donanımlar ve testlerin metodolojisi anlatılmaktadır. Nvidia A100 ve RTX 380 GPU'lar, AMD Radeon Pro 7 GPU ve Intel Core E9-10-09020X CPU olmak üzere dört farklı platforma odaklanılıyor ve bunların sonuçları tartışılıyor. Nvidia A100 ve RTX 380 GPU'lar için N noktalı ölçekleme ve AMD Radeon Pro 7 GPU için veri noktası ve özellik ölçeklendirmesi incelenmiş ve her iki NVIDIA'da da veri noktası sayısı ile çalışma sürelerinin benzer şekilde arttığı tespit edilmiştir. GPU'lar. Bunlar arasında, Cuda'nın OpenCL tarafından takip edilen en hızlı arka uç olduğu bulundu ve N-site hesaplama ile oluşturulan çatı modeli, hiyerarşik çekirdek formülasyonlarının, ND-aralığı emsallerine göre daha fazla belleğe bağlı olma eğiliminde olduğunu gösterdi. Genel olarak, AMD'nin çalışma süreleri NVIDIA'nınkinden daha fazladır.

  • 00:15:00 Bu bölümde video, SYCL, OpenCL, CUDA ve OpenMP'nin farklı donanım platformlarındaki performans karşılaştırmasını tartışıyor. Nvidia GPU'ları çalışma süresi artışı göstermedi ve en hızlı arka uç OpenCL idi. Ancak AMD GPU, muhtemelen engelleme boyutlarının ince ayarının yapılmaması nedeniyle beklenenden daha kötü performans gösterdi. Intel Core E9 CPU, OpenCL en hızlı arka uç olmak üzere Nvidia GPU'lara benzer davranışa sahipti. DPC++, OpenMP'nin daha hızlı olduğu küçük veri kümeleri dışında en hızlısıydı. DPC++ hiyerarşik çekirdek formülasyonu, tüm donanım platformlarında indie serisi muadilinden daha yavaştı ve bu da optimizasyon potansiyeli olduğunu gösteriyor. Son olarak, OpenCL hile derleme ek yükü, Nvidia GPU'larda en hızlı ve Intel Iris Xe Max GPU'da en yavaştı, ancak yerleşik önbelleğe alma ile, sonraki yürütmelerde ek yük azaltılabilir.

  • 00:20:00 Konuşma metninin bu bölümünde sunum yapan kişi, NVIDIA, AMD ve Intel gibi farklı üreticilerin donanımlarını hedeflemek için çeşitli paralel programlama dilleri ve çerçeveleri üzerinde yaptıkları testlerin sonuçlarını tartışıyor. Yalnızca NVIDIA GPU'ları hedeflemeniz gerekiyorsa, testlerinde en hızlı performansı gösterdiği için CUDA'nın hala en iyi seçenek olduğunu belirtiyorlar. Yalnızca CPU'ları hedeflemek için OpenMP, testlerinde en iyi performansa sahip olmasa da iyi bir başlangıçtır. Farklı satıcı donanımlarını hedeflemeniz gerekiyorsa OpenCL veya SYCL önerilir, ancak daha kullanıcı dostu olduğu için sıfırdan yeni bir algoritma uyguluyorsanız SYCL daha iyidir. Hipsicle ucuz kullanım için en iyi seçenektir ve GPU'larda DPC++ ve OpenCL'den daha hızlıdır ve gelecekte OpenMP arka uçlarını optimize etmeyi ve ComputeCPP gibi diğer sinyal uygulamalarını araştırmayı planlıyorlar.

  • 00:25:00 Bu bölümde, konuşmacı, çeşitli paralel bilgi işlem çerçevelerini kullanarak destek vektörü sınıflandırma uygulamalarında gelecekteki çalışmaları ve iyileştirmeleri tartışarak videoyu sonlandırır. FPGA'lar gibi farklı donanımlardaki performansı araştırmayı, MPI'ler yoluyla dağıtılmış sistemler için destek eklemeyi ve karma hassas hesaplamalar ile NVIDIA'nın tensör çekirdekleri gibi özel makine öğrenimi donanımlarını kullanmanın etkisini keşfetmeyi planlıyorlar. Bu iyileştirmelerin daha büyük veri kümeleri üzerindeki uygulamalarının hızını ve verimliliğini artıracağına inanıyorlar.
2022 Conference Program
2022 Conference Program
  • 2022.05.22
  • Tim Lewis
  • www.iwocl.org
OpenCL allows a programmer to offload a sequence of commands to a heterogeneous accelerator, such as a GPU. For embedded devices the overhead of building a command sequence can be expensive, and many applications require the same pipeline of commands to be repeatedly enqueued in a loop. For example, in computer vision where the same command...
 

libclcxx ( WOCL / SYCLcon 2022 ) kullanımıyla OpenCL Çekirdeklerinde Daha Zengin C++'a Ulaşmak



Libclcxx kullanımıyla OpenCL Çekirdeklerinde Daha da Zengin C++'a Ulaşmak

Video, C++ kitaplıklarının açık kaynak çekirdek geliştirmeye entegrasyonunu sağlamak için libclcxx'in kullanımını tartışıyor. Proje, geliştiricilere daha fazla C++ işlevselliği sağlamak amacıyla C++'da meta programlama için temel bir kitaplık olan tip özelliklerini bütünleştirir. Video, tür özellikleri kitaplığının, adres alanını ve vektör türlerini değiştirme yeteneği aracılığıyla OpenCL çekirdeklerinin performansını nasıl optimize edebileceğini gösterir. Video, geliştiricileri kitaplığı denemeye ve C++ ile maksimum uyumluluk elde ederken geliştirme döngülerini azaltmaya katkıda bulunmaya teşvik ediyor. Kitaplık, C++ referans sayfalarına benzer bir tarzda oksijen belgeleri sağlayarak, geliştiricilerin yeni işlevler arasında gezinmesini kolaylaştırır.

  • 00:00:00 Bu bölümde, Anastasia'dan Stulova, açık kaynak çekirdek geliştirmede C++ kitaplıklarının kullanımını etkinleştirmek için lipclcxx kullanımını tartışıyor. OpenCL çekirdek dili için C++, C++ yeteneklerine sahipken, kitaplık desteğinden yoksundur, bu da sunulan sınırlamanın ele alınmasını önemli hale getirir. Sonuç olarak, açık kaynak çekirdek geliştiricilerine daha fazla C++ işlevselliği sağlamak amacıyla lipcxcxx'i entegre eden sıçrama clcxx projesi oluşturuldu. Ek olarak, Tulva, typetraits'in C++'da tamamen meta programlamayı kolaylaştırmak için gerekli bir kitaplık olduğunu ve diğerlerinin yanı sıra açık hücre vektör tipi için yeni özellikler eklerken mevcut özellikler için uzmanlık sağlamak üzere ad alanı std'yi genişlettiğini savunuyor. Yeni kitaplık, oksijen belgelerini C++ referans sayfalarına benzer bir tarzda sunarak geliştiricilerin yeni işlevsellikte gezinmesini kolaylaştırır.

  • 00:05:00 Bu bölümde, video, tip özellik kitaplığının kullanımının OpenCL çekirdeklerinin performansını, özellikle adres alanı ve vektör alım satımları açısından nasıl artırabileceğini tartışıyor. Video, kitaplığın farklı işaretçi türleri için bir şablon işlevi oluşturmak için nasıl kullanılabileceğini ve türden adres alanını kaldırmanın OpenCL ortamındaki sorunları nasıl çözebileceğini gösteren örnekler sağlar. Ayrıca video, vektör boyutu ticaretinin dahil edilmesinin hesaplamaları nasıl daha verimli hale getirebileceğini gösteriyor ve indirgeme algoritmalarının uygulanmasının vektör türleri için nasıl uyarlanabileceğini vurguluyor. Genel olarak, OpenCL çekirdeklerinde tür ticaretinin kullanılması daha da zengin C++ programlamaya yol açabilir.

  • 00:10:00 Bu bölümde konuşmacı, vektör boyutunu bir koşul olarak kullanarak OpenCL çekirdeklerinde alarm ekle işlevinin nasıl tanımlanacağını açıklar. Farklı vektör boyutları için farklı bir uygulamanın seçildiğini ve iletilen türün bir vektör türü olmaması durumunda arabellekten bir öğenin döndürüleceğini açıklıyorlar. Konuşmacı ayrıca geliştiricileri denemeye, katkıda bulunmaya ve geliştirme döngülerini azaltmak için C++ ile maksimum uyumluluğu elde etmeye davet ediyor. Eksik özellikler veya hatalar hakkında geri bildirim isterler ve proje sayfasında mevcut bir sorunla ilgili bir tartışmaya katılmaya teşvik ederler.
Reaching Even Richer C++ in OpenCL Kernels with use of libclcxx
Reaching Even Richer C++ in OpenCL Kernels with use of libclcxx
  • 2022.05.22
  • www.youtube.com
Presented at: IWOCL / SYCLcon 2022.Additional Information and Slides: https://www.iwocl.org/iwocl-2022/programIWOCL NewsletterSignup to receive regular updat...
 

OpenCL'nin ötesinde SYCL: hipSYCL'nin mimarisi, mevcut durumu ve gelecekteki yönü (IWOCL / SYCLcon 2020)



OpenCL'nin ötesinde SYCL: hipSYCL'nin mimarisi, mevcut durumu ve gelecekteki yönü

hipSYCL projesi, OpenCL yerine HIP programlama modeli aracılığıyla GPU'ları hedefleyen açık kaynaklı bir SYCL uygulamasıdır. Bir derleyici bileşeni, orak arabirim ve güvenli çalışma zamanından oluşur. Güvenli derleyici, çekirdekleri tanımlar, yerel bellek tahsisini işler ve bir sinyal mekanizması uygular. Gönderim işlevi, kullanıcı tarafından sağlanan çekirdeklere dayalı olarak belirli öğeler oluşturur ve optimize edilmiş işlevler rock prim ile tanımlanabilir. Gelecekteki yön, birden fazla arka uca izin vermek ve statik derleme modelindeki kısıtlamaları kaldırmaktır. İşlem gönderme modeli, daha yüksek görev verimi için toplu gönderime geçiyor ve hipSYCL, kaynak kod düzeyinde birlikte çalışabilir, hip ve CUDA ile karıştırma ve eşleştirmeye olanak tanır. Açık kaynaklı bir proje olarak katkıda bulunanlar kabul edilir.

  • 00:00:00 Bu bölümde konuşmacı, OpenCL kullanmak yerine HIP programlama modeli aracılığıyla GPU'ları doğrudan hedefleyen açık kaynaklı bir SYCL uygulaması olan hipSYCL projesinin arkasındaki motivasyonu tartışıyor. Amaç, kodu optimize etmek ve satıcı tarafından sağlanan profil oluşturucuların ve hata ayıklayıcıların kullanımını kolaylaştırırken diğer programlama modellerinde meydana gelebilecek benimseme sürtüşmelerini ortadan kaldırmaktır. Konuşmacı ayrıca hipSYCL'yi SYCL ve CUDA birlikte çalışabilirliği için mevcut olan diğer çözümlerle karşılaştırarak, hipSYCL'yi HIP programlama modelini kullanması nedeniyle CUDA birlikte çalışabilirlik ölçeğinin sonuna yerleştirir.

  • 00:05:00 Bu bölümde, video hipSYCL'nin nasıl çalıştığını ve üç ana bileşenini açıklıyor: bir derleyici bileşeni, orak arayüzü ve güvenli çalışma zamanı. Derleyici bileşeni, derleyicinin hem CUDA'yı hem de orak'ı anlamasına izin vererek, kaynak kod düzeyinde birlikte çalışabilirliği mümkün kılar. Güvenli çalışma zamanı, veri yönetimi ve görevlerin zamanlanmasıyla ilgilenirken, orak arayüzü, orak ad alanındaki sınıflardan ve işlevlerden oluşur. Ek olarak video, orağın tüm olası kullanım durumlarını kapsayan uygulamalar oluşturmak için kullanılabilecek esnek bir çözüm olduğundan bahsediyor. Hızlandırıcıları hedeflemek için, çekirdekleri tanımlayan ve hızlandırıcı için derleyen özel bir derleyici bileşeni gereklidir.

  • 00:10:00 Videonun bu bölümünde, konuşmacı hipSYCL'deki güvenli derleyicinin nasıl çalıştığını tartışıyor. Derleyicinin çekirdekleri tanımlaması ve aygıta hangi kodun gönderilmesi gerektiğini belirlemesi ve ardından çekirdeklerin yerel bellekte nasıl tahsis edildiğini ele alması gerektiğini açıklarlar. Orağa özgü teşhis özelliği, gelecekteki geliştirmeler için bir öncelik olarak da belirtilir. Konuşmacı, hip-safe derleyici bileşenini kullanmanın, derleyicinin doğru bir şekilde çağrılması ve bağlanması ve içerme yollarının nasıl ayarlanacağı gibi ilgili karmaşıklığı gizleyen Cycle CC adlı bir derleyici sarmalayıcının kullanılmasıyla nispeten basit olduğunu açıklıyor. Çekirdekleri çağırmanın biraz hile gerektirdiğini tartışıyorlar ve nasıl yapıldığını açıklıyorlar. Ek olarak, dinamik sıra dışı işleme için hipSYCL'de Coroutines ve Hip olaylarını kullanan şu anda sinyal mekanizması kullanılıyor, ancak bunun dezavantajı tartışılıyor.

  • 00:15:00 Bu bölümde, konuşmacı, kullanıcı tarafından sağlanan çekirdeğe dayalı olarak belirli bir öğe oluşturmak için gönderme işlevinin nasıl kullanıldığını ve kullanıcı tarafından sağlanan çekirdeğe gönderme işlevini başlatarak for paralelinin ve güvenliğin nasıl uygulanabileceğini tartışır. çekirdek. Bununla birlikte, başlangıçta, tüm kod, kullanıcı tarafından sağlanan çekirdeğin bir ana bilgisayar lambdası olduğu ve doğrudan çağrılamadığı ana bilgisayar kodu olarak iletilir, bu nedenle, yalnızca uygun bir tıklama ile değiştirilecek olan HIP çekirdeği adı verilen sahte bir öznitelik eklerler. öznitelik, ilk ayrıştırma tamamlandığında ve hipSYCL eklentisi devraldığında. Hem hipSYCL hem de CUDA için iyi bellek performansı elde ederler ve hipSYCL kullanarak, kaynak kodu seviyesinde hip ve CUDA birlikte çalışabilirliği elde edebilirler.

  • 00:20:00 Bu bölümde, konuşmacı epsilon ile rock prim kullanarak optimize edilmiş bir indirgemenin nasıl uygulanacağını tartışıyor. Ana bilgisayar ve cihaz olarak işaretlenmiş makro zip güvenli platform cuda veya hips a good platform rockem ile optimize edilmiş bir işlev tanımlamayı önerirler. Hedef platform için derleniyorsa, optimize edilmiş işlev çağrılır, aksi takdirde bir geri dönüş işlevi çağrılır. Konuşmacı, rock prim gibi satıcı tarafından optimize edilmiş kitaplıkların, hedef donanım hakkında daha fazla bilgiye sahip oldukları için daha hızlı performans elde ettiğini ve hipSYCL'nin hala ön uyumlu olmasına ve görüntüler ve açık durum birlikte çalışabilirlik gibi birkaç özelliği eksik olmasına rağmen, gerçek anlamda hala kullanılabilir olduğunu açıklıyor. -dünya uygulamaları. Ancak, saf kitaplık döngüsü uygulamalarıyla ilgili bir sorun nedeniyle CPU paketinde düzenlenmiş bir paralel düşüş yavaştır.

  • 00:25:00 Bu bölümde, konuşmacı bir CPU'da hipSYCL ile temel paralel form veya hiyerarşik paralel form kullanarak nd aralığı paralel form kullanarak performans farklılıklarını tartışıyor. İkincisi, her çalışma grubundaki iş öğeleri kadar tehdit başlatmayı gerektirdiğinden, büyük bir performans kaybına neden olur. Konuşmacı daha sonra hipSYCL'nin gelecekteki yönü hakkında konuşuyor; bu, rasgele arka uçların aynı anda aktif olmasına izin veren ve statik derleme modeliyle ilgili kısıtlamaları kaldıran yeni bir çalışma zamanı yaratmaktır. Ayrıca, donanım kullanımını optimize etmek için n döngüsel M arka uç kuyruğuna eşleme kullandığı uçtan uca eşlemeye geçiş yapıyorlar. Ek olarak, daha kolay bakım ve deneme için yeni çalışma zamanı ile mevcut SYCL arayüzü arasında kesin bir ayrım olacaktır.

  • 00:30:00 Bu bölümde, konuşmacı hipSYCL'deki işlem gönderme modelinde yapılan iyileştirmeleri tartışıyor. Sinyal tabanlı bir gönderim modelinden, işlerin tamamlandığı çalışma zamanına sinyal göndermenin her işlem grubu başına yalnızca bir kez gerçekleştiği ve daha yüksek görev verimine olanak tanıyan bir toplu gönderim modeline geçiş yapıyorlar. Konuşmacı, işlemlerin gönderildiği ve ardından bunları toplayan ve sipariş eden deste oluşturucu tarafından işlendiği süreci açıklar. Güverte zamanlayıcı daha sonra işlemlere yürütme ipuçları atar, bunlar daha sonra çekirdeği yürütmek ve hangi senkronizasyon işlemlerinin gerekli olduğunu belirlemek için arka uç yürütücülerine gider. Bu yapılandırmanın maliyet tahmini, daha sonra daha fazla optimize etmek veya işlemleri olduğu gibi göndermek için deste planlayıcıya geri döner. Konuşmacı ayrıca hipSYCL'nin paket havuzları ve yükleme komut dosyaları aracılığıyla nasıl edinileceği hakkında bilgi sağlar.

  • 00:35:00 Bu bölümde, hipSYCL'nin SICL'nin CPU'lar, video GPU'lar ve AMD GPU'lar için bir uygulaması olduğu açıklanmaktadır. Düşük seviye satıcı API'leri hip ve CUDA'nın üzerine inşa edilmiştir, bu da onu kaynak kodu seviyesinde birlikte çalışabilir hale getirir. Bu, geliştiricilerin hip ve CUDA ile karıştırıp eşleştirmesine olanak tanıyarak, onu en son düşük seviyeli donanım optimizasyonlarına veya satıcı tarafından optimize edilmiş kitaplıklara erişim gerektiren bir dizi HPC ve diğer kullanım durumları için uygun hale getirir. Ek olarak, belirli donanımlar için yüksek düzeyde optimize edilmiş kod yollarının oluşturulmasına izin verir ve çekirdek performansının normal hip veya CUDA ile eşit olması beklenir. Açık kaynaklı bir proje olarak katkıda bulunanlar her zaman memnuniyetle karşılanır ve ilgilenen kişiler bu konuda GitHub sayfasından daha fazla bilgi edinebilir.
SYCL beyond OpenCL: The architecture, current state and future direction of hipSYCL
SYCL beyond OpenCL: The architecture, current state and future direction of hipSYCL
  • 2020.04.28
  • www.youtube.com
This video was presented at the online version of IWOCL / SYCLcon 2020.Authors: Aksel Alpay and Vincent Heuveline (Heidelberg University) Additional Informat...
 

SYCL: gelecek açık, paralel ve heterojen (Core C++ 2022 )



SYCL: gelecek açık, paralel ve heterojen

SYCL programlama hakkındaki bu videoda konuşmacı, karmaşık modellerin hızlandırıcı sistemler tarafından karşılanan artırılmış bilgi işlem gücü gerektirdiğinden üretkenliği artırmak ve daha fazla geliştiriciyi çekmek için soyutlama düzeyine çıkma ihtiyacını vurguluyor. Cihazların CPU'lar, GPU'lar ve diğer cihazlar üzerinde çalışmasına izin verdiği için yazılım taşınabilirliğinin ve OneAPI'nin önemi vurgulanmaktadır. Açık, paralel ve heterojen bir programlama modeli olan SYCL'nin faydaları da tartışılırken, konuşmacı kodu optimize etmek ve performansı artırmak için mevcut olan çok sayıda çevrimiçi kaynak ve aracı vurgulamaktadır. Konuşmacı, izleyicileri kaynaklar ve destek için oneapi.io'yu ve YouTube kanalını ziyaret etmeye teşvik ediyor.

  • 00:00:00 Bu bölümde konuşmacı, üretkenliği artırmak ve daha fazla geliştirici çekmek için soyutlama düzeyine çıkma ihtiyacını tartışıyor. Modeller daha karmaşık hale geldikçe, bilgi işlem gücüne olan talep hızla artıyor. Konuşmacı, montaj veya Cuda geliştiricileri gibi alt düzey uzmanları bulma ve işe almanın zorluğuna atıfta bulunan ninja boşluğundan bahsediyor. Soyutlama düzeyini yükseltmek, performans kaybına yol açar; bu nedenle, artan bilgi işlem gücü talebini karşılamak için GPU'lar ve GAUDI gibi yapay zeka hızlandırıcıları gereklidir.

  • 00:05:00 Bu bölümde konuşmacı, en hızlı performansı elde etmek için hızlandırıcılara olan ihtiyacı tartışıyor, ancak bir hızlandırıcının tüm uygulamaları kapsamak için yeterli olmadığına dikkat çekiyor. ASIC benzeri hızlandırıcılar ve CPU'lar gibi CPU'ları ve hızlandırıcıları birleştiren heterojen sistemler gereklidir. Konuşmacı, yazılımın taşınabilirliğinin önemini ve kodun, kullanılan donanımdan bağımsız olarak, her platform veya işletim sistemi için yeniden kodlamaya, yeniden derlemeye veya yeniden oluşturmaya gerek kalmadan herhangi bir makine veya cihazda çalıştırılabilmesini vurgular. OneAPI, yazılım yığınlarının CPU'lar, GPU'lar ve diğer aygıtlar üzerinde çalışabileceği anlamına gelen açık, ücretsiz ve cihazlar arası yazılım taşınabilirliğini sağlamak için yazılım yığınlarını düzene koyma, kitaplıkları ve araçları birleştirme amaçlı bir endüstri çabasıdır. OneAPI, başlamak için gereken her şeye sahip temel bir araç seti sunar.

  • 00:10:00 Bu bölümde, konuşmacı OneAPI tabanlı araç setini kullanmanın gücünü ve C++ kitaplıklarına heterojenlik eklemek için tasarlanmış Data Policy++ derleyici kavramını tartışıyor. Önceden tanımlanmış ilkeleri kullanarak, OpenCL veya CUDA hakkında daha düşük düzeydeki ayrıntılar hakkında çok fazla şey bilmenize gerek kalmadan CPU veya GPU'ya kolayca erişebilirsiniz. Derleyici, her yerde bulunan anıları kontrol etme ve ayırma, istisna kodlarını işleme ve paralel bilgi işlem oluşturma yeteneği sağlar.

  • 00:15:00 Videonun bu bölümünde konuşmacı, iyi heterojen bilgi işlem yeteneklerine sahip olmak için gerekli olan üç şey olduğunu açıklıyor. Birincisi, cihazı keşfetme ve onun hakkında bilgi edinme yeteneğidir. Burada konuşmacı, sisteme bağlı tüm cihazları algılayan ve listeleyen basit bir kod parçası gösterir. İkinci gereksinim, cihazların durumu hakkında gerçek zamanlı bilgidir; bu, kullanıma ve sıcaklık izlemeye izin verir ve ayrıca kullanıcıların CPU ve GPU arasında geçiş yapmasına olanak tanır. Üçüncü gereklilik, SYCL'de iki ana yolla elde edilen, cihaz ile ana bilgisayar arasında verimli ve sorunsuz bir şekilde bellek alışverişi yapabilme yeteneğidir - arabellekler ve birleştirilmiş grafik belleği.

  • 00:20:00 Bu bölümde konuşmacı, açık, paralel ve heterojen bir programlama modeli olan SYCL kullanmanın faydalarını açıklıyor. SYCL'yi C++'a ekleyerek, GPU'lar, CPU'lar, ARM ve FPGA'lar dahil olmak üzere birden çok aygıtta çalışabilen kodlar yazılabilir. Konuşmacı, SYCL'nin birden fazla cihazla nasıl çalıştırılacağına dair çok sayıda çevrimiçi kaynak ve örnek olduğundan bahseder. Intel Danışmanı, konuşmacının önerdiği, kodu optimize etmeye yardımcı olabilecek ve belirli işlevleri bir GPU'ya aktarma seçeneği sunan bir araçtır. Konuşmacı, kodun çok daha hızlı çalışmasını sağlayabilen ve programın genel performansını iyileştirebilen bu aracı kullanmanın önemini vurgulamaktadır.

  • 00:25:00 Bu bölümde, konuşmacı, kodu birden çok üretici tarafından birden çok cihazda kullanılabilir hale getirmenin en hızlı yolu olarak SYCL kullanımının tanıtımını yapıyor ve izleyicileri kaynak ve destek için oneapi.io web sitesini ve YouTube kanalını ziyaret etmeye teşvik ediyor. Ayrıca belirli örneklerde SYCL'nin CUDA'dan daha hızlı olma olasılığından bahsediyor, ancak SYCL'nin ana avantajının taşınabilirliği olduğunu vurguluyor, çünkü daha sonra çeşitli cihazlarda çalışabilen tek bir platforma kodlamaya izin vererek çoklu platform oluşturma ihtiyacını ortadan kaldırıyor. farklı cihazlar için kodlama kararları. Ayrıca konuşmacı, kullanıcıların SYCL'yi kullanmaya başlamasına yardımcı olmak için tüm soruları yanıtlamayı ve Jupyter dizüstü bilgisayarları ve Intel Devcloud'a erişim gibi kaynaklar sağlamayı teklif eder.
Core C++ 2023
Core C++ 2023
  • Oleh Zasadnyy, GDG Lviv
  • corecpp.org
Core C++ 2023
 

Python'da GPU hızlandırma



Python'da GPU hızlandırma

Video, veri paralelliği ile 10 kata kadar hızlanma sağlayabilen grafik işleme birimlerinin gücünden yararlanarak Python programlamada GPU hızlandırmasının nasıl elde edileceğini açıklıyor. GPU hesaplama için iki standart olan OpenCL ve CUDA kısaca tanıtılır ve video Python'da matris çarpımı için Pi OpenCL ve CUDA'nın kullanımını gösterir. Konuşmacı, matris çarpımı için genel belleğin ve çekirdeğin kullanımını açıklıyor ve ayrıca matris-matris ürünündeki bir öğeyi hesaplamak için kullanılan algoritmayı tartışıyor. C ve Python'daki GPU hızlandırma kodu, matrislerin dahili temsillerini ve bellek tahsisini anlamaya vurgu yapılarak tartışılır. Dersteki alıştırmalar, GPU hesaplamanın daha fazla araştırılması için bir temel sağlar.

  • 00:00:00 Bu bölümde video, veri paralelliğini sağlamanın ve saniyede milyarlarca kayan nokta işlemini işleyebilen grafik işleme birimlerinin gücünden yararlanarak programları hızlandırmanın bir yolu olarak GPU hesaplamayı tanıtıyor. 10 faktörü. GPU hesaplama için iki standart olan OpenCL ve CUDA, Nvidia'dan Kepler, Pascal ve Volta gibi üst düzey GPU örnekleriyle kısaca tanıtılıyor. GPU hesaplamanın büyük ölçüde paralel yönü, GPU'yu meşgul tutmanın bir yolu olarak vurgulanır ve genellikle yeterince çok iş parçacığının programlanması gerekir. Video ayrıca donanım hızlandırıcıların bilimsel ve mühendislik alanlarındaki potansiyel uygulamalarından da bahsediyor.

  • 00:05:00 Videonun bu bölümünde konuşmacı, bir teraflopluk en yüksek performansa sahip Kepler'den 7,9 teraflopu aşan mevcut nesle kadar GPU hızlandırmanın evrimini tartışıyor. Büyük ölçüde paralel bilgi işlemin programlama modeli, tek komutlu çoklu veri yaklaşımını izler ve veriler iş parçacığı bloklarına bölünür ve her blok en az bir iş parçacığı çalıştırır. Konuşmacı, paralel programlama için açık bir standart olan ve GPU hesaplamaya ek olarak çok çekirdekli ve çok iş parçacıklı hesaplamayı kapsayan açık hesaplama diline değiniyor.

  • 00:10:00 Bu bölümde, konuşmacı Python'da GPU hızlandırma için OpenCL ve Pi OpenCL kullanımını tartışıyor. OpenCL, orijinal olarak NVIDIA grafik kartlarında desteklenen ancak kullanımdan kaldırılan genel bir standarttır. Ancak, Apple tarafından başlatıldığı için MacBook'larda iyi çalışır. Pi OpenCL, standart kodu azaltarak ve çekirdeğe daha kolay odaklanmayı sağlayarak OpenCL programlamayı basitleştirir. NumPy dizilerini de destekler, ancak veri yapıları, veri paralelliği nedeniyle daha sınırlıdır. Konuşmacı, test amacıyla iki tamsayı matrisi üzerinde matris çarpımı için Pi OpenCL kullanımını gösterir.

  • 00:15:00 Bu bölümde konuşmacı, GPU'ların Python'da OpenCL kullanılarak matris çarpımı için nasıl kullanılabileceğini açıklıyor. OpenCL ve NumPy dahil olmak üzere gerekli kitaplıkları içe aktarmakla başlarlar. Konuşmacı ayrıca, kullanılan grafik kartının 64 bit aritmetiği desteklemediğini, bu nedenle 32 bit kayan nokta aritmetiğini tercih ettiklerini belirtiyor. Daha sonra matrisleri tanımlarlar, rasgele tamsayılar üretirler ve türlerini 32 bitlik bir akış matrisine değiştirirler. Konuşmacı daha sonra matrislerin cihazdaki karşılıklarını tanımlamak ve kuyruklar oluşturmak için gerekli standart kodu açıklar. Son olarak, konuşmacı, program çalıştırıldığında derlenen matris çarpımı için çekirdeği tanımlar ve GPU'da matrislerin nasıl çarpılacağını gösterir.

  • 00:20:00 Bu bölümde konuşmacı "global" kavramını Python programlamasında GPU hızlandırma bağlamında açıklıyor. Global, matrislerin grafik kartının global belleğinde bulunduğunu belirtir ve her iş parçacığına verilere erişim sağlar. Boyutlar, her iş parçacığının benzersiz bir kimlik numarasına sahip olduğu kısa tamsayılar olarak iletilir. Matris çarpma işlemi, matris satır ve sütun indeksleme yoluyla hemen hemen her parça bağımsız olarak yapılabildiğinden, GPU hızlandırmasından yararlanır. Matrisler C-wise'da uzun bir dizi olarak saklanır ve işaretçiler bellekteki konumlarını belirler.

  • 00:25:00 Bu bölümde konuşmacı, matris-matris çarpımındaki bir öğeyi hesaplamak için C'deki algoritmayı ve genellikle matrislerin boyutlarında kübik bir işlem olan matris-matris çarpımı için potansiyel hızlandırmayı açıklar. Bununla birlikte, GPU'ların ve çekirdek lansmanlarının kullanılmasıyla, işlem doğrusal bir işlemle basitleştirilebilir, bu da maliyetlerde büyük bir azalmaya yol açar ve önemli ölçüde hızlanmalara neden olur. Konuşmacı ayrıca, işlemi gerçekleştirmenin en basit yolunun Python üzerinden ve açıkça derlemeye ihtiyaç duymadan olmasına rağmen, süper bilgisayarlarda kullanılan gerçek algoritmaların, GPU'larda paylaşılan belleklerden ve burada tartışılanların ötesine geçen bir derleme sürecinden yararlandığından bahseder. video. Konuşmacı, PiCUDA ve PiOpenCL'nin programcıların alt düzey derleme ve bağlama süreçleri hakkında endişelenmelerine gerek kalmadan daha yüksek düzeyde kod geliştirmelerine olanak sağladığı fikrini vurguluyor.

  • 00:30:00 Bu bölümde video, Python'da GPU hızlandırma için CUDA kurulumundan bahsediyor. CUDA'yı kullanmak için kullanıcının bir NVIDIA GPU'su ve yüklü sürücüleri olmalıdır. Ders, sistemin düzgün kurulup kurulmadığını kontrol etmek için yönergeleri gözden geçirir ve sunum yapan kişi, tekniğin oldukça etkileşimli paralel hesaplama olduğunu not eder. Öğretim görevlisi, iyi bir grafik kartı ile üst düzey bir dizüstü bilgisayardan iyi performans alınabileceğini açıklıyor. Kurs daha sonra örnek olarak matris çarpımını gösterir. Sunum yapan kişi, tipik olarak CPU üzerinde çalışan bir programın olması gerektiğini ve GPU'nun yalnızca hesaplama açısından yoğun olan bölümleri hızlandırdığını belirtiyor. Son olarak ders, GPU'da karşılık gelen matrisler için bellek tahsisini ve ortaya çıkan matrisleri başlatmayı tartışır ve NumPy ile ayırmaların C ile olduğundan daha iyi olduğunu belirtir. Ek olarak, bu aşamada herhangi bir derleme gerekmez.

  • 00:35:00 Bu bölümde, C'deki GPU hızlandırma kodu ele alınmaktadır. C'deki matrisler satır bazında saklanır ve kod bu gerçeği kullanır. İki boyutlu bir yapıda iş parçacığı bloklarını başlatmak için sözdizimi, iş parçacıklarını açıkça hesaplamak için kullanılır. İşaretçi aritmetiğinden kaçınmak için açık parantezli bir döngü kullanılır. İşlev, girdi için A ve B matrislerini ve C_gpu sonuç matrisini içeren verilerin boyutlarını ve işaretçilerini alır. Aygıta bellek kopyalama, yazdırmadan önce bitmeli ve ana bilgisayara bellek kopyalama, verileri yazdırmadan önce yapılmalıdır, çünkü GPU tarafından yürütülen çekirdek işlevleri içindeki işlevler içinde yazdırma mümkün olmayabilir. Son olarak tartışma, pyCUDA'nın piOpenCL ve PyCUDA'dan daha yeni olduğunu belirterek sona erer.

  • 00:40:00 Bu bölümde konuşmacı, CUDA'ya yönelik olan ancak diğer GPU'larda da çalışma çabaları olan Python'da GPU hızlandırmayı tartışıyor. Hem derleme hem de yürütme ile ilgilenir ve sonraki çalıştırmaları çok daha hızlı hale getirir. Komut dosyası oluşturma ortamında kalarak Python'da GPU çekirdekleri geliştirmek mümkündür; ancak, GPU'ların nasıl çalıştığını ve matrislerin C sözdizimi kullanılarak dahili olarak nasıl temsil edildiğini anlamak gerekir. Dersteki alıştırmalar açık uçludur ve GPU hesaplamayı araştıran ikinci bir proje için temel oluşturabilir. Genel olarak bu, programcıların ve yazılım geliştiricilerin GPU üzerinde çalışan işlevleri nasıl geliştirebilecekleri hakkında bir fikir vermeyi amaçlayan bir giriş bölümüydü.
GPU acceleration in Python
GPU acceleration in Python
  • 2022.02.10
  • www.youtube.com
This lecture introduces PyOpenCL and PyCUDA to define and run functions on General Purpose Graphics Processing Units (GPUs). The running example is a basic ...
 

OpenCL 3.0 Lansman Sunumu (IWOCL / SYCLcon 2020)



OpenCL 3.0 Lansman Sunumu

OpenCL 3.0'ın lansmanı, bu videoda endüstrideki düşük seviyeli paralel programlama için önemine odaklanılarak tartışılıyor. OpenCL 3.0, API'ye yeni işlevler eklemez, ancak OpenCL'nin daha fazla geliştiriciye ve cihaza ulaşmasını sağlamak için bir ekosistem yeniden düzenlemesi sağlar. Sunum yapan kişi ayrıca DSP hafif işlemcileri için uzantıların eklenmesini, gelecekteki işlevsellik için yol haritasını ve OpenCL Vulcan için ruh çekirdekleri oluşturabilen açık kaynaklı çekirdek dili derleyicilerinin büyüyen ekosistemini tartışıyor. Çalışma grubu önümüzdeki birkaç ay içinde ilk uygulama dalgasına hazırlanırken, spesifikasyonun nihai hale getirilmesine yardımcı olmak için kullanıcılardan gelen geri bildirimler teşvik edilmektedir.

  • 00:00:00 Bu bölümde, NVIDIA ve Khronos grubundan Neil Travis, OpenCL 3.0'ın lansmanını ve endüstride düşük seviyeli paralel programlama standardının önemini tartışıyor. OpenCL, GPU satıcıları tarafından yaygın olarak kullanılmaktadır ve uygulamalar, motorlar ve kitaplıklar tarafından giderek daha fazla kullanılmaktadır. OpenCL 3.0'ın piyasaya sürülmesi, OpenCL'nin daha da fazla geliştiriciye ve cihaza ulaşmasını sağlamak amacıyla API'ye yeni işlevler eklemek yerine bir ekosistem yeniden düzenlemesi sağlar. OpenCL 3.0, tüm 2x işlevselliğini noktanın ötesinde isteğe bağlı hale getirerek satıcıların müşterileri için ihtiyaç duydukları işlevselliği sağlamaya odaklanmalarına olanak tanır ve temel işlevsellik konusunda çıtayı yükseltme fırsatını sıfırlar.

  • 00:05:00 Bu bölümde, OpenCL 3.0'ın, DSP ışık işlemcilerinin global ve 3D verileri arasında 2D ve 3D verileri aktarması için eklenen uzantılarla birlikte tüm OpenCL 2.x işlevlerini sorgulamak üzere tasarlanmış birleşik bir API ile birlikte gelen yeni bir spesifikasyon olduğu açıklanmaktadır. Doğrudan Bellek Erişimi (DMA) işlemleri aracılığıyla yerel bellekleri esnek ve eşzamansız olarak. OpenCL 3.0, OpenCL C++ spesifikasyonunu içermese de, diğer uygulamaların, OpenCL C'yi C++ 17'nin çoğuyla karıştırarak Spir-V çekirdekleri oluşturmak için OpenCL için C++ açık kaynak ön uç derleyicisini kullanması teşvik edilir. OpenCL için yol haritası, yeni işlevlerin endüstride benimsenmesi için önce uzantılar olarak gönderilmesini içerir, bu da bunların gelecekteki temel spesifikasyonlara dahil edilmeden önce olgunlaşmalarına ve kanıtlanmalarına olanak tanır. OpenCL çalışma grubu ayrıca profilleri, uygulama esnekliği ile uygulama taşınabilirliğini dengelemek ve hedef pazarlar için parçalanmayı önlemek için hayati bir araç olarak görüyor.

  • 00:10:00 Bu bölümde sunum yapan kişi, OpenCL Vulcan için ruh çekirdekleri oluşturabilen veya diğer API'lerde çalıştırmak için gölgelendiricilere daha fazla çeviri yapabilen clang ve lvm'yi içeren açık kaynak çekirdek dili derleyicilerinin büyüyen ekosistemini tartışıyor. metal olarak. Bu, OpenCL sürücülerini kullanmaya gerek kalmadan Apple platformlarında OpenCL uygulamalarını etkinleştirir. Sunucu ayrıca, LLVM tarafından üretilen ruh çekirdeklerini bir açık kaynak dönüştürme boru hattı kullanarak DXi L'ye çeviren ve dil derleyicilerinin çalışma zamanlarından bağımsız olarak yenilik yapmasını sağlayan OpenCL 12 projesinden bahseder. OpenCL 3 spesifikasyonu geçicidir ve çalışma grubu önümüzdeki birkaç ay içinde ilk uygulama dalgasına hazırlanırken, spesifikasyonu sonlandırmaya yardımcı olmak için kullanıcılardan gelen geri bildirimler teşvik edilir.
OpenCL 3.0 Launch Presentation
OpenCL 3.0 Launch Presentation
  • 2020.05.07
  • www.youtube.com
This video was presented as part of the panel discussion at the online version of IWOCL / SYCLcon 2020, and was presented by Neil Trevett, Khronos Group Pres...
Neden: