GNA: um coprocessador para Aceleração Neural.

GNA: um coprocessador para Aceleração Neural.

GNA é um co processador responsável pela aceleração Gausiana e processamento de Inferência integrados em alguns modelos de processadores. O GNA é similar ao coprocessador matemático dos processadores 386 da década de 90. Neste texto veremos como utilizá-lo junto ao kernel do Linux.

Introdução

A Intel integrou diretamente no processador o recurso de aceleração para atender a crescente demanda de processamento de inferência no mercado de IA. Este recurso de Aceleração foi batizado de GNA (biblioteca de Aceleração Neural e Gausiana). Abaixo as instruções de como utilizar este recurso em sistemas operacionais Linux.

A sintaxe foi baseada em openSUSE mas é facilmente adaptável para qualquer distribuição. O hardware utilizado fou o Beast Canyon NUC com um processador Core i9-11900KB.

O Intel GNA é um coprocessador neural de baixa potencia para inferência na borda. Quando a energia e desempenho são importantes, este recurso é ideal para soluções de mercado que exige uma menor carga de trabalho para CPU.

Mais detalhes esta disponível no texto que disponibilizei no Blog da i2Ai (Associação Internacional de Inteligencia Artificial) .

Requisitos:

Precisaremos inicialmente instalar o pacote CMake, pkg-config, kernel devel e GNU Dev Tools para compilar os exemplos. Se a sua distribuição do Linux favorita não inclui os itens mencionado, é possível instalar manualmente os binários. Para instalar, no openSUSE por exemplo, os requisitos para todos os passos funcionar corretamente, abra uma sessão de terminal e digite os seguintes comandos:

Terminal
sudo zypper update
sudo zypper --non-interactive install cmake pkg-config
sudo zypper --non-interactive install pattern devel_C_C++
sudo zypper --non-interactive install patterns-devel-base-devel_kernel

Verifique se a instalação foi concluída com sucesso, com o comando abaixo:

Terminal
which cmake pkg-config make gcc g++

Se tudo estiver devidamente instalado, teremos o resultado a seguir:

/usr/bin/cmake
/usr/bin/pkg-config
/usr/bin/make
/usr/bin/gcc
/usr/bin/g++

Compilando o módulo do Kernel:

Seguindo o exemplo abaixo, criaremo uma pasta, para usar o comando wget com o objetivo de baixar o código-fonte do repositório Intel OpenVINO ToolKit.

Terminal
mkdir gna
cd gna
wget https://storage.openvinotoolkit.org/drivers/gna/gna-drv-linux-1.2.3.zip

Agora, descompacte os arquivos conforme o exemplo abaixo:

Terminal
unzip gna-drv-linux-1.2.3.zip
tar -axvf gna-drv-mod.1.2.3.tar.bz2

Agora com os arquivos extraídos, entre na pasta recém-criada e execute o comando make e após execute o script_install.sh.

Terminal
make
make -C /lib/modules/5.3.18-59.19-default/build M=/tmp/gna/gna-drv-mod.1.2.3
sudo ./sample_install.sh

Para checar se o módulo foi compilado e instalado corretamente, utilize o comando lsmod como no exemplo a seguir:

Terminal
sudo lsmod|grep gna

Compilando e testando a biblioteca GNA:

Sem muito BLA, BLA, BLA para compilar a biblioteca e o respectivo exemplo, efetue o download dos fontes utilizando o comando abaixo (git clone), então teremos todo o código-fonte do repositório github em nosso equipamento de trabalho.

Terminal
git clone https://github.com/intel/gna

Agora entre na pasta recém-criada novamente e use o comando cmake e make como no exemplo abaixo.

Terminal
cmake .
make

Seguindo o exemplo abaixo, entre na pasta samples e use os comandos mkdir, cd e cmake para compilar o exemplo SDK.

Terminal
cd bin/sample01
./sample01

Este texto foi escrito por Official oneAPI Innovator Intel e o membro do openSUSE Alessandro de Oliveira Faria com base nos tutoriais Intel. Mais informações veja a página oficial <a href=”https://github.com/intel/gna