Programcılar neden paralellik için C / POSIX'in yerini alacak programlama modellerini tanımlamaktadır?


10

Yeni bilgisayar mimarileri sağlayıcıları düzenli olarak yeni programlama modelleri sunmaya çalışır, örn. GPGPU'lar için yakın zamanda CUDA / OpenCL ve platform paralelliğinin kontrol arabirimi olarak C / POSIX'i değiştirir. (Poss & Koening, AM3: Çok çekirdekli bir Unix hızlandırıcısına doğru, 2015)

Mimari tasarımcıları neden paralel hesaplama için C / POSIX'in yerini almak üzere yeni programlama modelleri tasarlamaya çalışıyor? C / POSIX çok işlemcilere uygun değil mi veya C / POSIX'in orijinal yazarlarının C / POSIX tasarım zamanında paralel hesaplama ihtiyacı göz önünde bulundurulmadı mı? Yoksa programcıların C / POSIX'in sunabileceğinden daha fazla kapasiteye ihtiyaç duyması, CUDA / OpenCL gibi yeni tasarımlara başvurması mı?


7
Unutmayın, yazılım bir donanım soyutlamasıdır. Donanım çok fazla değişirse, yazılım soyutlaması artık iyi bir şey olmayabilir. Bir GPU için POSIX iş parçacığı kullanmayı düşünürken bunun kesinlikle doğru olduğuna inanıyorum, ancak bir cevabı daha ayrıntılı olarak açıklamak için başka birine bırakacağım.

Yanıtlar:


10

Örneğin POSIX iş parçacıklarını ve Grand Central Dispatch'i karşılaştırın. Sekiz satır kod dört iş parçacıkları gönderir kod var. POSIX ile, bunların hepsi mutlak bir kabus olur.

Öte yandan, CUDA / OpenCL çok iş parçacıklığından ibaret değil, büyük vektör yeteneklerini kullanmakla ilgilidir. (Çok iş parçacığı da yapabilirler, ancak vektörleştirme önemli bir şeydir).


9

SIMD paralel programlama ile POSIX'in kullandığı daha geleneksel paralel programlama modeli arasında bir fark vardır .

SIMD, CUDA, OpenCL vb. Tarafından kullanılan modeldir. Her biri kendi veri havuzunda çalışan birçok iş parçacığı tarafından aynı anda yürütülen tek bir talimat kümesi vardır. Bu, aynı dönüşümlerin çok sayıda noktaya uygulandığı 3 boyutlu grafikler gibi şeyler için çok yararlıdır.

POSIX modeli, her iş parçacığının eşzamansız olarak çalıştığını ve her iş parçacığının tamamen farklı kod çalıştırabileceğini varsayar.

Her iki modelin de güçlü ve zayıf yanları vardır - bu yüzden farklıdırlar. POSIX çok daha esnektir, ancak CUDA / OpenCL / vb. aynı anda binlerce (genellikle daha basit) iş parçacığı çalıştıran özel donanımdan yararlanabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.