2011-06-07 20 views

cevap

13

Repa, Haskell'de programlanmış ve Haskell çalışma zamanında çalıştırılan verimli dizi yapımı ve geçişi için bir kütüphanedir. Repa, GHC'nin optimize edicisine ve performans için iplere dayanır. Rasgele Haskell kodunu Repa ile karıştırabilirsiniz (map gibi Haskell fonksiyonlarını değiştirir).

Hızlandırma, GPU programlama için gömülü bir dildir. Hızlandırma, performans için kendi derleyicisine ve GPU paralelliklerine dayanır. Accelerate kütüphanesini kullanan bir kod parçası aslında dizi hesaplama yapmaz. Dizi verilerinizi gerçekten işleyen kodu üretmek için Accelerate'in kendi derleyicisiyle işlenen bir Accelerate programı oluşturur.

GPU'ları Haskell'de programlamak istiyorsanız, Accelerate birincil seçenektir. Kodunuzun CPU'larda çalışmasını istiyorsanız, Repa işleminin yolu. Hızlanma çok çekirdekli kod oluşturmaz. Başka bir hedefi destekleyebilecek şekilde tasarlandı, ancak anlayabildiğim kadarıyla, Hızlandırıcı ile CPU'ları destekleme motivasyonu düşük çünkü daha fazla rekabet var.

Edit: Obsidian ve Nikola GPU programlama için alternatiflerdir. Belgelerin kısa bir araştırmasından, Obsidian'ın kapsamı daha dar görünüyor; Boru hatlarını (f >=> g >=> h) formunda ifade edebilir. Nikola'nın özellik seti Accelerate's'e daha yakın görünüyor. Onları gerçekten karşılaştırmak için deneyimim yok.

+0

GPU'ları programlamak için, ayrıca [Obsidian] (https://github.com/svenssonjoel) ve [Nikola] (http://www.eecs.harvard.edu/~mainland/projects/nikola/) bulunmaktadır. Onlar hem deneysel projeler, hem de Accelerate. –

+0

Teşekkürler, bu yararlı. –

+2

Heads-up, şimdi hızlandırmak çok çekirdekli işlemcileri destekliyor: https://github.com/AccelerateHS/accelerate#additional-components – stites

İlgili konular