Repa ve Accelerate ile uğraştım - ikisi de ilginç, ama birini ve diğerini kullanırken kullanamam. Birlikte mi büyüyorlar, rakipler mi, yoksa sadece farklı problemler için mi?Accelerate and Repa farklı kullanım durumları var mı?
cevap
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.
- 1. DropBoxManager kullanım durumları?
- 2. PHP'de basit kullanım var mı?
- 3. AWS Redshift vs Snowflake kullanım durumları
- 4. Apple Accelerate Framework
- 5. Akka Microkernel'in kullanımı için bazı yaygın kullanım durumları nelerdir?
- 6. Lambdaların farklı tipleri var mı?
- 7. gcroot güvenli kullanım mı?
- 8. Bu zayıf kullanım mı?
- 9. Yerel işlev bildirimleri için herhangi bir kullanım var mı?
- 10. Repa --- Okuma örneği nasıl yapılır?
- 11. 'And' ve 'AndAlso' ile linq'de linkalar arasında fark var mı?
- 12. Birden çok AND operatörü kullanmanın bir alternatifi var mı?
- 13. ionicView.enter İki iç içe durumları var
- 14. Koleksiyondan farklı bir yineleme değişkeni var mı?
- 15. Metin görünümünde farklı renklerde harfler var mı?
- 16. python sürümü var mı?
- 17. # Freeze, modifikasyonu önlemek dışında bir kullanım var mı?
- 18. GPU kullanım geçmişini gösteren bir görev yöneticisi eşdeğeri var mı?
- 19. const için rvalue referansları herhangi bir kullanım var mı?
- 20. Görme engelliler için tarayıcı kullanım istatistikleri var mı?
- 21. '> & 0' (stdin'e yönlendirmek) için kullanım var mı? Bash olarak
- 22. Bu varargs güvenli kullanım mı?
- 23. Dispatcher.DisableProcessing için pratik kullanım mı?
- 24. PyParsing: setParseAction() bu doğru kullanım mı?
- 25. Java - Özel Durumları Kullanma
- 26. Kullanım
- 27. redux eski durumları birleştiriyor
- 28. javascript'te Geters and setters
- 29. arabirim durumları ve
- 30. Durum_machine durumları için adlandırılmış kapsamlar
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. –
Teşekkürler, bu yararlı. –
Heads-up, şimdi hızlandırmak çok çekirdekli işlemcileri destekliyor: https://github.com/AccelerateHS/accelerate#additional-components – stites