Giter VIP home page Giter VIP logo

projetoso's Introduction

					Projeto “Merge and sort”
				Prof. André Leon S. Gradvohl, Dr.
					[email protected]

Objetivo Este projeto visa a criação de um programa que utilize múltiplas threads para ler valores inteiros de N arquivos de entrada e armazenar em ordem crescente em um único arquivo de saída. Os dados dos arquivos de entrada não estão ordenados.

O programa deverá ser escrito para o sistema operacional Linux e obrigatoriamente utilizar a biblioteca POSIX Threads.

Descrição do problema a ser resolvido:

Considere que existem N arquivos de entrada com diferentes quantidades de valores inteiros não ordenados e que podem ser repetidos ou não. O programa deverá ler os valores inteiros desses vários arquivos e, de forma ordenada, armazená-los em um arquivo de saída.

O programa deve ser testado para 2, 4, 8 e 16 threads, com arquivos com diferentes quantidades de números inteiros.

Entradas e saídas de valores para o programa:

Entradas: O número de threads que o programa deve utilizar, os nomes dos arquivos de entrada e o nome do arquivo de saída. Para os testes, considere pelo menos 5 arquivos com 1000 valores cada. Saídas: Arquivo com os valores ordenados. Como sugestão, construa o programa de modo que os valores de entrada sejam lidos da linha de comando. Por exemplo: ./mergesort 4 arq1.dat arq2.dat arq3.dat –o saida.dat Onde:

  • ./mergesort é o nome do programa;
  • 4 é o número de threads;
  • arq1.dat arq2.dat arq3.dat são os arquivos com dados de entrada; e
  • -o saida.dat é o arquivo que contém os dados de saída.

Detalhamento dos produtos do projeto:

Os produtos que devem ser entregues como resultado do projeto são os seguintes: i. O código fonte do programa completo, documentado e pronto para ser compilado em sistemas Linux. ii. Um vídeo mostrando o código fonte do programa, a compilação do programa, um trecho do arquivo de entrada e a execução do programa para 2, 4, 8 e 16 threads. iii. Um relatório contendo a descrição da solução do problema (algoritmo em alto nível); as instruções para compilá-lo; gráficos com os tempos de execução do programa para 2, 4, 8 e 16 threads; e as conclusões a respeito dos resultados obtidos.

Todo o código fonte documentado, o relatório e a documentação do projeto devem estar disponíveis no repositório Git. No Moodle da disciplina, deve ser publicado apenas o relatório em PDF e neste relatório deve constar o endereço do repositório Git.

Para o item (i), a sugestão é a utilização de um makefile que facilite a compilação em sistemas Linux. Importante: o tempo de execução do programa deve considerar apenas o tempo desde a criação dos threads até produção dos dados de saída. Esse tempo não deve considerar o tempo para ler ou gravar dados nos arquivos.

Para o item (ii), sugere-se o uso dos programas para capturar a tela do computador e criar vídeos, como o SimpleScreenRecorder (http://www.maartenbaert.be/simplescreenrecorder).

Para o item (iii), o relatório deve estar no formato PDF ou disponível no próprio servidor Git usando um arquivo na sintaxe Markdown. Outros formatos não serão aceitos.

A falta de qualquer um dos itens acarretará em nota zero nesse componente de avaliação.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.