Son yıllarda, genel amaçlı veri güdümlü paylaşılan bellek paralelliğinin bir biçimini ya da bir diğerini sunan birkaç kütüphane / yazılım projesi ortaya çıkmıştır.
Ana fikir, açık bir şekilde iş parçacıklı kod yazmak yerine, programcıların algoritmalarını, daha sonra paylaşılan bellek makinesindeki genel amaçlı bir ara katman yazılımı tarafından dinamik olarak planlanan, birbirine bağlı görevler olarak gerçekleştirmesidir.
Bu tür kitaplıklara örnekler:
QUARK : Başlangıçta MAGMA paralel lineer cebir kütüphanesi için tasarlanmış , paralel Fast Multipole Metodu için de kullanılmış gibi görünüyor .
Cilk : Başlangıçta Intel tarafından desteklenen, C'ye dil / derleyici uzantıları olarak uygulanan, Cilkchess bilgisayar satranç yazılımında ve deneysel olarak FFTW'de kullanılan MIT tabanlı bir proje .
SMP süperscalar :
#pragma
Genişletmelere dayalı olarak birçok açıdan Cilk'e benzeyen Barselona Süper Bilişim Merkezinde geliştirildi .StarPU : GPU'lar da dahil olmak üzere çeşitli farklı mimariler için derlenebilen ve programlanabilen benzer kütüphane tabanlı "codelets".
OpenMP görevleri: Sürüm 3.0'dan itibaren OpenMP, eşzamansız olarak programlanabilen "görevler" i tanıttı (belirtimin Bölüm 2.7'sine bakın).
Intel'in İş Parçası Yapı Taşları : Eşzamansız görevler oluşturmak ve başlatmak için C ++ sınıflarını kullanır, Eğiticinin 11. Bölümüne bakın.
OpenCL : Çoklu çekirdeklerde göreve dayalı paralellikleri destekler.
Bu kütüphanelerin / dil uzantılarının içsel çalışmasını ve bunların belirli sorunlara uygulanmasını açıklayan çok sayıda literatür olmasına rağmen, bunların bilimsel hesaplama uygulamalarında pratikte kullanıldıklarına dair çok az örnekle karşılaştım.
İşte soru şu: Paylaşılan bellek paralelliğinde bu kütüphanelerden / dil uzantılarından herhangi birini veya benzerlerini kullanan bilimsel bilgi işlem kodlarını bilen var mı?