Suponha que eu tenha um algoritmo que eu queira implementar em uma GPU. O algoritmo consiste em um loop principal e todas as iterações do loop podem ser executadas em paralelo. Além disso, cada iteração do loop tem um loop interno cujas iterações podem ser executadas em paralelo. Digamos que eu precise de N
iterações do loop principal e M
iterações do loop interno (por iteração de loop principal) e que minha GPU tenha L
núcleos.
Se N+N*M <= L
, posso executar tudo em paralelo. Mas se esse não for o caso, preciso decidir o que executar sequencialmente. Como devo tomar essa decisão? Por exemplo, se N=10
, M=5
, L = 20
, quando devo escolher cada uma dessas opções (ou qualquer outra opção)?:
Tags performance gpu