Pergunta

O que é o significado de "software paralelo" e quais são as diferenças entre o "software paralelo" e "software regular"?

Quais são as suas vantagens e desvantagens?

O escrevendo "software paralelo" requerem um hardware específico ou linguagem de programação?

Foi útil?

Solução

http://en.wikipedia.org/wiki/Thread_(computer_science)

Em ciência da computação, um fio de resultados da execução de um garfo de um programa de computador em dois ou mais simultaneamente a execução de tarefas. o implementação de tópicos e processa difere de um operacional sistema para outro, mas na maioria dos casos, uma rosca está contido dentro de um processo. Vários segmentos podem existir dentro do mesmo processo e compartilhar recursos, como memória, enquanto processos diferentes não compartilham estes recursos.

A maioria das linguagens de programação modernas suportam multithreading, de uma forma ou de outra (mesmo Javascript nas versões mais recentes). : -)

Vantagens e Desvantagens pode depender da tarefa. Se você tem um monte de processamento que você precisa fazer, então multithreading pode ajudá-lo a quebrar que em unidades menores de trabalho que cada CPU pode trabalhar em forma independente, ao mesmo tempo. No entanto, o código multithreaded será geralmente mais complexo para escrever e manter do que código da thread único.

Você pode ainda escrever / código multithreaded executado em uma máquina que tem apenas um processador. Embora haverá apenas um processador para executar as tarefas, o sistema operacional irá garantir que eles acontecem simultaneamente, alternando rapidamente contexto e executar algumas instruções para cada segmento em um tempo.

Alguns hardware especializado que você pode estar familiarizado com o que faz tarefas paralelas é a GPU que pode ser encontrado na maioria dos novos computadores. Neste vídeo, os Mythbusters demonstrar a diferença entre desenho em uma CPU single-threaded, e uma GPU de multi-threaded:
http://www.youtube.com/watch?v=XtGf0HaW7x4&feature=player_embedded

Outras dicas

são os "software paralelo" requer um hardware específico ou linguagem de programação?

Sim e sim.

O primeiro é trivialmente fácil. A maioria da CPU moderna (Diga qualquer coisa mais recente que a M6800) tem recursos de hardware que tornam possível fazer mais de uma coisa de cada vez, embora não necessariamente os dois ao mesmo tempo. Por exemplo, quando uma interrupção de temporizador se apaga, uma CPU poderia salvar o que está fazendo, em seguida, começar a fazer outra coisa. Essas tarefas são executadas simultaneamente.

Mesmo sem isso, você poderia simplesmente obter duas máquinas com algum tipo de conexão entre si (como uma conexão serial simples através de um adaptador de modem nulo) e eles podem tanto trabalho na mesma tarefa em paralelo.

A maioria dos novos (e não apenas modernas, mas recentes) do CPU têm recursos de computação paralela construída dentro. Estes de CPU multi-core pode realmente estar trabalhando em duas ou mais tarefas ao mesmo tempo, uma tarefa por núcleo, e têm características especiais que fazem -lo um pouco mais eficiente para essas tarefas a cooperar.

O segundo, exigindo ferramentas de software especiais, como um paralelo habilitado linguagem, é de certa forma a parte mais difícil da computação paralela. Se você é a única pessoa na cozinha, é muito fácil de cozinhar uma refeição, seguindo cada receita do início ao fim, um após o outro, até que todos os pratos são cozinhados. Se você quiser acelerar isso, adicionando mais cozinheiros, você tem que ser um pouco mais cuidado para não pisar um do outro dedos.

A maneira mais simples isso é feito é usando uma biblioteca de segmentação que oferece algumas ferramentas para que múltiplas tarefas pode arranjar para não espancar uns aos outros. Isto não é tão fácil como sinalizar um programa como paralela e o sistema se encarrega do resto, em vez disso, você tem que escrever cada tarefa de se comunicar com qualquer outra tarefa em cada lugar onde há a possibilidade de eles interferindo.

software paralelo pode nativamente tirar proveito de múltiplos núcleos / CPU em um computador ou às vezes em vários computadores. Exemplos incluem renderização de gráficos software software e design de circuitos.

Não tenho certeza sobre outras desvantagens do que software ciente de multi-processador tende a ser um porco CPU.

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