Pergunta

Tem havido uma mudança significativa para a programação de dados paralelos através de sistemas como OpenCL e CUDA ao longo dos últimos anos, e ainda livros publicados mesmo dentro dos últimos seis meses, mesmo nunca mencionam o tema da programação de dados paralelos.

Não é adequado para todos os problemas, mas parece que há uma lacuna significativa aqui que não está sendo abordada.

Foi útil?

Solução

Primeiro, eu vou salientar que programação concorrente não é necessariamente sinônimo de programação paralela. programação concorrente é sobre a construção de aplicações de tarefas fracamente acoplados. Por exemplo, uma janela de diálogo poderia ter interações com cada controle implementado como uma tarefa separada. programação paralela, por outro lado, é explicitamente sobre espalhar a solução de alguma tarefa computacional em mais de uma única peça de hardware execução, essencialmente, sempre por razões de algum tipo (nota de desempenho: mesmo pouca memória RAM é uma razão desempenho quando a alternativa está trocando.

Então, eu tenho que perguntar em troca: Que livros você está se referindo? Eles são sobre programação concorrente (Eu tenho alguns destes, há um monte de teoria interessante lá), ou cerca de programação paralela?

Se eles realmente são sobre programação paralela, vou fazer algumas observações:

  • CUDA é um alvo que se move rapidamente, e tem sido desde o seu lançamento. Um livro escrito sobre isso hoje seria meio obsoleto no momento em que fez isso em impressão.
  • padrão do OpenCL foi lançado pouco menos de um ano atrás. implementações estáveis ??saiu nos últimos 8 meses ou assim. Há simplesmente não tem sido tempo suficiente para pegar um livro escrito ainda, e muito menos revista e publicada.
  • OpenMP é coberto em pelo menos alguns dos livros de programação paralela que eu usei. Até a versão 2 (v3 acaba de ser lançado), era essencialmente tudo sobre os dados de programação paralela.

Outras dicas

Eu acho que aqueles que trabalham com computação paralela academicamente hoje são geralmente vindo do campo de cluster de computação. OpenCL e CUDA processadores usam gráficos, que mais ou menos inadvertidamente evoluíram para processadores de uso geral, juntamente com o desenvolvimento de gráficos mais avançados de renderização algoritmos.

No entanto, o povo de gráficos e o alto desempenho de computação pessoas foram "descobrir" um ao outro por algum tempo agora, e muito ou pesquisa está sendo faz a usar GPUs para computação de propósito geral.

"sempre" é um pouco forte; existem recursos lá fora ( exemplo ) que incluem temas paralelismo de dados.

O clássico livro "The Connection Machine" por Hillis foi tudo o paralelismo de dados. É um dos meus favoritos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top