O objetivo deste trabalho é projetar um algoritmo paralelo para ser executado em uma rede de estações de trabalho. A implementação deve ser feita usando sockets para comunicação entre o processo mestre e os processos escravos.
O processo mestre envia uma requisição para os processos escravos e espera pelas respostas. Para ler as respostas dos diferentes processos escravos enviadas assincronamente, o processo mestre pode adotar uma das seguintes opções:
Veja demonstração de comunicação entre processos usando select em mastersel.c e slavesel.c e usando threads em master.c e slave.c.
Implemente um algoritmo paralelo para recuperar ocorrências de padrões em arquivos constituídos de documentos e distribuídos através de uma rede de estações de trabalho.
O programa recebe como parâmetros de entrada uma cadeia de caracteres e a
opção de busca exata (
) ou aproximada (
),
e imprime como saída todas as ocorrências do padrão no texto.
Para a busca sequencial nos documentos de texto, você deverá utilizar
o algoritmo Shift-And para casamento aproximado de padrões.
Para analisar o desempenho do sistema, compare o algoritmo sequencial com o algoritmo paralelo utilizando 2 e 4 máquinas. Discuta os resultados do algoritmo de casamento de padrão aproximado, tanto na busca sequencial quanto na busca paralela nos documentos de texto distribuídos. Use como métrica de avaliação o speedup do algoritmo paralelo.
A coleção de texto será constituída por um conjunto de
gigabyte de arquivos da TREC, que serão distribuídos igualmente
por tamanho entre 2 e 4 máquinas,
e por um conjunto de
consultas.
As máquinas, arquivos textuais, conjunto de consultas e
respectivos diretórios para os testes serão divulgados oportunamente.
O que deve ser entregue:
Referências
M. J. Quinn, Parallel Computing Theory and Practice, McGraw-Hill, 1994, cap. 12.
Stevens, W. Richard, ``Unix Network Programming'', Prentice-Hall, 2nd Edition, 1998.
Ziviani, N. Projeto de Algoritmos com Implementações em
Pascal e C, Thomson, segunda edição, 2004.