[{"command":"insert","method":null,"selector":".course-modal-ajax-placeholder-952844","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 \u00e0 base du parall\u00e9lisme de donn\u00e9e en C++\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 2\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++ is required.\u003C\/li\u003E\n\u003Cli\u003EFamiliarity with parallel programming, preferably through the courses\u003C\/li\u003E\n\u003Cli\u003E[M1 DiPaQ] Introduction to parallel algorithms and programming\u003C\/li\u003E\n\u003Cli\u003E[M1 DiPaQ] 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\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003EIntroduction to advanced data-parallel programming concepts and SYCL\/oneAPI ecosystem\u003C\/li\u003E\n\u003Cli\u003ESYCL execution and programming models: queues, command groups, kernels\u003C\/li\u003E\n\u003Cli\u003EMemory management strategies: buffers, accessors, Unified Shared Memory (USM)\u003C\/li\u003E\n\u003Cli\u003EDevice selection, data movement, and memory optimization for heterogeneous architectures\u003C\/li\u003E\n\u003Cli\u003EImplementing parallel algorithms: parallel loops, reductions, scans, and DPC++ library algorithms\u003C\/li\u003E\n\u003Cli\u003EPerformance analysis: profiling, benchmarking, vectorization, and cache optimization\u003C\/li\u003E\n\u003Cli\u003EEfficient work-group and work-item mapping for CPUs, GPUs, and accelerators\u003C\/li\u003E\n\u003Cli\u003EAdvanced kernel design: nested parallelism, local memory, synchronization, and lambda-based kernels\u003C\/li\u003E\n\u003Cli\u003EBest practices in software engineering for high-performance data-parallel C++ applications\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\u003EMaster data-parallel C++ paradigms \u2013 apply SYCL and oneAPI programming models to implement efficient and portable data-parallel computations across CPUs, GPUs, and other accelerators.\u003C\/li\u003E\n\u003Cli\u003EOptimize for performance and scalability \u2013 analyze and improve memory access patterns, vectorization, and workload distribution to maximize performance on heterogeneous architectures.\u003C\/li\u003E\n\u003Cli\u003EDesign complex parallel algorithms \u2013 develop sophisticated data-parallel algorithms for high-performance applications such as scientific computing, simulations, and machine learning.\u003C\/li\u003E\n\u003Cli\u003EIntegrate and exploit heterogeneous architectures \u2013 effectively orchestrate computation across multiple devices using SYCL\/oneAPI to achieve high throughput and resource utilization.\u003C\/li\u003E\n\u003Cli\u003EImplement robust and maintainable parallel systems \u2013 apply advanced debugging, verification, and software engineering practices to ensure correctness and maintainability of large-scale data-parallel programs.\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\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 CPU and 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 data-parallel programs using SYCL\/oneAPI across heterogeneous architectures (CPU, GPU, and accelerators).\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EAnalytical competence:\u003C\/strong\u003E\u0026nbsp;Capacity to analyze performance bottlenecks, profile SYCL\/oneAPI applications, and optimize memory access, vectorization, and workload distribution.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EPractical competence:\u003C\/strong\u003E\u0026nbsp;Proficiency in using SYCL\/oneAPI development environments, compilers, and profiling tools for high-performance C++ programming.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EProblem-solving competence:\u003C\/strong\u003E\u0026nbsp;Ability to identify computational problems suitable for data-parallel acceleration and implement efficient, scalable solutions.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ETransferable skills:\u003C\/strong\u003E\u0026nbsp;Experience in performance tuning, efficient memory and execution management, and structured experimentation with large-scale heterogeneous computational problems.\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\u003ERupp, Karl, et al.\u0026nbsp;\u003Cem\u003EData-Parallel C++: Mastering SYCL for Programming of Heterogeneous Systems.\u003C\/em\u003E\u0026nbsp;Addison-Wesley, 2022.\u003C\/li\u003E\n\u003Cli\u003EKhronos Group.\u0026nbsp;\u003Cem\u003ESYCL 2020 Specification.\u003C\/em\u003E\u0026nbsp;Khronos Group, 2020.\u0026nbsp;\u003Ca rel=\u0022nofollow noopener noreferrer\u0022 target=\u0022_blank\u0022 href=\u0022https:\/\/www.khronos.org\/sycl\/\u0022\u003Ehttps:\/\/www.khronos.org\/sycl\/\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003EIntel Corporation.\u0026nbsp;\u003Cem\u003EoneAPI DPC++ Library (oneDPL) Documentation.\u003C\/em\u003E\u0026nbsp;Intel, 2023.\u0026nbsp;\u003Ca rel=\u0022nofollow noopener noreferrer\u0022 target=\u0022_blank\u0022 href=\u0022https:\/\/www.intel.com\/content\/www\/us\/en\/developer\/tools\/oneapi\/dpc-library.html\u0022\u003Ehttps:\/\/www.intel.com\/content\/www\/us\/en\/developer\/tools\/oneapi\/dpc-library.html\u003C\/a\u003E\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}]