Información General
Docentes.
Curso Optativo de la Lic. en Ciencias de la Computación.
Curso de Posgrado de los Doctorados en Física, Matemática, Astronomía y Computación.
FaMAF, Universidad Nacional de Córdoba.
Forma de aprobación optativa: entrega y aprobación de los cuatro (4) laboratorios en grupos de hasta dos (2) personas.
Forma de aprobación posgrado: además se entrega de un trabajo final individual integrador.
Horarios.
Teóricos: lunes y miércoles de 14 a 16, Sala IPT (Incubadora Proyectos TIC), capacidad para 40 personas.
Clases presenciales canceladas por , sintonicen el canal de Slack para ver por donde salimos.
Labs: lunes y miércoles de 16 a 18, mismo lugar.
Período de Clases.
Del lunes 9 de marzo al miércoles 17 de junio de 2020.
Formulario para alumnas/os interesados.
Slack: #cp2020@famaf-unc.slack.com
.
Lista de correo: cp2020-famaf@groups.io
.
Versiones anteriores:
2018,
2016,
2014,
2012.
Teóricos
- 20200309: Clase 1, introducción a arquitectura de computadoras (hasta VM).
- 20200311: Introducción a arquitectura de computadoras (cont'd), de código fuente a código ejecutable
clear.c
- 20200316 (via Meet): Clase 2, representaciones numéricas,
HPC_program_1.2.5.f
,
HPC_program_1.2.4.f
,
HPC_program_1.2.4_2.f
,
kahan.c
,
sum_experiment.c
.
- 20200318 (via Meet): Clase 3, arquitecturas modernas (primera parte),
store.c
,
max_dist.c
,
unroll.c
.
- 20200325 (via Meet): arquitecturas modernas (primera parte (cont'd)).
- 20200330 (via Meet): Clase 4, procesadores superescalares,
int_superscalar.c
,
float_superscalar.c
,
both_superscalar.c
.
- 20200401 (via Meet): Clase 5, jerarquía de memoria y optimizaciones.
aliasing.c
,
aos_vs_soa.c
,
mtxtransp1.c
,
mtxtransp2.c
.
- 20200406 (via Meet, sin video, corte de luz de EPEC más corte de ADSL Arnet): Clase 6, límites y paralelismo.
- 20200413 (via Meet): Clase 7, SIMD 1.
multmap.c
,
multmap_octa.c
,
multmap_octa_oneliner.c
,
multmap_omp.c
,
mapcond.c
,
mapcond_omp.c
.
- 20200415 (via Meet): Clase 8, SIMD 2.
reducesum_vhadd.c
,
reducesum_vadd.c
,
reducesum.c
,
transpose_avx.c
,
transpose_mem_cache_avx.c
.
- 20200420 (via Meet): Clase 9, SIMD implementations.
- 202004?? (via Meet): Clase 10, ARM SVE.
- 20200427 (via Meet): Clase 11, MIMD.
- 20200429 (via Meet): Clase 12, OpenMP 1.
incdec.c
,
incdec_volatile.c
,
incdec_atomic.c
,
incdec_lock.c
,
parallel-hello.c
,
parallel-hello-clauses-threads.c
,
parallel-for.c
,
parallel-reduction.c
.
- 20200504,06 (via Meet): Clase 13, OpenMP 2.
parallel-sections.c
,
parallel-ordered.c
,
parallel-reduction-array-manual-naive.c
,
parallel-reduction-array-manual.c
,
parallel-reduction-array.c
,
parallel-task.c
,
sum-task.c
,
sum-autopar.c
,
sum-omp.c
.
- 20200511 (via Meet): Clase 14, Topología en SMP.
topo_2_E52680v2.xml
,
topo_2_E52680v4.xml
,
topo_2_E52680v4_HT.xml
,
topo_7210_knl.xml
.
- 20200513 (via Meet): Clase 15, Afinidad.
falsesharing.c
,
numa.c
,
numa-trash.c
.
- 20200518 (via Meet): Clase 16, Scaling en SMP.
- 20200520 (via Meet): Clase 17, Graphics Processing Units.
CS314-CgExample-FragmentShader.tar.gz
,
CS314-CgExample-VertexFragmentShader.tar.gz
.
- 20200525: Feriado 🇦🇷.
- 20200527 (via Meet): Clase 18, CUDA 1 intro.
- 20200601 (via Meet): Clase 19, CUDA 2 maps.
helper_cuda.h
,
map1.cu
,
map2.cu
,
ma4.c
,
ma4_simd_omp.c
,
ma4.cu
.
- 20200603 (via Meet): Clase 20, CUDA 3 reduction.
reduce.c
,
reduce1.cu
,
reduce2.cu
,
reduce3.cu
.
- 20200608 (via Meet): Clase 21, CUDA 4 tools. Trabajamos sobre
ma4.cu
.
- 20200610 (via Meet): Clase 22, Arquitectura GPU.
- 20200615: Feriado Güemes.
- 20200617 (via Meet): Fin GPUArch, cierre de la materia.
Labs
Laboratorio
Bibliografía
Divulgación
HPC en general
CPU
- John L. Hennessy, David A. Patterson,
Computer Architecture: A Quantitative Approach, 6th Edition,
Morgan Kaufmann, 2017.
- David A. Patterson, John L. Hennessy,
Computer Organization and Design: RISC-V Edition, 1st Edition,
Morgan Kaufmann, 2017.
- Randal E. Bryant, David R. O’Hallaron,
x86-64 Machine-Level Programming,
2008.
- Jason Robert Carey Patterson,
Modern Microprocessors A 90 Minute Guide!,
original 2001, actualizado 2016.
- Dan Luu,
What's new in CPUs since the 80s and how does it affect programmers?,
2015.
- Agner Fog,
Software optimization resources,
Copenhagen University College of Engineering,
2020.
- Ulrich Drepper,
What Every Programmer Should Know About Memory,
Red Hat Inc., 2007.
- Intel Developer Manuals.
CPU, multicore
- Ruud van der Pas, Eric Stotzer, Christian Terboven,
Using OpenMP-The Next Step; Affinity, Accelerators, Tasking, and SIMD,
MIT Press, 2017.
- The OpenMP® API specification for parallel programming.
-
OpenMP 4.5 API C/C++ Syntax Quick Reference Card.
- Victor Eijkhout,
Parallel Programming for Science and Engineering Using MPI, OpenMP, and the PETSc library, 1st Edition, 2017.
GPU
- David B. Kirk, Wen-mei W. Hwu,
Programming Massively Parallel Processors: A Hands-on Approach, 3rd Edition,
Morgan Kaufmann, 2016.
- Sean Baxter,
Modern GPU 2.0 site, 2015.
- Rob Farber,
CUDA Application Design and Development,
Morgan Kaufmann, 2011.
-
CUDA C Programming Guide,
NVIDIA, 2020.
-
CUDA C Best Practices Guide,
NVIDIA, 2020.
- CUDA Toolkit Documentation,
NVIDIA, 2020.
Recursos Computacionales
Contacto
{bc,nicolasw}@famaf_url, donde famaf_url = famaf.unc.edu.ar
$Date$, $Revision$