Este repositório contém o projeto final da ACIEPE(Atividade Curricular de Integração entre Ensino, Pesquisa e Extensão) - "Programação paralela: das threads aos FPGAs - uma introdução ao tema", ofertada pelo Departamento de Computação da UFSCar - São Carlos.
O projeto final é um artigo sobre a paralelização do algoritmo de ordenação Bucket Sort com a API Open Multi-Processing (OpenMP), no qual foi comparado o desempenho da versão sequencial e da versão paralela.
A versão inicial do código Bucket Sort foi retirada do site Programiz e pode ser encontrado aqui.
Os testes de desempenho foram realizados no Coliru onde eles podem ser compilados e executados usando o comando:
g++ -std=c++17 -O2 -Wall -fopenmp -pedantic main.cpp && time ./a.out
A tabela a seguir demonstra o desempenho da versão sequencial e versão paralela comparados. Os números linkados redirecionam para o site Coliru que mostram os testes realizados e também possibilitam a execução ou edição do código.
Nº de elementos | Nº baldes | Intervalo | Versão Sequencial | Versão Paralela |
---|---|---|---|---|
100 | 100 | 100 | 0.010s | 0.09s |
1.000 | 100 | 100 | 0.011s | 0.012s |
10.000 | 100 | 100 | 0.768s | 0.020s |
100.000 | 1.000 | 1.000 | 2.754s | 2.608s |
100.000 | 10.000 | 1.000 | 2.746s | 2.689s |
100.000 | 100.000 | 1.000 | 2.690s | 2.849s |