Arquiteturas Modernas de Computação
Objetivo:
Aprender os principais componentes que compõem as arquiteturas computacionais modernas e como tais componentes podem ser utilizados para otimizar o desempenho de aplicações. O aluno aprenderá também como são estruturados aceleradores GPU, que são os recursos mais utilizados atualmente para prover suporte a execução de aplicações de aprendizado de máquina. Por último o aluno aprenderá como utilizar ambientes de nuvem computacional, com atividades práticas de utilização dos principais provedores de ambiente de nuvem, tais como, AWS, Google e IBM.
Tópicos:
- Arquitetura Multicore
- Recursos de Vetorização
- Sistema Hierárquico de Memória
- Recursos de Otimizações do Compilador
- Vetorização Automática
- GPUs:
- Organização de núcleos da arquitetura GPU
- Modelo de memória GPU
- Modelo de execução SIMT
- Sincronização
- Paralelismo de dados
- Processamento de Streams
- Programação usando aceleradores
- Ambientes de nuvem computacional
- Introdução ao conceito de nuvem computacional
- Uso de nuvens comerciais para Machine Learning (AWS, Google Cloud, IBM Cloud)
Duração:
- Aula Teórica Presencial: 2 Semanas (16h). Dois encontros de 4 horas.
- Projetos individuais da disciplina: 64 h
Audiência:
Estudantes Graduados em Ciência da Computação ou áreas correlatas.
Bibliografia:
Jeffers, J., Reinders, J., Sodani, A., 2016. Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition, 2nd ed. Morgan Kaufmann, Cambridge, MA.
Aamodt, T.M., Fung, W.W.L., Rogers, T.G., 2018. General-Purpose Graphics Processor Architectures. Morgan & Claypool.