[{"command":"insert","method":null,"selector":".course-modal-ajax-placeholder-950872","data":"\u003Cdiv class=\u0022container content-rte\u0022\u003E\n  \u003Cdiv class=\u0022row\u0022\u003E\n    \u003Cdiv class=\u0022box col-md-6 bg-primary text-white\u0022\u003E\n      \u003Ch2 class=\u0022h1 text-left\u0022\u003E  [M1 DiPaQ] Introduction \u00e0 l\u0026#039;algorithmique et \u00e0 la programmation parall\u00e8le\n\u003C\/h2\u003E\n                  \u003Cdiv class=\u0022field-spacing\u0022\u003E\n        \u003Cdiv class=\u0022field__label h3 dash\u0022\u003EECTS :\n          3\n        \u003C\/div\u003E\n      \u003C\/div\u003E\n                  \u003Cdiv class=\u0022field-spacing\u0022\u003E\n        \u003Cdiv class=\u0022field__label h3 dash\u0022\u003ESemestre calendaire :\n          Semestre 1\n        \u003C\/div\u003E\n      \u003C\/div\u003E\n            \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003ED\u00e9tail du volume horaire\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                          \u003Cspan class=\u0022field__label h4 mt-5 \u0022\u003ECours magistraux :\u003C\/span\u003E\n                                      \u003Cspan\u003E10.5\u003C\/span\u003E\n                      \u003C\/div\u003E\n                                \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                          \u003Cspan class=\u0022field__label h4 mt-5 \u0022\u003ETravaux pratiques :\u003C\/span\u003E\n                                      \u003Cspan\u003E10.5\u003C\/span\u003E\n                      \u003C\/div\u003E\n                                                                          \u003C\/div\u003E\n        \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003ELangue d\u0026#039;enseignement\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003EAnglais\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n        \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003EEnseignement \u00e0 distance\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003Enon\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n      \u003C\/div\u003E\n    \u003Cdiv class=\u0022box col-md-6\u0022\u003E\n            \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003EPr\u00e9requis\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003E\u003Cp\u003E\u003Cstrong\u003EPrerequisites:\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003EBasic algorithms and complexity analysis\u003C\/strong\u003E\u0026nbsp;\u2013 familiarity with algorithm design, asymptotic analysis, and common data structures.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EProgramming in C\/C++\u003C\/strong\u003E\u0026nbsp;\u2013 ability to write, compile, and debug programs in C or C++.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EBasic computer architecture\u003C\/strong\u003E\u0026nbsp;\u2013 understanding of CPU, memory hierarchy, and instruction execution.\u003C\/li\u003E\n\u003C\/ul\u003E\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n        \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003EProgramme \/ plan \/ contenus\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003E\u003Cp\u003E\u003Cstrong\u003ECourse program, plan, content:\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003ETotal duration:\u003C\/strong\u003E\u0026nbsp;21 hours (7 sessions \u00d7 3 hours)\u003C\/p\u003E\n\u003Cp\u003EThis course provides an in-depth study of high-performance computing (HPC) techniques targeting modern multicore processors on shared-memory architectures. Students learn how hardware architecture influences software performance and how to exploit shared-memory systems effectively. The course examines advanced SIMD vector instructions, cache-aware optimizations, NUMA behavior, efficient sparse and irregular data processing, and modern task-based parallelization strategies. Students also gain hands-on experience using foundational high-performance linear algebra libraries such as BLAS and LAPACK.\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003E\u003Cstrong\u003EMulticore and shared-memory architecture\u003C\/strong\u003E:\u003C\/em\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003EMulticore and manycore processor organization\u003C\/li\u003E\n\u003Cli\u003EMemory hierarchy and cache behavior\u003C\/li\u003E\n\u003Cli\u003ECache coherency protocols\u003C\/li\u003E\n\u003Cli\u003EData races, memory ordering, and synchronization challenges\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003E\u003Cem\u003E\u003Cstrong\u003ENUMA behavior and memory locality\u003C\/strong\u003E\u003C\/em\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003ENUMA vs. UMA models\u003C\/li\u003E\n\u003Cli\u003EMemory affinity, thread placement, and locality\u003C\/li\u003E\n\u003Cli\u003ENUMA-aware data structures and allocation strategies\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003E\u003Cem\u003E\u003Cstrong\u003EAdvanced SIMD vectorization techniques\u003C\/strong\u003E\u003C\/em\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003ESIMD instruction sets and compiler auto-vectorization\u003C\/li\u003E\n\u003Cli\u003EManual vectorization with intrinsics\u003C\/li\u003E\n\u003Cli\u003EVectorized implementations of core numerical kernels\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003E\u003Cem\u003E\u003Cstrong\u003ECache-aware and locality-driven optimization\u003C\/strong\u003E\u003C\/em\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003ELoop tiling, blocking, and unrolling\u003C\/li\u003E\n\u003Cli\u003EWorking-set analysis and data reuse\u003C\/li\u003E\n\u003Cli\u003ETechniques for reducing false sharing and contention\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003E\u003Cem\u003E\u003Cstrong\u003EDense linear algebra and high-performance matrix computation\u003C\/strong\u003E\u003C\/em\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003EDense linear algebra patterns\u003C\/li\u003E\n\u003Cli\u003ERoofline reasoning and performance limits\u003C\/li\u003E\n\u003Cli\u003EProgressive optimization of dense matrix multiplication\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003E\u003Cem\u003E\u003Cstrong\u003ESparse and irregular parallel computations\u003C\/strong\u003E\u003C\/em\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003ESparse matrix formats and memory layouts\u003C\/li\u003E\n\u003Cli\u003EGraph traversal and irregular workload challenges\u003C\/li\u003E\n\u003Cli\u003ELoad balancing and synchronization minimization\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003E\u003Cem\u003E\u003Cstrong\u003EAdvanced task-based parallel programming\u003C\/strong\u003E\u003C\/em\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003ETask decomposition and advanced dependency modeling\u003C\/li\u003E\n\u003Cli\u003ETask scheduling and priorities\u003C\/li\u003E\n\u003Cli\u003ERecursive task-parallellism\u003C\/li\u003E\n\u003C\/ul\u003E\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n        \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003EObjectifs d\u0026#039;apprentissage\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003E\u003Cp\u003E\u003Cstrong\u003ELearning objectives:\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EBy the end of this course, students will be able to:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003EDescribe modern multicore processor organization, memory hierarchy, and shared cache behavior\u003C\/li\u003E\n\u003Cli\u003EExplain challenges such as cache coherency, NUMA effects, and false sharing\u003C\/li\u003E\n\u003Cli\u003EDiagnose and correct memory-related performance bottlenecks\u003C\/li\u003E\n\u003Cli\u003EApply cache-aware and cache-tiling optimizations\u003C\/li\u003E\n\u003Cli\u003EUtilize SIMD intrinsics or compiler-driven vectorization effectively\u003C\/li\u003E\n\u003Cli\u003EDesign parallel strategies for graph algorithms and sparse matrix computations\u003C\/li\u003E\n\u003Cli\u003EAvoid pitfalls in parallel traversal of irregular data structures\u003C\/li\u003E\n\u003Cli\u003EApply task-based parallelism for dynamic workloads\u003C\/li\u003E\n\u003Cli\u003EBuild scalable parallel algorithms for modern multicore architectures\u003C\/li\u003E\n\u003Cli\u003EUse BLAS and LAPACK routines effectively in real-world applications\u003C\/li\u003E\n\u003Cli\u003EUnderstand how optimized libraries exploit hardware features\u003C\/li\u003E\n\u003C\/ul\u003E\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n        \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003EOrganisation g\u00e9n\u00e9rale et modalit\u00e9s p\u00e9dagogiques\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003E\u003Cp\u003E\u003Cstrong\u003EGeneral course organization and teaching modalities:\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003EThe course combines\u0026nbsp;\u003Cstrong\u003Electures\u003C\/strong\u003E\u0026nbsp;introducing theoretical concepts with\u0026nbsp;\u003Cstrong\u003Ehands-on programming labs\u003C\/strong\u003E\u0026nbsp;that allow students to apply and test these concepts in practice.\u003C\/li\u003E\n\u003Cli\u003EEach 3-hour session blends approximately 50% lecture and 50% programming exercises.\u003C\/li\u003E\n\u003Cli\u003EEvaluation is\u0026nbsp;\u003Cstrong\u003Econtinuous\u003C\/strong\u003E, based on\u0026nbsp;\u003Cstrong\u003Emultiple written and programming assignments\u003C\/strong\u003E\u0026nbsp;distributed throughout the course. Students will use parallel computing environment to complete lab work and assignments.\u003C\/li\u003E\n\u003C\/ul\u003E\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n                \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003EComp\u00e9tences\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003E\u003Cp\u003E\u003Cstrong\u003ECompetencies gained in the course:\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EUpon successful completion, students will have acquired the following competencies:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003ETechnical competence:\u003C\/strong\u003E\u0026nbsp;Ability to design and implement high-performance applications optimized for multicore shared-memory architectures.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EAnalytical competence:\u003C\/strong\u003E\u0026nbsp;Capacity to identify performance bottlenecks, analyze memory-hierarchy behavior, and apply profiling tools to evaluate multicore execution efficiency.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EPractical competence:\u003C\/strong\u003E\u0026nbsp;Proficiency in using multicore-oriented programming models, SIMD intrinsics, optimized linear algebra libraries, and performance-analysis toolchains.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EProblem-solving competence:\u003C\/strong\u003E\u0026nbsp;Ability to choose appropriate parallelization strategies\u2014including vectorization, cache-aware techniques, and task-based decomposition\u2014to address dense and sparse computational challenges.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ETransferable skills:\u003C\/strong\u003E\u0026nbsp;Experience working with performance-critical codebases, conducting structured experiments, tuning for locality and scalability, and producing reproducible performance results.\u003C\/li\u003E\n\u003C\/ul\u003E\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n        \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003EBibliographie\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003E\u003Cp\u003E\u003Cstrong\u003EBibliography:\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003EGrama, A., Gupta, A., Karypis, G., \u0026amp; Kumar, V.\u003C\/strong\u003E\u0026nbsp;\u003Cem\u003EIntroduction to Parallel Computing: Design and Analysis of Algorithms\u003C\/em\u003E, 2nd edition. Addison-Wesley, 2003.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EHennessy, J. L., \u0026amp; Patterson, D. A.\u003C\/strong\u003E\u0026nbsp;\u003Cem\u003EComputer Architecture: A Quantitative Approach\u003C\/em\u003E. Morgan Kaufmann.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EMattson, T., Sanders, B., \u0026amp; Massingill, B.\u003C\/strong\u003E\u0026nbsp;\u003Cem\u003EPatterns for Parallel Programming\u003C\/em\u003E. Addison-Wesley.\u003C\/li\u003E\n\u003C\/ul\u003E\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n        \u003Cdiv class=\u0022field-spacing\u0022\u003E\n      \u003Cdiv class=\u0022field__label h3 dash\u0022\u003ENature de l\u0026#039;\u00e9valuation\u003C\/div\u003E\n                        \u003Cdiv class=\u0022mt-5 text-justify\u0022\u003E\n                                      \u003Cspan\u003EEvaluation Continue non Int\u00e9grale\u003C\/span\u003E\n                      \u003C\/div\u003E\n                  \u003C\/div\u003E\n      \u003C\/div\u003E\n  \u003C\/div\u003E\n\u003C\/div\u003E\n","settings":null}]