<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>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:</div><div><br></div><div><a href="http://blog.xcelerit.com/intel-xeon-phi-vs-nvidia-tesla-gpu/">http://blog.xcelerit.com/intel-xeon-phi-vs-nvidia-tesla-gpu/</a></div><div><br></div><div>Veja "<span style="font-family: CMBX12; font-size: 14pt;">Parallel Computation of Non-Bonded
Interactions in Drug Discovery: Nvidia GPUs vs.
Intel Xeon Phi"</span></div><div><span style="font-family: CMBX12; font-size: 14pt;"><br></span></div><div><a href="http://www.ds.ewi.tudelft.nl/fileadmin/pds/homepages/fang/papers/iwbbio2k14a128.pdf">http://www.ds.ewi.tudelft.nl/fileadmin/pds/homepages/fang/papers/iwbbio2k14a128.pdf</a></div><div><br></div><div><br></div><div>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.</div><div><br></div><div><br><div>Enviado do meu iPhone</div></div><div><br>Em 6 de fev de 2016, às 17:51, Leandro Zanotto <<a href="mailto:leandro.zanotto@gmail.com">leandro.zanotto@gmail.com</a>> escreveu:<br><br></div><blockquote type="cite"><div><div dir="ltr"><div><div><div><div><div><div><div>Vou falar rapidamente sobre o Xeon Phi<br><br></div>1 - Tem uma unidade vetorial de 512bits (AVX2)<br></div>2 - Composto de no minimo 57 cores pentium sendo cada um composto por 4 threads tendo num total de 228 threads no minimo.<br></div>3 - Memoria GDDR5 - No minimo 6GB<br><br></div>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 <br><br></div>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.<br><br><br></div>Agora o exemplo que me pediu.<br><br></div>Se tivermos uma soma de vetores:<br><br><br>for (int i=0; i < N; i++){<br> <br> C[i] = A[i] + B[i]<br><div><div><div><div><div><br><div>}<br><br><br></div><div>Na GPU temos com cuda<br><br><br></div><code class=""> </code><code class="">int</code> <code class="">id = blockIdx.x*blockDim.x+threadIdx.x;<br><br></code></div><div><code class="">if (id < N){ <br></code></div><div><code class=""> C[id] = A[id] + B[id];<br>}<br><br></code></div><div><code class="">Isso é totalmente paralelo na GPU cai bem pois não temos branches.<br><br></code></div><div><code class="">Na Xeon Phi<br><br></code></div><div><code class="">#pragma omp parallel for</code><br>for (int i=0; i < N; i++){<br> <br> C[i] = A[i] + B[i]<br><br>}<br><br></div><div>Fica bem simples até mesmo num processador com mais de um nucleo. Ele dividirá seu código pelo numero de threads<br><br></div><div>Resumindo esse exemplo é bem simples e pode ser feito em qualquer um. GPU ou Xeon Phi<br><br><br></div><div>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 <br><br></div><div>não suporta branches (branch divergence).<br><br></div><div>Por ex.<br><br></div><div><code class=""> </code><code class="">int</code> <code class="">id = blockIdx.x*blockDim.x+threadIdx.x;<br></code></div><div><code class="">int x = 0;<br></code></div><div><div><code class="">if (id < N){ <br></code></div><code class=""> <br></code></div><div><code class=""> if (x / 2 == 0) { <br></code></div><div><code class=""> C[id] = A[id] + B[id] * 2;<br></code></div><div><code class=""> }else{</code><br><code class=""> C[id] = A[id] + B[id] * 4;<br> }<br>}</code></div><div><br></div><div>O que acontece aqui é que quando as threads de um determinado bloco entrar na entrada par as outras threads estarão dormindo<br><br></div><div>sem fazer trabalho isso faz com que você disperdice o poder da placa.<br><br></div><div>Nesse caso sendo a Xeon Phi composta de pentium isso vai bem pois ela nao ficará com threads dormindo.<br><br></div><div>Pela falta desse controlador na GPU temos mais espaço no processador para colocar mais threads por isso elas tem<br><br></div><div>mais threads que o coprocessor.<br><br><br></div><div>Isso foi bem básico mas se tiver mais duvida escreva.<br><br></div><div>OBS: Você pode combinar nas GPUs atuais o trabalho do processador com MPI e OpenMP + CUDA enviando até 32 processos simultaneos <br><br></div><div>para elas.<br></div><div><br></div><div><br></div><div><br><br><br></div><div><br><br></div><div><code class=""><br><br></code></div><div><code class=""><br><br></code></div><div><code class=""><br> <br></code></div><div><div><br><br><br><br></div></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-02-06 16:37 GMT-02:00 Henrique Almeida <span dir="ltr"><<a href="mailto:hdante@gmail.com" target="_blank">hdante@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Você tem exemplos onde o Xeon Phi é mais apropriado que GPU ?</p><div class="HOEnZb"><div class="h5">
<div class="gmail_quote">Em 06/02/2016 14:23, "Leandro Zanotto" <<a href="mailto:leandro.zanotto@gmail.com" target="_blank">leandro.zanotto@gmail.com</a>> escreveu:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Trabalho com Xeon Phi, GPU, (MPI, OpenMP e CUDA), meu ultimo projeto foi com Xeon Phi. <br><br></div><div>Não é tão simples de programar como a Intel vende, configurar a placa também não é tão <br><br></div><div>simples, visto que a GPU, você instala o driver e está pronta para o uso. <br><br></div><div>A Xeon Phi roda linux nela e tem que configurar algumas coisas. <br><br></div><div>Meu ultimo projeto foi com Xeon Phi (Fortran OpenMP + MPI) o atual está sendo com GPU (Fortran CUDA + MPI e OpenMP).<br><br></div><div>Porém se olharmos o supercomputador no topo da TOP 500 ele tem Xeon Phi. <br><br></div><div>Considero a Xeon Phi uma opção, mas tudo depende da aplicação.<br></div><div><br></div><br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-02-06 14:09 GMT-02:00 Henrique Almeida <span dir="ltr"><<a href="mailto:hdante@gmail.com" target="_blank">hdante@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Depois de ver alguns benchmarks, retiro o que eu disse. O Xeon Phi é a maior roubdada.</p><div><div>
<div class="gmail_quote">Em 06/02/2016 12:07, "Henrique Almeida" <<a href="mailto:hdante@gmail.com" target="_blank">hdante@gmail.com</a>> escreveu:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Gostei, vou sugerir o workshop no LNLS<br>
<br>
Em 5 de fevereiro de 2016 10:45, Douglas Esteves<br>
<<a href="mailto:douglas.brsoftware@gmail.com" target="_blank">douglas.brsoftware@gmail.com</a>> escreveu:<br>
> Workshop sobre Programação Paralela e Modernização de Código e aprenda as<br>
> melhores técnicas de programação baseadas em padrões open-source para<br>
> extrair o máximo de performance dos processadores e co-processadores Intel.<br>
><br>
> <a href="https://indico.ncc.unesp.br/event/20/" rel="noreferrer" target="_blank">https://indico.ncc.unesp.br/event/20/</a><br>
><br>
> _______________________________________________<br>
> Lista do LHC <<a href="http://lhc.net.br" rel="noreferrer" target="_blank">http://lhc.net.br</a>><br>
> <a href="mailto:HSC@listas.tia.mat.br" target="_blank">HSC@listas.tia.mat.br</a><br>
> <a href="http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br" rel="noreferrer" target="_blank">http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br</a><br>
><br>
<br>
<br>
<br>
--<br>
Henrique Dante de Almeida<br>
<a href="mailto:hdante@gmail.com" target="_blank">hdante@gmail.com</a><br>
</blockquote></div>
</div></div><br>_______________________________________________<br>
Lista do LHC <<a href="http://lhc.net.br" rel="noreferrer" target="_blank">http://lhc.net.br</a>><br>
<a href="mailto:HSC@listas.tia.mat.br" target="_blank">HSC@listas.tia.mat.br</a><br>
<a href="http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br" rel="noreferrer" target="_blank">http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div>Leandro Negri Zanotto</div>
</div>
<br>_______________________________________________<br>
Lista do LHC <<a href="http://lhc.net.br" rel="noreferrer" target="_blank">http://lhc.net.br</a>><br>
<a href="mailto:HSC@listas.tia.mat.br" target="_blank">HSC@listas.tia.mat.br</a><br>
<a href="http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br" rel="noreferrer" target="_blank">http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br</a><br>
<br></blockquote></div>
</div></div><br>_______________________________________________<br>
Lista do LHC <<a href="http://lhc.net.br" rel="noreferrer" target="_blank">http://lhc.net.br</a>><br>
<a href="mailto:HSC@listas.tia.mat.br">HSC@listas.tia.mat.br</a><br>
<a href="http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br" rel="noreferrer" target="_blank">http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">Leandro Negri Zanotto</div>
</div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Lista do LHC <<a href="http://lhc.net.br">http://lhc.net.br</a>></span><br><span><a href="mailto:HSC@listas.tia.mat.br">HSC@listas.tia.mat.br</a></span><br><span><a href="http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br">http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br</a></span><br></div></blockquote></body></html>