Web sitesi bilgilerine göre, CUDA ve OpenCL arasındaki farkların kısa bir derlemesi. Lütfen hataları belirtin.
Sapma: Amerika Birleşik Devletleri'ndeki Sandia Ulusal Laboratuvarı'nda yapılan bir simülasyon testi, depolama mekanizması ve bellek bant bant genişliğinin sınırlamaları nedeniyle, 16 çekirdekli, 32 çekirdekli veya hatta 64 çekirdekli işlemcilerin süper bilgisayarlara performans iyileştirmeleri getiremeyeceğini, aynı zamanda verimlilikte önemli bir düşüşe yol açabileceğini kanıtladı.
OpenCL nedir?
Apple tarafından başlatılan ve sektördeki birçok tanınmış üretici tarafından ortaklaşa üretilen, heterojen sistemlerin genel amacı için paralel programlama için açık ve ücretsiz bir standarttır; ayrıca birleşik bir programlama ortamıdır. Yazılım geliştiricileri için yüksek performanslı hesaplama sunucuları, masaüstü bilgisayar sistemleri ve elde taşınabilir cihazlar için verimli ve hafif kod yazmak için kullanışlıdır; çok çekirdekli işlemciler (CPU), grafik işlem birimleri (GPU), hücre tipi mimariler ve dijital sinyal işlemciler (DSP) gibi diğer paralel işlemcilerde yaygın olarak kullanılır ve oyunlar, eğlence, bilimsel araştırma ve tıbbi bakım gibi çeşitli alanlarda geniş gelişim olanaklarına sahiptir.
CUDA nedir?
CUDA, Nvidia GPU'larında paralel hesaplamaya dayalı bir mimaridir. CUDA esas olarak iki yönü içerir: biri ISA komut seti mimarisi; ikinci donanım hesaplama motoru; Aslında donanım ve komut seti. Başka bir deyişle, CUDA'yı X86 veya hücreye benzer bir mimari olarak düşünebiliriz, ancak geleneksel CPU'lara değil, GPU'lara dayanıyor.
OpenCL aslında nedir?
OpenCL aslında heterojen sistemlerin paralel programlanması için yepyeni bir API'dir ve OpenCL bazı paralel hesaplama işleri için GPU'ları kullanabilir. OpenGL grafikler içindir, OpenCL ise paralel hesaplama içindir. OpenCL geliştirme sürecinde teknik platformların tamamı NVIDIA GPU'larından oluşuyor ve aslında OpenCL NVIDIA GPU platformlarına dayanarak geliştiriliyor. Ayrıca, OpenCL'nin ilk demosu da NVIDIA GPU'larda çalışıyordu. Temelde, OpenCL Windows platformunda DirectX'e eşdeğer bir teknoloji olarak tanımlanıyor. Ya da daha doğrusu, donanım ve yazılımı birbirine bağlayan bir API arayüzü. Bu açıdan OpenGL'ye benzer, ancak OpenCL OpenGL'den çok daha kapsamlı ve sadece 3D grafikler için kullanılmaz. Tek bir cümleyle anlatırsanız, OpenCL'nin rolü, işlemci ve GPU'nun hesaplama kaynaklarını çağırarak donanım potansiyelini ortaya çıkararak programın daha hızlı ve daha iyi çalışmasını sağlamaktır.
CUDA aslında nedir?
CUDA mimarisi, özel olarak hesaplama arayüzleri için inşa edilmiş ve bu donanım mimarisi, komut setleri dahil, bu tür paralel hesaplama ve heterojen hesaplama için tasarlanmış tam bir mimari setidir. CUDA mimarisi, OpenCL veya DirectX gibi API'leri destekleyebilir ve CUDA ayrıca C, C++, Fortran, Java, Python ve diğer dilleri de destekler.
OpenCL ile CUDA arasındaki ilişki nedir?
CUDA ile OpenCL arasındaki ilişki çatışma ilişkisi değil, kapsayıcı bir ilişkidir. OpenCL bir API'dir, ilk seviyede CUDA mimarisi daha üst seviyedir; ister OpenCL, ister DX11, ister C dili olsun, Fortran, DX11 bilişim desteklenebilir. Bir program geliştiricisi olarak, genellikle sadece bu dilleri veya API'leri anlar ve kendi programlarını geliştirmek için birden fazla dil kullanabilirler; hangi dili seçerlerse seçsinler, GPU'nun hesaplama gücünü kullanmak istedikleri sürece, bu mimaride CUDA kullanarak programlayabilirler. OpenCL ile CUDA arasındaki teknik farklar esas olarak uygulama yönteminde yansımaktadır. C diline dayalı CUDA, kolayca yazılması kolay bir kod içinde paketlenmiştir, bu yüzden çip yapımına aşina olmayan araştırmacılar bile pratik programlar yazmak için CUDA araçlarını kullanabilir. OpenCL sözdizimsel olarak CUDA'ya yakın olsa da, temel işlemlere daha fazla vurgu yapıyor, bu yüzden daha zordur, ancak bu nedenle OpenCL platformlar arasında çalışabilir. CUDA, bir komut seti mimarisi ve ona karşılık gelen bir donanım motoru içeren paralel bir hesaplama mimaridir. OpenCL, paralel hesaplama için bir uygulama programlama arayüzü (API) olup, OpenCL ise NVIDIA CUDA mimarisindeki C for CUDA'ya ek olarak yeni bir CUDA program geliştirme yoludur. Donanım üzerinde daha fazla kontrol elde etmek istiyorsanız, OpenCL API'yi kullanarak programlayabilirsiniz ve API hakkında çok bilginiz yoksa CUDA C'de de programlayabilirsiniz; bunlar iki farklı programlama yöntemi ve benzerlikleri ve farklılıkları var. Ama OpenCL ve CUDA C dilleri geliştirildiğinde, paralel hesaplamada kavramları benzer oluyor, bu iki programın programlarda büyük benzerlikleri var, bu yüzden programları birbirine taşımak nispeten kolay.
CUDA C dili, OpenCL'den farklı bir konuma sahiptir, yani farklı kişiler kullanır. CUDA C, donanım hakkında çok bilgisi olmayan profesyonel olmayanlar tarafından kolayca kullanılabilen yüksek seviyeli bir dildir; OpenCL, donanım odaklı bir uygulama geliştirme arayüzüdür; bu arayüz programcılara donanım üzerinde daha fazla kontrol sağlar ve başlamak ve geliştirmek daha zor olur. Programcıların kullanım alışkanlıkları da çok önemlidir; X86 CPU platformunda C dilini kullananlar, CUDA GPU platformuna dayalı C dilini kolayca kabul ederler; OpenGL grafik geliştirmeye alışkın olanlar OpenCL'yi daha samimi görecek ve grafik ile video ile ilgili hesaplama programlarını geliştirmek çok kolay olacaktır.
|