Her ikisi de performans açısından aynı olsa da, ilkinin tavsiye edilmediğini dikkate almalısınız.
Çekirdeğin içine bir iş parçacığı döndürün, kodunuzun geri kalanında beklenmeyen bir davranışa neden olabilir.
Beklenmeyen davranışlarla Çözgüde gruplandırılmış minimum iş parçacığı birimi ile ilgili problemi kastediyorum. Örneğin, çekirdeğinizde bir if/else
bloğunuz varsa, bu durum iş parçacığı sapması olarak bilinir ve normal bir durumda, iş parçacığının boşta kalmasına ve bazılarının bazı yönergeleri yürütmesine neden olur. Örnek Kitap, Bölüm 5, Konu İşbirliği ile
CUDA:
Ama __syncthreads durumunda
(), sonuç biraz trajiktir. CUDA Mimarisi hiçbir iplik
Yani, bir çekirdek içinde ipler senkronizasyon ayrılmasından kaynaklanmaktadır() __syncthreads yürüttü blokta her iş parçacığı kadar __syncthreads() ötesinde bir talimat ilerlemek edeceğini garanti eder. Burada bu konu hakkında çok güzel bir soru/cevap bulabilirsiniz: Can I use __syncthreads() after having dropped threads? Final notu, ben de kötü uygulama ve hiçbir sorun ortaya çıktığı kullandım gibi
ama sorunlar ileride doğabilecek garantisi yoktur .
Tavsiye etmem gereken bir şey, her ikisi de size aynı performansı verecektir. – sgarizvi