[LHC] Workshop on Parallel Programming &Optimization for Intel Architecture (CENAPAD-SP)

Leandro Zanotto leandro.zanotto at gmail.com
Sat Feb 6 12:55:21 PST 2016


O primeiro eu ja tinha visto o segundo não. O que eu sei é que tudo
depende, se você ja tem uma aplicação X86, não precisa reescrever para CUDA.

Com alguns ajustes nos Hot Spots você terá ganho com a Xeon Phi. Agora se
for escrever algo do Zero, aí seria melhor usar CUDA. Mas tudo depende da
Aplicação

como eu disse anteriormente. A Intel vende a idéia como sendo fácil para
paralelizar, mas ainda digo, depende, tiver alguns problemas com o código
que usei

mas no entanto acho uma boa solução, la na Unicamp onde trabalho temos
acesso a 3 placas dessas mais 3 em um laboratório no Intituto de
Computação. Isso é para experimentos

nao temos nada em produção. Eu mesmo fiz experimentos para melhorar o
código, no futuro farei uma versão para Xeon Phi que aproveite tudo o que
ela tem

de melhor como opção aos pesquisadores e ficará sendo em produção.

2016-02-06 18:26 GMT-02:00 Henrique Almeida <hdante at gmail.com>:

> Leandro, entendi. A dúvida é se você tem benchmarks comparando a
> velocidade da GPU com o Xeon Phi para a solução de algum problema. Veja por
> exemplo "Application 2: Monte-Carlo Pricing of American Options", em:
>
> http://blog.xcelerit.com/intel-xeon-phi-vs-nvidia-tesla-gpu/
>
> Veja "Parallel Computation of Non-Bonded Interactions in Drug Discovery:
> Nvidia GPUs vs. Intel Xeon Phi"
>
>
> http://www.ds.ewi.tudelft.nl/fileadmin/pds/homepages/fang/papers/iwbbio2k14a128.pdf
>
>
> Minha dúvida é se tem um exemplo de problema sendo resolvido pelo Xeon Phi
> de forma mais eficiente, pois não fico confortável de anunciar uma solução
> sub ótima no laboratório que só é melhor em casos especiais.
>
>
> Enviado do meu iPhone
>
> Em 6 de fev de 2016, às 17:51, Leandro Zanotto <leandro.zanotto at gmail.com>
> escreveu:
>
> Vou falar rapidamente sobre o Xeon Phi
>
> 1 - Tem uma unidade vetorial de 512bits (AVX2)
> 2 - Composto de no minimo 57 cores pentium sendo cada um composto por 4
> threads tendo num total de 228 threads no minimo.
> 3 - Memoria GDDR5 - No minimo 6GB
>
> Sendo que ele tem um linux rodando na sua memoria mais as bibliotecas que
> podem ser instaladas de 2 formas por NFS ou diretamente nela quando
>
> for dar boot na placa ele pode se comportar com um outro host dentro do
> cluster, sendo assim para quem usa MPI se beneficiará disso.
>
>
> Agora o exemplo que me pediu.
>
> Se tivermos uma soma de vetores:
>
>
> for (int i=0; i < N; i++){
>
>      C[i]  = A[i] + B[i]
>
> }
>
>
> Na GPU temos com cuda
>
>
>  int id = blockIdx.x*blockDim.x+threadIdx.x;
>
> if (id < N){
>   C[id] = A[id] + B[id];
> }
>
> Isso é totalmente paralelo na GPU cai bem pois não temos branches.
>
> Na Xeon Phi
>
> #pragma omp parallel for
> for (int i=0; i < N; i++){
>
>      C[i]  = A[i] + B[i]
>
> }
>
> Fica bem simples até mesmo num processador com mais de um nucleo. Ele
> dividirá seu código pelo numero de threads
>
> Resumindo esse exemplo é bem simples e pode ser feito em qualquer um. GPU
> ou Xeon Phi
>
>
> Agora se tivermos algo com branches e whiles onde não se sabe qual o fim
> do loop a GPU irá sofrer pois sua unidade de controle
>
> não suporta branches (branch divergence).
>
> Por ex.
>
>  int id = blockIdx.x*blockDim.x+threadIdx.x;
> int x = 0;
> if (id < N){
>
>     if (x / 2 == 0) {
>       C[id] = A[id] + B[id] * 2;
>     }else{
>       C[id] = A[id] + B[id] * 4;
>     }
> }
>
> O que acontece aqui é que quando as threads de um determinado bloco entrar
> na entrada par as outras threads estarão dormindo
>
> sem fazer trabalho isso faz com que você disperdice o poder da placa.
>
> Nesse caso sendo a Xeon Phi composta de pentium isso vai bem pois ela nao
> ficará com threads dormindo.
>
> Pela falta desse controlador na GPU temos mais espaço no processador para
> colocar mais threads por isso elas tem
>
> mais threads que o coprocessor.
>
>
> Isso foi bem básico mas se tiver mais duvida escreva.
>
> OBS: Você pode combinar nas GPUs atuais o trabalho do processador com MPI
> e OpenMP + CUDA enviando até 32 processos simultaneos
>
> para elas.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> 2016-02-06 16:37 GMT-02:00 Henrique Almeida <hdante at gmail.com>:
>
>> Você tem exemplos onde o Xeon Phi é mais apropriado que GPU ?
>> Em 06/02/2016 14:23, "Leandro Zanotto" <leandro.zanotto at gmail.com>
>> escreveu:
>>
>>> Trabalho com Xeon Phi, GPU, (MPI, OpenMP e CUDA), meu ultimo projeto foi
>>> com Xeon Phi.
>>>
>>> Não é tão simples de programar como a Intel vende, configurar a placa
>>> também não é tão
>>>
>>> simples, visto que a GPU, você instala o driver e está pronta para o
>>> uso.
>>>
>>> A Xeon Phi roda linux nela e tem que configurar algumas coisas.
>>>
>>> Meu ultimo projeto foi com Xeon Phi (Fortran OpenMP + MPI) o atual está
>>> sendo com GPU (Fortran CUDA + MPI e OpenMP).
>>>
>>> Porém se olharmos o supercomputador no topo da TOP 500 ele tem Xeon Phi.
>>>
>>> Considero a Xeon Phi uma opção, mas tudo depende da aplicação.
>>>
>>>
>>>
>>> 2016-02-06 14:09 GMT-02:00 Henrique Almeida <hdante at gmail.com>:
>>>
>>>> Depois de ver alguns benchmarks, retiro o que eu disse. O Xeon Phi é a
>>>> maior roubdada.
>>>> Em 06/02/2016 12:07, "Henrique Almeida" <hdante at gmail.com> escreveu:
>>>>
>>>>>  Gostei, vou sugerir o workshop no LNLS
>>>>>
>>>>> Em 5 de fevereiro de 2016 10:45, Douglas Esteves
>>>>> <douglas.brsoftware at gmail.com> escreveu:
>>>>> >  Workshop sobre Programação Paralela e Modernização de Código e
>>>>> aprenda as
>>>>> > melhores técnicas de programação baseadas em padrões open-source para
>>>>> > extrair o máximo de performance dos processadores e co-processadores
>>>>> Intel.
>>>>> >
>>>>> > https://indico.ncc.unesp.br/event/20/
>>>>> >
>>>>> > _______________________________________________
>>>>> > Lista do LHC <http://lhc.net.br>
>>>>> > HSC at listas.tia.mat.br
>>>>> > http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>  Henrique Dante de Almeida
>>>>>  hdante at gmail.com
>>>>>
>>>>
>>>> _______________________________________________
>>>> Lista do LHC <http://lhc.net.br>
>>>> HSC at listas.tia.mat.br
>>>> http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br
>>>>
>>>>
>>>
>>>
>>> --
>>> Leandro Negri Zanotto
>>>
>>> _______________________________________________
>>> Lista do LHC <http://lhc.net.br>
>>> HSC at listas.tia.mat.br
>>> http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br
>>>
>>>
>> _______________________________________________
>> Lista do LHC <http://lhc.net.br>
>> HSC at listas.tia.mat.br
>> http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br
>>
>>
>
>
> --
> Leandro Negri Zanotto
>
> _______________________________________________
> Lista do LHC <http://lhc.net.br>
> HSC at listas.tia.mat.br
> http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br
>
>
> _______________________________________________
> Lista do LHC <http://lhc.net.br>
> HSC at listas.tia.mat.br
> http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br
>
>


-- 
Leandro Negri Zanotto
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.tia.mat.br/pipermail/hsc-tia.mat.br/attachments/20160206/547293e1/attachment-0001.html>


More information about the HSC mailing list