-
Apresentação
Apresentação
A Unidade Curricular de Programação Paralela apresenta uma abordagem para ensino de programação paralela em ambientes heterogêneos. Esta abordagem permite uma transição suave entre o paradigma de programação sequencial para a programação paralela em ambientes heterogêneos, capacitando os estudantes a extrair melhor desempenho das arquiteturas atuais. A linguagem de programação utilizada permite a portabilidade, bem como ser um padrão de linguagem livre de programação, e possibilitar a utilização de todos os recursos de uma arquitetura heterogênea. A abordagem de ensino é divida em dois componentes, onde o componente introdutório aborda as principais características da linguagem de programação OpenCL, a identificação de hardware com suporte a OpenCL em um ambiente heterogêneo e a configuração do ambiente de desenvolvimento. O processo de transição comporta aplicações com um nível de complexidade crescente, permitindo o ensino prático da programação paralela em ambientes heterogêneos.
-
Disciplina do curso
Disciplina do curso
-
Grau | Semestres | ECTS
Grau | Semestres | ECTS
Licenciado | Semestral | 6
-
Ano | Natureza | Lingua
Ano | Natureza | Lingua
3 | Obrigatório | Português
-
Código
Código
ULP452-22528
-
Pré-requisitos e co-requisitos
Pré-requisitos e co-requisitos
Não aplicável
-
Estágio Profissional
Estágio Profissional
Não
-
Conteúdos Programáticos
Conteúdos Programáticos
Descrição dos conteúdos Introdução a programação paralela. Razões que influenciaram o desenvolvimento da computação paralela. Divisão das áreas da computação paralela. Áreas de abrangência do processamento paralelo. Primitivas Básicas de Programação Paralela: controlo de tarefas, comunicação e sincronização. Modelos de arquiteturas paralelas. Divisão em relação ao fluxo de dados. Divisão quanto ao fluxo de instruções. Divisão em relação ao mecanismo de controlo. Máquinas paralelas comerciais. Classificação do desempenho das máquinas paralelas. Redes de interconexão de processadores. Medidas de desempenho das aplicações paralelas. Obtenção de resultados de aplicações paralelas. Custo computacional. Speedup. Eficiência. Escalabilidade. Exploração do paralelismo em programas. Modelos de algoritmos paralelos. Exploração implícita. Exploração explícita. Paradigmas de programação paralela.
-
Objetivos
Objetivos
Estudar o modelo programação paralela para perceber que é constituído por um conjunto de tecnologias de software para expressar algoritmos paralelos e criar aplicações compatíveis com sistemas que suportam a programação paralela. Neste contexto, incluem-se as áreas de aplicações, linguagens de programação, compiladores, biblioteca (computação), sistemas de comunicação e I/O paralelo. Para ultrapassar as dificuldades da paralelização automática, identifica-se um modelo de programação paralela apropriado para desenvolver as aplicações sobre uma plataforma paralela. Desenvolver modelos de programação paralela para serem implementados de diversas formas: como bibliotecas invocadas de linguagens de programação sequencial, extensão de linguagens, ou novos modelos de execução. Também, podem categorizar-se em dois tipos de sistemas: memória compartilhada e sistemas de memória distribuída.
-
Metodologias de ensino e avaliação
Metodologias de ensino e avaliação
A unidade curricular está estruturada em duas componentes principais e que se complementam: aulas de caráter teórico e expositivo e aulas de caráter prático e de experimentação. Nas aulas teóricas são explorados os conteúdos programáticos definidos, sendo os estudantes convidados a participar ativamente na aula. Nas aulas práticas, são propostos trabalhos para aplicação dos conhecimentos adquiridos nas aulas teóricas. Metodologia de avaliação: Avaliação Curricular: Um teste de avaliação global a realizar no final do semestre. Nota Final = Nota do teste de avaliação, com peso de 70% na nota final, e nota mínima de 8 valores. Trabalhos práticos a desenvolver em sala de aula, com um peso de 20% na nota final. Assiduidade e participação nas aulas com uma valorização de 10%. Mínimo de 70% de presenças nas aulas. Avaliação Final: Todos os estudantes terão direito a um exame final
-
Bibliografia principal
Bibliografia principal
Czarnul, C. (2018). Parallel Programming for Modern High Performance Computing Systems. Taylor & Francis. ISBN: 9781138305953. Balaji, P. (2016). Programming Models for Parallel Computing. MIT Press. ISBN: 9780262528818. Grama, A. (2003). Introduction to parallel computing. 2. ed. Harlow, England: Addison Wesley. Dongarra, J.J. (2003). Sourcebook of parallel computing. 1. ed. Amsterdam: Morgan Kaufmann. Herlihy, M., Shavit, N. (2008). The art of multiprocessor programming. 1. ed. Burlington: Elsevier Morgan Kaufmann.
-
Horário de Atendimento
Horário de Atendimento
-
Mobilidade
Mobilidade
Não