C/C++ CUDA IA
CUDA – Trabalhando com Memória da placa de vídeo

Neste artigo irei apresentar como trabalhar com a memória da placa de vídeo, na lib CUDA da NVIDIA.

GIT

O exemplo deste projeto pode ser visto no git.

https://github.com/marcelomaurin/CUDA2

Código do projeto

Veremos a seguir o projeto do código, onde em seguida irei comentar o mesmo:


#include <stdio.h>
#include "cuda_runtime.h"

#define TAM_MAP 30

//Kernel
__global__
void projecao_x(int *p_param){
	printf("video: %d\n",*p_param);
	*p_param += 5; /*muda valor*/
}


int main(){
	int valor;
        valor = 10; /* declaração da variavel alocada no pc*/
	cudaDeviceReset();

	int *d_param; /*Declaracao da variavel alocado na placa de video*/


	/*alocação de variaveis da placa de vídeos*/
	cudaMalloc((void**)&d_param,sizeof(int));         /*aloca na cuda o tamanho de 1 inteiro*/


	cudaMemcpy( d_param, &valor,
                              sizeof(int),
	                      cudaMemcpyHostToDevice);

	printf("Chamando hello!\n");
	projecao_x << <1, 1>> >(d_param); /*Criação funcao do processador*/
	cudaDeviceSynchronize();
	cudaMemcpy( &valor, d_param,
                             sizeof(int),
                             cudaMemcpyDeviceToHost);
	printf("pc:%d\n",valor);
	cudaFree(d_param);
	return 0;
}

O que faz o programa

O Programa acima cria uma variavel na placa de vídeo chamada d_param, que é atribuído valor 10 no Desktop.

Depois ao ser chamado a thread, e já na placa de vídeo, seu valor é modificado.

Por fim é transferida para a memória do desktop, e em seguida apresentada no desktop.

Funções importantes

cudaMalloc – É responsável pela criação da variavel na placa de vídeo.

cudaMemcpy – É responsável por copiar os dados de um espaço para outro. Nos dois sentidos DESKTOP -> VIDEO, e VIDEO -> Desktop.

Bom pessoal, espero que tenham gostado deste artigo.

Os próximos espero serem mais emocionantes.

Vida longa e prospera a todos.

Blog C/C++ CUDA IA pós graduação Python
Install CUDA toolkit em xubuntu 18.04

CUDA Toolkit é um conjunto de ferramentas desenvolvidas para programação em GPU.

Este processo tambem foi testado em uma máquina Ubuntu 20.04.02.

Informações relacionadas ao Toolkit:

https://developer.nvidia.com/cuda-toolkit

Para instalação é necessário verificar a sua distribuição, no caso do ubuntu ou xubuntu 18.04.

Siga os passos abaixo:

Baixe o arquivo pin

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin

Mova para o repositório de pacotes

sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600

Baixe agora o pacote cuda.

wget https://developer.download.nvidia.com/compute/cuda/11.4.1/local_installers/cuda-repo-ubuntu1804-11-4-local_11.4.1-470.57.02-1_amd64.deb

Instale o pacote conforme o comando abaixo:

sudo dpkg -i cuda-repo-ubuntu1804-11-4-local_11.4.1-470.57.02-1_amd64.deb

Adicione a chave do repositório

sudo apt-key add /var/cuda-repo-ubuntu1804-11-4-local/7fa2af80.pub

Por fim atualize a lista de pacotes:

sudo apt-get update

sudo apt-get upgrade

Baixando o pacote cuda, e suas dependencias.

sudo apt-get -y install cuda

Etapas intermediarias de instalação do CUDA
Processo final baseado no apt do pacote.

As informações aqui fornecidas, foram retiradas do site:

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=18.04&target_type=deb_local

Procedimento Ubuntu 20.04

Referencia:

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin

sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/11.5.1/local_installers/cuda-repo-ubuntu2004-11-5-local_11.5.1-495.29.05-1_amd64.deb

sudo dpkg -i cuda-repo-ubuntu2004-11-5-local_11.5.1-495.29.05-1_amd64.deb

sudo apt-key add /var/cuda-repo-ubuntu2004-11-5-local/7fa2af80.pub

sudo apt-get update

sudo apt-get -y install cuda

Tela da instalação do CUDA em UBUNTU 20.04
Finalização da Instalação do CUDA

Outros artigos

    Blog CUDA Delphi Relógio Sem categoria
    Ler Temperatura Placa de Video NVIDIA

    Falaremos neste artigo, como obter a temperatura da placa de Vídeo (GPU) NVIDIA.

    Abordaremos o procedimento mais simples de integração, e leitura das informações da placa de vídeo, integrando com Lazarus.

    A placa de vídeo, hoje é requisito obrigatório para qualquer computador realmente robusto.

    Placas de vídeo com grande capacidade, por vezes precisam ser monitoradas para evitar super aquecimento .

    Atualmente projetos de CASEMOD não seriam realmente case mode, se não lerem estas informações.

    Pensando nisso a NVIDIA, lançou um conjunto de ferramentas que auxiliam o desenvolvedor na obtenção de forma fácil e assertiva, na leitura das informações da GPU.

    O NVIDIA System Management Interface é um utilitário, baseado no NVML (NVIDIA MANAGEMENT Library) que gerencia e monitora dispositivos NVIDIA.

    Este utilitário tambem administra por pesquisas por estado de dispositivo GPU , atribuindo privilegios , permitindo administradores modificares o estado da GPU.

    NVIDIA-smi é embarcado com o driver para linux do NVIDIA GPU , e windows 64bits (WIN7/2008).

    O NVIDIA-smi pode fornecer informações em formato XML ou em arquivo texto simples.

    Para maiores informações consulte a documentação:

    nvidia-smi documentation.

    O fragmento acima é uma tradução livre do site:

    https://developer.nvidia.com/nvidia-system-management-interface

    Integração com LAZARUS

    O Componente TProcess , permite a integração de comandos através da console.

    Segue o fragmento de código para analise.

    function GetGPUTemperature: string;
    var
    cmd : TProcess;
    AStringList: TStringList;
    begin
    cmd := TProcess.Create(nil);
    // Cria o objeto TStringList.
    AStringList := TStringList.Create;
    cmd.CommandLine:='nvidia-smi -i 0 --format=csv,noheader --query-gpu=temperature.gpu';

    cmd.Options := cmd.Options + [poWaitOnExit, poUsePipes];
    cmd.Execute;
    AStringList.LoadFromStream(cmd.Output);
    result := trim(AStringList.Text);
    AStringList.Free;
    cmd.Free;
    end;

    Download

    Documentação da API

    https://docs.nvidia.com/deploy/nvml-api/index.html

    Documentação nvidia-smi

    http://developer.download.nvidia.com/compute/DCGM/docs/nvidia-smi-367.38.pdf

    Download do CUDA Toolkit 3.2

    https://developer.nvidia.com/cuda-toolkit-32-downloads

    Caminho no pc após instalação:

    C:\Program Files\NVIDIA Corporation\NVSMI

    maurinsoft.com.br