A poderosa nuvem: Intel® DevCloud com GPU Iris Xe Max!

Neste artigo veremos como utilizar o poder computacional das últimas gerações de hardware Intel na nuvem DevCloud gratuitamente, mas por tempo limitado. Além de processadores de última geração, poderemos testar a nova e primeira GPU da Intel dedicada Iris Xe MAX.

[ Hits: 6.602 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 30/06/2021 | Blog: http://assuntonerd.com.br


Conceitos



A nuvem da Intel trabalha com processamento distribuído, e então para entendermos o funcionamento, primeiramente criaremos com o comando a seguir, o script com o nome hello-world-example com o conteúdo abaixo.

tee > hello-world-example <<EOF
cd $PBS_O_WORKDIR
echo "* Hello world from compute server `hostname`!"
echo "* The current directory is ${PWD}."
echo "* Compute server's CPU model and number of logical CPUs:"
lscpu | grep 'Model name\|^CPU(s)'
echo "* Python available to us:"
which python
python --version
echo "* The job can create files, and they will be visible back in the Notebook." > newfile.txt
sleep 10
echo "*Bye"
EOF


Agora com o script criado, o submeteremos o trabalho no qual devemos utilizar o comando qsub. O parâmetro -l é utilizado para utilizar o hardware solicitado onde nodes = QTDE DE NÓS, gpu = PROCESSADOR GRÁFICO e ppn = a quantidade de processadores. Já o parâmetro -d indica o path de trabalho (localização atual) e por último o nome do script. Vejam o exemplo a seguir:

qsub -l nodes=1:gpu:ppn=2 -d . hello-world-example

Se tudo funcionou corretamente, após alguns segundos, veremos armazenados em disco 2 arquivos de saída que representam o resultado do processamento, hello-world-example.eXXXXXX e hello-world-example.oXXXXXX. Um arquivo .eXXXXXX contém os erros do script (se existir), já o .e911788 contem a saída padrão do script submetido posteriormente. Abaixo o exemplo do seu conteúdo:

cat hello-world-example.o911927
########################################################################
#      Date:           Tue 29 Jun 2021 12:08:02 AM PDT
#    Job ID:           911927.v-qsvr-1.aidevcloud
#      User:           u481275
# Resources:           neednodes=1:gpu:ppn=2,nodes=1:gpu:ppn=2,walltime=06:00:00
########################################################################

* Hello world from compute server login-2!
* The current directory is /home/u481275.
* Compute server's CPU model and number of logical CPUs:
* Python available to us:
/opt/intel/inteloneapi/intelpython/latest/bin/python
Python 3.7.9 :: Intel Corporation
*Bye

########################################################################
# End of output for job 911927.v-qsvr-1.aidevcloud
# Date: Tue 29 Jun 2021 12:08:18 AM PDT
########################################################################

A seguir um resumo da sintaxe anterior, e também a adição de alguns itens para um melhor aproveitamento dos arquivos para processamento distribuído utilizando o formato PBS (Portable Batch System). Tomaremos como base o script anterior.

tee > hello-world-example-2 <<EOF
#!/bin/bash

# Nome do trabalho:

#PBS -N My-Job-InDevCloud

# Tempo de execução 1 hora:

#PBS -l walltime=1:00:00

# Nome do arquivo de erro:

#PBS -e My-Job-with-Error.err

# Solicita 1 nó e 2 processadores:

#PBS -l nodes=1:ppn=2

# Envio de Email

#PBS -M cabelo@opensuse.org
cd $PBS_O_WORKDIR
echo "* Hello world from compute server `hostname`!"
echo "* The current directory is ${PWD}."
echo "* Compute server's CPU model and number of logical CPUs:"
lscpu | grep 'Model name\|^CPU(s)'
echo "* Python available to us:"
which python
python --version
echo "* The job can create files, and they will be visible back in the Notebook." > newfile.txt
sleep 10
echo "*Bye"
EOF


Após estas alterações podemos submeter novamente o JOB para execução novamente:

qsub -l nodes=1:gpu:ppn=2 -d .  hello-world-example-2

Mas também podemos executar todos os parâmetros na diretiva da linha de comando.

qsub -l nodes=1:gpu:ppn=2 -l walltime=1:00:00 -M cabelo@opensuse.org -d . hello-world-example-2

Com o comando abaixo podemos também verificar todos os computer nodes disponíveis na Nuvem da Intel:

pbsnodes -a
s012-n001
    state = job-exclusive
    power_state = Running
    np = 2
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,quad_gpu
    ntype = cluster
    jobs = 0-1/911898.v-qsvr-1.aidevcloud
    status = rectime=1624947718,macaddr=d4:5d:64:08:e0:1b,cpuclock=Fixed,varattr=,jobs=911898.v-qsvr-1.aidevcloud(cput=114,energy_used=0,mem=382320kb,vmem=34364495240kb,walltime=626,Error_Path=/dev/pts/0,Output_
Path=/dev/pts/0,session_id=2291524),state=free,netload=881915012074,gres=,loadave=2.00,ncpus=24,physmem=32558924kb,availmem=33789804kb,totmem=34656072kb,idletime=1003560,nusers=4,nsessions=4,sessions=525427 11938
32 1193846 2291524,uname=Linux s012-n001 5.4.0-52-generic #57-Ubuntu SMP Thu Oct 15 10:57:00 UTC 2020 x86_64,opsys=linux
    mom_service_port = 15002
    mom_manager_port = 15003


Para verificar quantos nós apresentam a GPU Iris XE MAX, basta incluir o seguinte comando:

pbsnodes | sort | grep properties  |grep iris_xe_max
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,dual_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,dual_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,dual_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,dual_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,dual_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,dual_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,dual_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,dual_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,quad_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,quad_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,quad_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,quad_gpu
    properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,quad_gpu


Para verificar as características dos nós presentes no sistema, basta utilizar o comando abaixo:

pbsnodes | sort | grep properties
  properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,quad_gpu
  properties = core,cfl,i9-10920x,ram32gb,net1gbe,gpu,iris_xe_max,quad_gpu
  properties = xeon,cfl,e-2176g,ram64gb,net1gbe,gpu,gen9
  properties = xeon,cfl,e-2176g,ram64gb,net1gbe,gpu,gen9
  properties = xeon,cfl,e-2176g,ram64gb,net1gbe,gpu,gen9
  properties = xeon,cfl,e-2176g,ram64gb,net1gbe,gpu,gen9
  properties = xeon,cfl,e-2176g,ram64gb,net1gbe,gpu,gen9
  properties = xeon,cfl,e-2176g,ram64gb,net1gbe,gpu,gen9
  properties = xeon,skl,ram384gb,net1gbe,renderkit
  properties = xeon,skl,ram384gb,net1gbe,renderkit
  properties = xeon,skl,ram384gb,net1gbe,renderkit
  properties = xeon,skl,ram384gb,net1gbe,renderkit


As propriedades são usadas para descrever vários recursos disponíveis nos nós de computação, como: tipo e nome da CPU, modelo e nome do acelerador, DRAM disponível, tipo de interconexão, número de dispositivos aceleradores disponíveis e seu tipo e uso pretendido ou recomendado.

Algumas das propriedades para das classes de dispositivos:
  • core
  • fpga
  • gpu
  • xeon

Propriedades dos dispositivos por nome:
  • arria10
  • e-2176g
  • gen9
  • gold6128
  • i9-10920x
  • iris_xe_max
  • plat8153

Quantidade do dispositivo:
  • dual_gpu
  • quad_gpu

Uso desejado:
  • batch
  • fpga_compile
  • fpga_runtime
  • jupyter
  • renderkit

Página anterior     Próxima página

Páginas do artigo
   1. Introdução Devcloud
   2. Conceitos
   3. Mão na massa com a GPU Iris Xe Max
Outros artigos deste autor

KDE Connect: Integrando o ambiente Android com o desktop Linux

Babytrans, o Babylon for Linux

MainActor: Edição de vídeo profissional (Adobe Premiere) em Linux

Ångström: Linux em Palmtops, portáteis e embarcados sem mistério

LINCE - A biblioteca de visão artificial open source

Leitura recomendada

Android NDK: Desmistificando o acesso a códigos nativos em C

A mágica do polimorfismo e seus conceitos na ótica de C/C++

SDL e C - Uma dupla sensacional

Algum humor e C++ Design Patterns (parte 2)

SDL - Ótimo para criação de jogos

  
Comentários
[1] Comentário enviado por Alannah358 em 20/07/2021 - 03:34h

Thanks for sharing.I found a lot of interesting information here. A really good post, very thankful and hopeful that you will write many more posts like this one.
https://www.myaccountaccess.bid/

[2] Comentário enviado por maurixnovatrento em 30/07/2021 - 20:08h


Muito bom.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts