Información General
Docentes.
Curso Optativo de la Lic. en Ciencias de la Computación, FaMAF, UNC.
Curso de Posgrado de los Doctorados en Física, Astronomía y Computación, FaMAF, UNC.
Curso de grado para Universidades Latinoamericanas que tengan convenio con la UNC.
Curso de posgrado para Universidades Latinoamericanas.
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 de aproximadamente 20 horas de trabajo.
Horarios.
Teóricos: martes y jueves de 14 a 16, por sala virtual de teórico
Labs: martes y jueves de 16 a 18, por sala virtual de laboratorio.
Período de Clases.
Del martes 16 de marzo al jueves 17 de junio de 2021.
Canal de Zulip: void
.
Versiones anteriores:
2020,
2018,
2016,
2014,
2012.
Teóricos
- 20210316: Clase 1, introducción a arquitectura de computadoras (hasta cache 1-way).
- 20210318: Introducción a arquitectura de computadoras (cont'd), de código fuente a código ejecutable
clear.c
- 20210323: 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
.
- 20210326: Clase 3, arquitecturas modernas,
store.c
,
max_dist.c
,
unroll.c
.
- 20210330: Clase 4, superscalar.
int_superscalar.c
,
float_superscalar.c
,
both_superscalar.c
.
- 20210406: Continuamos con Superscalar, hacemos experimentos.
- 20210408: Clase 5, jerarquía de memoria y optimizaciones.
- 20210413: Continuamos con jerarquía de memoria y optimizaciones, algunas técnicas.
aliasing.c
,
aos_vs_soa.c
,
mtxtransp1.c
,
mtxtransp2.c
.
- 20210415: Clase 6, límites y paralelismo.
- 20210420: Continuamos con límites y paralelismo.
time_sgemm.c
,
time_dgemm.c
,
stream.c
.
- 20210422: Clase 7, SIMD 1.
multmap.c
,
mapcond.c
.
- 20210427: Clase 8, SIMD 2.
reducesum_vhadd.c
,
reducesum_vadd.c
,
reducesum.c
,
transpose_avx.c
,
transpose_mem_cache_avx.c
,
mtxtransp1.c
,
mtxtransp2.c
.
- 20210429: Clase 9, SIMD implementations.
gistfile1.cpp
,
avx-turbo
.
- 20210506: Clase 11, MIMD.
- 20210511: Clase 12, OpenMP 1.
hpc_p123.f
,
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
,
openmp_mandel
(ELF64).
- 20210513: Clase 13, OpenMP 2.
parallel-sections.c
,
parallel-ordered.c
,
- 20210515: OpenMP 2, continúa.
parallel-reduction-array-manual-naive.c
,
parallel-reduction-array-manual-race.c
,
parallel-reduction-array-manual.c
,
parallel-reduction-array.c
,
parallel-task.c
,
sum-task.c
,
sum.c
,
sum-omp.c
.
- 20210520: Clase 14, Topología en SMP.
falsesharing.c
,
topo_2_E52680v2.xml
,
topo_2_E52680v4.xml
,
topo_2_E52680v4_HT.xml
,
topo_7210_knl.xml
.
- 20210527: Clase 15, Afinidad.
numa.c
,
numa-trash.c
.
- 20210601: Clase 17, Graphics Processing Units.
CS314-CgExample-Frag_and_Vertex_Shader.tar.gz
.
- 20210603: Clase 18, CUDA 1 intro.
Proyectos de Laboratorio
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, 2021.
-
CUDA C Best Practices Guide,
NVIDIA, 2021.
- CUDA Toolkit Documentation,
NVIDIA, 2021.
Recursos Computacionales
- 2 * (2*Xeon
E5-2680v4,
128 GiB de RAM DDR4-2133, SSD 240 GiB, HDD 2*4 TiB). .
Estos recursos computacionales se obtuvieron con fondos del PROMINF y PAMEG.
Contacto
{bc,nicolasw}@famaf_url, donde famaf_url = famaf.unc.edu.ar
$Date$, $Revision$