Qual modelo paralelo teórico é o mais próximo de CUDA?

8

Qual modelo paralelo teórico é o mais próximo do modelo de programação CUDA / OpenCL?

Por exemplo, ele se encaixa em algum grau ao modelo genérico da máquina de acesso aleatório paralelo (PRAM). No entanto, isso é genérico demais, pois abstrai várias latências de acesso à memória e problemas de sincronização.

Minha pergunta é: qual é o modelo teórico em que a arquitetura CUDA se encaixa mais próximo (considerando o paralelismo hierárquico de threads e os blocos de threads que cooperam)?

isti_spl
fonte

Respostas:

6

Que eu saiba, pode ser o modelo de memória compartilhada em fila (QSM) , mesmo que o paralelismo hierárquico de threads não seja levado em consideração. No entanto, são considerados acessos à memória local e à memória global (largura de banda diferente) e sincronização em massa (na qual os threads podem trabalhar de forma assíncrona entre as sincronizações de barreira).

Massimo Cafaro
fonte
1

Como todas as SMs executam a mesma instrução do kernel CUDA no lockstep, eu diria que é SIMD antigo.

user2251346
fonte
Bem, SMs diferentes podem executar instruções diferentes, certo? Dentro de uma única SM, todos os threads em um warp executam a mesma instrução ... mas mesmo warps diferentes no mesmo bloco podem divergir sem nenhuma penalidade. Dito isto, o SIMD também teria sido minha resposta, embora na granularidade do warp, não do SM ou mesmo do bloco.
Patrick87
Descobri que isso hoje é lido na execução da GPU com base no SIMT (single-instructions-multiple-thread), citado por J. Nickolls, I. Buck, M. Garland e K. Skadron, Scalable Parallel Programming with CUDA, Fila 6, 2 ( Mar. 2008), 40-53
user2251346