İki büyük işlevin olduğunu varsayalım. Bunları ayrı bir çekirdek halinde yazmak ve sırayla mı çağırmak daha iyi mi yoksa sadece bir çekirdek yazmak daha mı iyidir? (Verileri okumak istemiyorum ve arasında ana makine ve aygıt arasında zorlamak istemiyorum). Çekirdeği birçok kez çağırmak istersem hız ne olacak? Bu GeneldeBirden çok çekirdek veya Tek çekirdek yazma
cevap
bir şey donanım kullanımı ve performansı üzerindeki kayıt basıncının etkisidir.
Genel bir kural olarak, büyük çekirdekleri büyük sicil ayak izleri var. Tipik OpenCL aygıtları (yani GPU'lar) sonlu kayıt dosya boyutlarına sahiptir ve büyük çekirdekler daha düşük eşzamanlılık (daha az eş zamanlı çözgü/dalga cephesi), gecikme saklaması için daha az fırsat ve daha düşük genel performansla sonuçlanabilir. Öte yandan, kernel başlatma ek yükleri çoğu platformda oldukça düşüktür, bu nedenle algoritmanızın yürütmenin "fazları" arasında muazzam miktarda devlet yoksa, birden fazla çekirdek kullanmanın cezası oldukça düşük olabilir. Birden çekirdekleri kullanarak
da başka yan yararı vardır - ücretsiz tüm çalışma birimleri arasındaki örtülü senkronizasyon olsun. Çoğu zaman, kod performansı üzerinde olumsuz bir etkisi olabilecek atomik bellek işlemlerine ve senkronizasyon temellerine olan ihtiyacı ortadan kaldırabilir.
nihai kılavuz
performansı ölçülmelidir. Bu tür şeyler için evrensel bir kural yoktur. Kıyaslama, kesin olarak bilmenin tek yoludur. OpenCL'de kodlamakApple katılıyorum: https: // geliştirici. apple.com/library/mac/documentation/Performance/Conceptual/OpenCL_MacProgGuide/TuningPerformanceOntheGPU/TuningPerformanceOntheGPU.html –
kodunuzun okunabilirliği sayfalardan (belki) biraz daha iyi bir performans sorudur. Aynı bağlamda kaldığınız sürece arabellek kopyalamak sorun olmaz. Örneğin. Bir çekirdeğin bir çıktı arabelleğini, herhangi bir kopyalama içermeyen bir sonraki çekirdeğin giriş arabelleği olarak ayarlayabilirsiniz. dikkate almak
uygun yolu paralel görevler içine kodunu ayırmak için, ve her biri bir çekirdek olduğunu. Bu, her "döngü için" bir çekirdek olmalıdır. Bazı zamanlarda tek bir CPU kod fonksiyonu OCL'de 4 çekirdek uygulamasına neden olabilir. Eğer çekirdek yürütmeler arasında veri depolamak gerekiyorsa
sadece (-> HOST darboğaz bu CİHAZI < çözer) OpenCL tamponlarını kullanmak ve barındırmak için kopyalamayın. Her iki fonksiyonlar farklı verilere hareket ederse
propably tek çekirdek yazabilirim, ama bu işlemin hem kaçak karmaşıklığına bağlıdır.
- 1. R foreach birden çok çekirdek kullanmıyor
- 2. Kakao 2D grafikler: Kuvars, Çekirdek İmaj veya Çekirdek Animasyon?
- 3. Birden fazla çekirdek kullanmıyor mclapply
- 4. ASP.NET Çekirdek 2 Çekirdek Veritabanı
- 5. CUDA Eşzamanlı çekirdek yürütme akışı başına birden çok çekirdekle yürütme
- 6. Entity Framework Çekirdek
- 7. Solr fieldTypes, birden çok çekirdek arasında nasıl paylaşılabilir?
- 8. Bash: Aynı programı birden çok çekirdek üzerinde çalıştırma
- 9. Birden çok yüksek öncelikli iş parçacığı birden çok çekirdek üzerinde çalıştırıldığında Linux çekirdeği yanıt vermiyor
- 10. iPhone - Çekirdek Verilerini NSFetchResultsController
- 11. Benzersiz Çekirdek Veri varlığı bul veya oluştur
- 12. NET'te Çekirdek
- 13. NSCoding VS Çekirdek verileri
- 14. Çekirdek Verileri Bellek Yönetimi
- 15. ScheduledThreadPoolExecutor Verilen çekirdek
- 16. Çekirdek Ortam eklentisi tanımlayıcısı
- 17. SqlDataReader'dan Birden Çok Dosya Yazma
- 18. NSSet (Objective-C) - Çekirdek Verilerde - Çok Sayıda ilişki gösterimi - nasıl etkin bir şekilde yinelenir? Çekirdek Veri
- 19. NoUniqueBeanDefinitionException: [javax.persistence.EntityManagerFactory] türünde hiçbir nitelikli çekirdek tanımlanmamıştır: beklenen tek eşleşen çekirdek
- 20. Çekirdek genişletme Laravel 5 işlevi
- 21. node.js çekirdek Windows 7
- 22. yedekleme .sqlite (Çekirdek veri)
- 23. Bir çekirdek modülünü sınama
- 24. Çekirdek Yer bölge izleme
- 25. Linux Çekirdek kodlama stili
- 26. JsonSerializerSettings ve Asp.Net Çekirdek
- 27. birim test ASP.NET Çekirdek kontrolör
- 28. ASP.Net çekirdek proje değil
- 29. .NET Çekirdek Uygulama
- 30. Çekirdek modülünde fiziksel ve mantıksal çekirdek numarası nasıl bulunur?
Burada bir benzer görünüm var: stackoverflow.com/questions/9208535/how-to-handle-a-variable-number-of-algorithms-in-a-kernel – rdoubleui