NVIDIA GPU'lar, Codeplay DPC ++ Standardının Geliştirilmesine Katkı Sağladıktan Sonra SYCL Desteği Aldı
Intel, Xilinx, Renesas ve Imagination Technologies, SYCL ('orak' olarak telaffuz edilir) gibi önde gelen şirketlerden destek aldıktan sonra, NVIDIA GPU'ları kullanan geliştiriciler artık bundan yararlanabilecekler. SYCL Topluluğuna kararlı bir şekilde aktif bir katkıda bulunan kuruluş olan Codeplay, şimdi çeşitli donanım platformlarında kodu geri dönüştürme ve yeniden kullanma olanağı sağlayan gelişmiş DPC ++ (Data Parallel C ++) geliştirme sürecini tamamladı. Sonuç, Codeplay’in kendi SYCL uygulaması olan ComputeCpp oldu.
ComputeCpp’nin Son Sürümü, OpenCL ve NVIDIA’nın PTX’ini kullanarak NVIDIA GPU'lar için Deneysel Destek Sunuyor
Geçen yıl Intel, SYCL'yi desteklemek için kararlı bir adım attı ve hatta oneAPI Standardı üzerinde çalışmaya başladı. OneAPI, Intel’in CPU’ları, GPU’ları ve FPGA’ları için DPC ++ (uzantılarla birlikte bir SYCL uygulaması) içerir. Hareket kısa sürede oldukça büyüdü ve Xilinx, Renesas ve Imagination Technologies'den SYCL'ye destek geldikten sonra ivme kazandı. Basitçe söylemek gerekirse, yazılım geliştiriciler artık SYCL kullanarak çok çeşitli cihazları hedefleyebilmektedir.
ComputeCpp, OpenCL ve NVIDIA’nın PTX'ini kullanarak NVIDIA GPU'lar için deneysel destek sunar. Ancak DPC ++ (Intel’in SYCL uygulaması), OpenCL'den geçmeden LLVM derleyicisine entegre NVIDIA GPU'lar için tam destek ekleme fırsatı sunar. Codeplay, SYCL geliştiricilerinin NVIDIA GPU'ları hedeflemesini sağlayan uygulamalarının ilk, deneysel aşamasını açık kaynaklı olarak kullandıklarını duyurdu. Bu uygulama için kod tabanı,ayrı bir çatal hem ana LLVM derleyici projesinden hem de DPC ++ dalından. Kuruluş, yukarı akış Intel / LLVM derleyicisine eklenen NVIDIA GPU desteğini almak için Intel ile çalışmayı planladıklarını ekledi.
Geliştiriciler NVIDIA GPU'lar İçin SYCL Desteğinden Nasıl Yararlanabilir?
Bu proje, geliştiricilerin sistemdeki OpenCL katmanından geçmek zorunda kalmadan SYCL kodunu kullanarak NVIDIA GPU'ları hedeflemesini sağlar. Başka bir deyişle, yalnızca bir NVIDIA GPU ile geliştiriciler, SYCL uygulamalarını derlemek için sistemlerinde DPC ++ çalıştırabilirler. Ayrıca, mevcut herhangi bir CUDA Uygulaması, CUDA desteği kullanılarak aşamalı olarak SYCL'ye taşınabilir ve ardından CUDA olmayan bir platformda çalıştırılabilir. Bu açıkça çok fazla zaman ve tekrarlanan çabalardan tasarruf sağlar.
Codeplay, DPC ++ için NVIDIA arka ucunun nasıl kullanılacağını açıklayan proje README dosyasında talimatlar sunmuştur. Geliştiricilerin derleme sırasında bazı işaretler kullanmaları ve çalışma zamanının hangi cihazı hedefleyeceğini bilmesini sağlamak için cihaz seçicilerini ayarlamak için bazı kodlar kullanmaları gerekir. Özellikle "NVIDIA CUDA desteğiyle SYCL araç zinciri oluşturun"Ve Clang derleyici seçeneklerindeözel talimatlar.
Codeplay, projeyi bir Titan RTX GPU üzerinde CUDA 10.1 kullanarak Ubuntu 18.04 ile başarılı bir şekilde çalıştırdıklarını doğruladı (hesaplama yetenekleri 7.5). Ekip, SM 5.0 veya üstü ile uyumlu herhangi bir NVIDIA GPU ile diğer Linux sürümlerinde de çalışması gerektiğini garanti eder. Ancak, derlenen SYCL uygulaması, aynı anda ikisini birden değil, yalnızca CUDA veya OpenCL'yi hedefleyebilecektir.
Ekip ayrıca, projenin ilk sürümünün optimize edilmediğine, bu nedenle performansın her koşulda optimal olmayabileceğine dikkat çekiyor. Diğer bir deyişle, geliştiricilerin aynı şeyi dağıtması ve varsa hız iyileştirmelerini kendilerinin tespit etmesi gerekecektir. Bunun nedeni, kod oluşturmanın belirli optimizasyon geçişleri uygulamamasıdır. Ayrıca, Eklenti Arayüzündeki SYCL spesifikasyonunun CUDA uygulaması, herhangi bir gelişmiş CUDA özelliğini kullanmaz.
Codeplay, uyumluluğu ve işlevselliği artırmanın en önemli öncelikleri olmaya devam ettiğini gösterdi. Mevcut odak noktasının, geliştiricilerin NVIDIA GPU platformlarında çeşitli SYCL uygulamalarını çalıştırabilmeleri için olabildiğince fazla işlevsellik uygulamak olduğunu belirttiler. Performans optimizasyonları daha sonra topluluk üyelerinin yardımıyla yapılacaktır.