2011-07-05 20 views
10

GPU'larda şube önceliği hakkında bir sorum var. Bildiğim kadarıyla, GPU'larda, şubelerle ön hazırlık yapıyorlar. Bir 40 döngü alır ve bir çözgü varsayarak, A ve B'nin her ikisi de çalıştırılır, B, yürütme tamamlamak için 50 döngü sürerseGPU'da şube tahmini

çok
if (C) 
A 
else 
B 

, yapar:

Örneğin böyle bir kod Bu dalı bitirmek için toplam 90 döngü alır? Ya da A ve B üst üste biniyorlar, yani A komutunun bazı komutları yürütüldüğünde, bellek talebi için bekleyiniz, daha sonra B komutları çalıştırılıyor, sonra hafızaya geçiyor, vb. Teşekkürler

+10

Bu soruyu daha fazla düzenlemeye istekli olanlar için, şube tahmini ve dal tahmininin ** ** aynı şey değil ...... – talonmies

+0

iyi tanımını burada bulabildiğine dikkat edin: http: // www.yosefk.com/blog/simd-simt-smt-parallelism-in-nvidia-gpus.html –

cevap

11

Şu ana kadar yayımlanan tüm CUDA özellikli mimariler bir SIMD makinesi gibi çalışır. Bir çözgü içinde dal sapması olduğunda, her iki kod yolu de, bir NOP'nin işlevsel eşdeğerini çalıştıran aktif yolu takip etmeyen iplerle, çözgüdeki bütün dişler tarafından yürütülür (sanırım şartlı bir yürütme olduğunu hatırlıyorum Bir iş parçacığına, her bir iş parçacığına, etkin olmayan iş parçacıklarının maskelenmesine izin veren bayrak. Örneğin, örneğinizde, 90 döngü yanıtı, muhtemelen alternatiflerden gerçekten ne olduğuna dair daha iyi bir yaklaşımdır.

+0

Hatırladığım gibi, CUDA asmında bir dal talimatı var, ancak dal çözgü iplikleri tarafından alınacak. – osgx

+2

ptx_isa.pdf olarak: "Bir warp iş parçacığı, veri bağımlı bir koşullu dalı aracılığıyla uzaklaşırsa, çözgü seri olarak, her bir yol yolunu yürütür, bu yolda olmayan iş parçacıklarını devre dışı bırakır ve tüm yollar tamamlandığında, iş parçacıkları aynı yürütme yolu. " Bu nedenle, PTX'de bir koşullu dal var ama Warp'in tüm parçaları aynı zamanda bu dalı almalı ve tekdüze olmalı (performans elde etmek için) – osgx

+0

Teşekkürler taksonomi ve osgx. Yani yukarıdaki durumda, kodu yürütmek için 90 döngü olacaktır. Ama acaba neden alternatifi uygulamıyorlar? A ve B çakışmalarını kastediyorum, bu yüzden verim daha yüksek olmalı. Bu durumda, hala SIMD tarzında çalışır, ancak sadece gecikme daha iyi gizlenebilir (dalın diğer yolunu çalıştırarak)? – Zk1001