Grupo: Peter Krause, Samuel Landre
Presente neste diretório encontram-se os arquivos pertencentes à solução do problema de contagem de palavras.
O programa varre os seguintes capítulos do livro The Psychedelic Experience.
I. General Introduction
II. The Tibetan Book of the Dead
First Bardo: The Period of Ego-Loss or Non-Game Ecstasy
O texto foi escolhido dada facilidade em formatar o texto do html para o arquivo local, e pode ser encontrado neste link aqui
O problema foi resolvido da seguinte forma:
- Separa o texto em array de linhas (delimitadas por
\n
) - Itera por cada linha deste array
- Para cada palavra-chave, procura por uma correspondência da mesma nesta linha
- Se houve correspondência, incrementa-se o número de ocorrências da palavra.
- Separa o texto em array de linhas (delimitadas por
\n
) - Cria-se uma seção paralela para cada seção fornecida pelo usuário
- Cada seção itera por cada linha em um intervalo de linhas
- Para cada palavra-chave, procura por uma correspondência da mesma nesta linha
- Se houve correspondência, a thread em questão se apodera do Mutex daquela ocorrência, daí incrementa-se o número de ocorrências da palavra, e então libera o Mutex.
obs.: Foi necessário instalar a versão 7 do GCC para conseguir usufruir do argumento -fopenmp
.
Em um terminal qualquer, digite o seguinte trecho para compilar o programa:
$ gcc word_counter.c -o <nome_do_output>
Para rodá-lo com palavras-chave, digite:
$ ./<nome_do_output> lama guru tibet
O número de palavras-chave (lama
, guru
, tibet
) não possui limites, portanto cabe ao usuário decidir quantas palavras deseja procurar.
Em um terminal qualquer, digite o seguinte trecho para compilar o programa:
$ gcc-7 -fopenmp word_counter_parallel.c -o <nome_do_output> -pthread
Para rodá-lo com palavras-chave, digite:
$ ./<nome_do_output> 10 lama guru tibet
O primeiro argumento (10
) equivale ao número de seções paralelas desejadas, enquanto que todos os argumento subsequentes (lama
, guru
, tibet
) são as palavras-chave que o usuário deseja procurar.