Consumo de energia do código OpenCL em execução em uma GPU NVIDIA

0

Estou tentando executar o código OpenCL para um decodificador MJPEG em uma GPU Nvidia (Tesla K20c). Fiz perguntas sobre outros sites de troca de pilha sobre a implementação o decodificador na GPU e agora estou tentando calcular o consumo de energia de cada kernel OpenCL individual sendo executado no Tesla K20c. (eu traduzi 4 funções seqüenciais em C, ou seja, iqzz, IDCT, upsampling e conversão de cores em kernels OpenCL).

Eu tenho usado nvidia-smi para verificar a potência sendo gerada pela GPU quando estou executando meu código OpenCL. O consumo de energia ocioso do K20c é de 17 W quando nenhum código está sendo executado.

Euuseioseguintemétodoparaexaminaropoderdecadakernelindividual:

ParacalcularoconsumodeenergiadeumdeterminadokerneldoOpenCL,tenhocomenteioskernelsOpenCLrestantesedeixeisuasversõesequivalentesdeCrodarememseulugar.Eutenhofeitoissoparadeixarocódigofuncionarcorretamente.Assim,quandoeuqueroexecutaroutrokernelOpenCL,euativo(descomente)asversõesCdeumúnicothreaddosoutroskernels.

Cadanúcleocujopodereuqueriaexaminardamaneiraacima,extraíapodernafaixadeaproximadamente49Wa55W.OkerneldafunçãoUpsamplingconsumiaamaiorquantidadedeenergia(55W).

Alémdisso,acreditoque,seeuexecutartodososkernelsOpenCLdeumasóveznaGPU,ovalortotaldeconsumodeenergiadeveserumasomadosvaloresqueobtivequandoexecuteicadakernelindividualmente.Emvezdisso,oconsumototaldeenergiaquandoeucorritodososkernelsdeumavezveioaser54.83W!OconsumodeenergiaéaindamenorqueaenergiaconsumidapelokernelparaUpsampling.

VocêtemalgumasugestãoparacalcularcorretamenteaenergiaconsumidaporcadakernelnomeucódigoOpenCL?Amaioriadostrabalhosdepesquisa(comoisso menciona técnicas sofisticadas, como anexar sondas ao barramento PCI, à CPU e à GPU. No entanto, eu tenho um sistema fechado e não posso usar meios físicos para medir o poder.

ADIÇÃO:

A porcentagem de utilização da GPU alcançou 98% quando uma vez adicionei as declarações printf a um dos meus kernels.

    
por a_sid 26.12.2017 / 09:30

1 resposta

0

nvidia-smi está retornando informações de consumo de energia para toda a GPU, o que, na minha opinião, não será capaz de fornecer a granularidade desejada.

O consumo de energia para um "kernel individual" não faz muito sentido nesse contexto; a GPU estará consumindo alguma quantidade de energia, independentemente do que estiver sendo executado nela. (Esse número deve ser sua linha de base para o consumo de energia.)

  • O número de 54.83W que você citou implica que seu kernel está consumindo menos energia que aumenta o upsampling, o que faz sentido, já que upsampling é uma operação muito cara e facilmente queimaria 170 mW mais energia.

(A medição inativa de 17W é enganosa, porque o chipset é provável em algum estado de suspensão ACPI, onde partes do chip são desligadas, permitindo um consumo de energia "anormalmente" baixo, que você nunca poderia alcançar com nenhum tipo de kernel correndo.)

    
por 26.12.2017 / 23:51