catarinacps / graph-search-gpu

Repositório dedicado ao trabalho 2 da disciplina de Arquiteturas Avançadas (INF01191)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Arquiteturas Avançadas - TP 2

Este repositório é dedicado ao segundo trabalho da cadeira de Arquiteturas Avançadas (INF). É esperado que nós implementemos dois algoritmos de busca em grafos na linguage CUDA, para GPUs.

Sumário

Objetivo

Da especificação do trabalho:

Implemente dois algoritmos de grafos: Floyd-Warshall e BFS para que utilizem uma
GPU para realizar a computação.

Realize testes com as diferentes entradas fornecidas e compare o desempenho da
versão disponibilizada com sua implementação em GPU.

Faça uma análise crítica dos resultados obtidos em relação ao desempenho obtido
na GPU vs obtido na CPU. Era o que vocês esperavam? Houve diferença entre os
dois algoritmos? Por quê? E entre os grafos?

Detalhe as características do processador e da GPU utilizados para os testes.

Estrutura do Projeto

Segue a estrutura do projeto, comentada:

.
├── bin
├── build
├── data
├── include
│   ├── clipp
│   └── fmt
├── lib
└── src
    ├── fmt
    ├── methods
    │   └── helpers
    └── utils

12 directories

Ferramentas Utilizadas

Utilizamos algumas ferramentas open-source no processo de desenvolvimento desse trabalho:

  1. {fmt} (GitHub page)

    Para a formatação simples (estilo Python) de strings para as saídas padrão.

  2. clipp (GitHub page)

    Para o parseamento de opções provenientes da linha de comando.

Compilação

Para buildar, execute a seguinte linha no root do repositório:

make

Para usar todos as threads de execução da sua máquina, execute da seguinte maneira:

make -j<NUMBER_OF_CORES>

# ex:
make -j4

Execução

No processo de compilação, são gerados dois binários:

cpu
para a execução em CPU
gpu
para a execução em GPU

Verifique as opções de execução do binário conforme o seguinte comando:

./build/gsg help

Tal execução retornará as seguintes linhas:

DESCRIPTION
        finds an element in a graph using different methods
        these methods are intended as a way of comparing the
        different effectiveness in visiting a whole graph

SYNOPSIS
        ./build/gsg help
        ./build/gsg [-v] cpu (bfs|floyd) [-s <VERTEX>] [-i <INITIAL>] <instance>
        ./build/gsg [-v] cuda [-b <BLOCKSIZE>] (bfs|floyd) [-s <VERTEX>] [-i <INITIAL>] <instance>

OPTIONS
        -v, --verbose
                    show detailed output

        possible implementations
            cpu     use the implementation in CPU host code
            cuda    use the implementation in CUDA device code
            -b, --block-size <BLOCKSIZE>
                    the block size for the cuda version

        possible methods:
            bfs     use the BFS method to find the element
            floyd   use the floyd-warshall method to find the element

        -s, --search <VERTEX>
                    the vertex being searched for (default: 5000)

        -i, --initial <INITIAL>
                    where to start from (default: 0)

        <instance>  path to the graph instance

Contato

Você pode entrar em contato comigo pelo seguinte e-mail:

hcpsilva@inf.ufrgs.br

About

Repositório dedicado ao trabalho 2 da disciplina de Arquiteturas Avançadas (INF01191)

License:MIT License


Languages

Language:C++ 93.9%Language:TeX 3.5%Language:Cuda 1.4%Language:Shell 0.6%Language:Makefile 0.6%