CUDA - Programação Paralela

Post on 12-Apr-2016

220 views 5 download

description

Trabalho sobre ocupância

Transcript of CUDA - Programação Paralela

Trabalho 2

Aluno: José Bonifacio da Silva JúniorProfessor: Marco Túlio Chella

Histórico

• Antes do CUDA 6.5...• Cálculo da ocupância era complicado.• Leva em consideração as capacidades da GPU.• Uso da planilha calculadora de ocupância em

vez da implementação.

Cenário atual• Cuda 6.5 oferece funções em tempo de execução para calcular a

ocupância.• A API núcleo da calculadora de ocupância:

cudaOccupancyMaxActiveBlocksPerMultiprocessor.• Prediz a ocupância em termos do tamanho do bloco e uso de

memória compartilhada de um kernel.• Multiplicando-a pelo número de warps por bloco produz o número de

warps por multiprocessador simultâneos; Além disso dividindo os warps simultâneos pelo máximo de warps por multiprocessador temos a ocupancia como uma porcentagem.

• Fonte: http://devblogs.nvidia.com/parallelforall/cuda-pro-tip-occupancy-api-simplifies-launch-configuration/

• Documentação do CUDA 7.5Assinatura:CUresult cuOccupancyMaxActiveBlocksPerMultiprocessor ( int* numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize )

• Retorna a ocupância de uma função.

• Parâmetros• numBlocks- Ocupância retornada;• func- Kernel para qual a ocupância será calculada;• blockSize- Tamanho do bloco o qual o kernel está tentado ser lançado;• dynamicSMemSize- Memória dinâmica compartilhada por bloco usada, em bytes.

Fonte: http://docs.nvidia.com/cuda/cuda-driver-api/index.html#ixzz3oDWa7dlZ

• Além disso disponibiliza as APIs cudaOccupancyMaxPotentialBlockSize e cudaOccupancyMaxPotentialBlockSizeVvariableSMem para calcular dinamicamente tamanhos de blocos que atinjam teoricamente uma ocupância máxima.

• Fonte: http://devblogs.nvidia.com/parallelforall/cuda-pro-tip-occupancy-api-simplifies-launch-configuration/