[{"command":"insert","method":null,"selector":".course-modal-ajax-placeholder-952846","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  [M2 DiPaC] Programmation GPU\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          Semester 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\u003EBasic knowledge of programming in C or C++ is required.\u003C\/li\u003E\n\u003Cli\u003EFamiliarity with parallel programming concepts and computer architecture.\u003C\/li\u003E\n\u003Cli\u003E[M1 DiPaC] Introduction to parallel algorithms and programming\u003C\/li\u003E\n\u003Cli\u003E[M2 DiPaC] High-performance computing on multicore architectures\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 (6 sessions \u00d7 3,5 hours)\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003ESession 1 (Lecture):\u003C\/strong\u003E\u0026nbsp;Introduction to GPU computing; overview of parallel architectures; CUDA programming model and GPU execution model.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ESession 2 (Lecture + Lab):\u003C\/strong\u003E\u0026nbsp;CUDA programming basics \u2014 kernels, threads, blocks, and grids; CPU-GPU memory transfers and allocation, writing and launching simple CUDA kernels; introduction to thread indexing and memory access patterns.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ESession 3 (Lecture + Lab):\u003C\/strong\u003E\u0026nbsp;2D and 3D indexing\/kernels. CUDA matrix multiplication with 1D and 2D GPU kernels.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ESession 4 (Lecture + Lab):\u003C\/strong\u003E\u0026nbsp;GPU memory hierarchy \u2014 global, shared, constant, and texture memory; performance implications of memory access.\u0026nbsp;Memory coalescing. Matrix multiplication 9-point grid computation using shared memory.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ESession 5 (Lecture + Lab):\u003C\/strong\u003E\u0026nbsp;Reduction algorithms and fast matrix transposition using CUDA.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ESession 6 (Lecture + Lab):\u003C\/strong\u003E Advanced CUDA concepts \u2014 streams, events, and asynchronous execution; use of CUDA libraries (cuBLAS, cuSOLVER); integrating GPU computations into larger applications.Using GPU libraries CuBLAS and CuSOLVER. Small applicaiton using CUDA libraries.\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\u003EAt the end of this course, students will be able to:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003EUnderstand the architecture and execution model of modern GPUs.\u003C\/li\u003E\n\u003Cli\u003EExplain the CUDA programming model and its main components (kernels, threads, blocks, grids).\u003C\/li\u003E\n\u003Cli\u003EDevelop and execute GPU programs using CUDA C\/C++.\u003C\/li\u003E\n\u003Cli\u003EEfficiently manage GPU memory and data transfers between host and device.\u003C\/li\u003E\n\u003Cli\u003EApply optimization strategies to improve GPU program performance.\u003C\/li\u003E\n\u003Cli\u003EDesign and implement small-scale applications leveraging GPU acceleration.\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.5 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 CUDA on a GPU-equipped 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 programs using CUDA for parallel computation.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EAnalytical competence:\u003C\/strong\u003E\u0026nbsp;Capacity to analyze performance bottlenecks, apply profiling tools, and optimize GPU-based solutions.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EPractical competence:\u003C\/strong\u003E\u0026nbsp;Proficiency in using GPU development environments, compilers, and debugging\/profiling utilities.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EProblem-solving competence:\u003C\/strong\u003E\u0026nbsp;Ability to identify problems suitable for GPU acceleration and implement efficient solutions.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ETransferable skills:\u003C\/strong\u003E\u0026nbsp;Experience working with large-scale computational problems, performance tuning, and structured experimentation.\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\u003ESanders, J., \u0026amp; Kandrot, E.\u0026nbsp;\u003Cem\u003ECUDA by Example: An Introduction to General-Purpose GPU Programming.\u003C\/em\u003E\u0026nbsp;Addison-Wesley, 2010.\u003C\/li\u003E\n\u003Cli\u003EKirk, D. B., \u0026amp; Hwu, W. W.\u0026nbsp;\u003Cem\u003EProgramming Massively Parallel Processors: A Hands-on Approach.\u003C\/em\u003E\u0026nbsp;Morgan Kaufmann, 3rd Edition, 2016.\u003C\/li\u003E\n\u003Cli\u003ENVIDIA Corporation.\u0026nbsp;\u003Cem\u003ECUDA C Programming Guide.\u003C\/em\u003E\u0026nbsp;(latest version available online at\u0026nbsp;developer.nvidia.com\/cuda-zone)\u003C\/li\u003E\n\u003Cli\u003EFarber, R.\u0026nbsp;\u003Cem\u003EParallel Programming with OpenACC.\u003C\/em\u003E\u0026nbsp;Morgan Kaufmann, 2016 (for comparison with directive-based models).\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}]