{"id":6026,"date":"2022-01-13T17:16:34","date_gmt":"2022-01-13T14:16:34","guid":{"rendered":"https:\/\/hpc-education.unn.ru\/?page_id=6026"},"modified":"2022-06-22T22:52:10","modified_gmt":"2022-06-22T19:52:10","slug":"programming-with-oneapi","status":"publish","type":"page","link":"https:\/\/hpc-education.unn.ru\/en\/the-oneapi-center-of-excellence\/programming-with-oneapi","title":{"rendered":"Programming with oneAPI"},"content":{"rendered":"<p>This course was developed at the oneAPI Center of Excellence at UNN, which is supported by Intel.<\/p>\n<p><strong>Objective<\/strong><\/p>\n<p>The course focuses on high performance computing (HPC) using models, methods, and tools for parallel programming on Intel\u00ae platforms. The course is based on the new oneAPI heterogeneous programming model and its key component, the Data Parallel C++ (DPC++) open-source project that implements SYCL standards. DPC++ facilitates the development of portable HPC applications for CPUs, GPUs, FPGAs, and other devices.<\/p>\n<p><strong>Target Audience<\/strong><\/p>\n<p>The modular structure lets you adapt the content to different learning objectives and target audiences, and is appropriate for these audiences:<\/p>\n<ul>\n<li>Undergraduate and graduate students with basic competency in programming, algorithms and data structures, C++, and parallel programming.<\/li>\n<li>University professors who teach courses on parallel programming.<\/li>\n<li>HPC professionals who want to learn about SYCL and DPC++.<\/li>\n<\/ul>\n<p><strong>Curriculum<\/strong><\/p>\n<p>Refer to the following draft versions of the curriculum, which are under continuous development, much like oneAPI itself. Some of the materials were prepared by our colleagues from Intel, to whom we are very grateful.<\/p>\n<p><strong>Module 1: Architectural Mechanisms that Affect Performance Concurrency levels<\/strong><\/p>\n<p>Lectures 1.1-1.2<\/p>\n<p><strong>Module 2. Operating systems. Aspects of concurrency<\/strong><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/ya3iJ8GXEFgiF4M\">Lecture 2.1. Operating Systems. Processes, threads, scheduling<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/rqCw7D73zHKm7Qj\">Lecture 2.2. Operating Systems. Concurrency &amp; synchronization<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/GfqGQBosX95A49F\">Practice 2.3. Operating Systems<\/a><\/p>\n<p><strong>Module 3: Programming using SYCL\/Data Parallel C++<\/strong><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/WFALL2yKAg3pTnY\">Lectures 3.1-3.2. Elements of modern C++<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/WTYf2K6CREf4WHS\">Practice 3.3. Elements of modern C++<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/Kzda659SrsYekX4\">Lecture 3.4. oneAPI DPC++ Introduction<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/tajbzazWdfDMMfc\">Practice 3.5. DPC++ Hello World<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/GAHi3bQWkWrDKDe\">Lecture 3.6. DPC++ Kernel Execution<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/DDw9aC8gQSyor2r\">Practice 3.7. Double Integrals Computation with Riemann Sums<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/eZCka9gcSk84Ypq\">Lecture 3.8. DPC++ Memory Management<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/MiQnWajKQwnFAti\">Practice 3.9. Solving Systems of Linear Equations by the Jacobi Method<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/KwRXeMNebKwwPMd\">Lecture 3.10. DPC++ Optimization Tips<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/2FdrXQcNbfrQJ5p\">Practice 3.11. General Matrix Multiplication<\/a><\/p>\n<p><strong>Module 4: OneAPI Software Libraries and Tools<\/strong><\/p>\n<p>Lecture 4.1. Libraries <a href=\"https:\/\/cloud.unn.ru\/s\/Yjjb4ztR5NmtxYj\">IPP<\/a>,&nbsp;<a href=\"https:\/\/cloud.unn.ru\/s\/yjWA8T2LWjgfp8a\">oneVPL<\/a>,&nbsp;<a href=\"https:\/\/cloud.unn.ru\/s\/oZ7TR7GJirAbtoP\">oneDAL<\/a><\/p>\n<p>Lecture 4.2. Libraries <a href=\"https:\/\/cloud.unn.ru\/s\/485bmidR8Z5Kn5D\">oneMKL<\/a>,&nbsp;<a href=\"https:\/\/cloud.unn.ru\/s\/TfY3qQeZr7eFaZo\">oneTBB<\/a>,&nbsp;<a href=\"https:\/\/cloud.unn.ru\/s\/i4Kkca544CEDdim\">oneDPL<\/a><\/p>\n<p>Practice 4.3. <a href=\"https:\/\/cloud.unn.ru\/s\/5tyMX2W2LTLKQyF\">OneAPI Video Processing Library (oneVPL)<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/GkDZrjPnbjWzDye\">Master class 4.4. Performance Optimization with Intel VTune<\/a><\/p>\n<p>Master class 4.5. Performance Optimization with Intel Advisor<\/p>\n<p>Master class 4.6. High performance neural network inference with the Intel Distribution of OpenVINO toolkit<\/p>\n<p><strong>Module 5. High performance computing and scientific modeling. Examples of using<\/strong><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/GyQap6qWWgsEo3t\">Master class 5.1. Porting the particle movement module to DPC++. Analysis and optimization of performance on CPU and GPU using Intel VTune<\/a><\/p>\n<p><a href=\"https:\/\/cloud.unn.ru\/s\/9nNysE2ciqPWZTX\">Master class 5.2. Analysis of financial markets: calculation of the Black-Scholes formula. Analysis and optimization of performance on CPUs and GPUs using Intel VTune<\/a><\/p>\n<p>Master class 5.3. Integration of Maxwell&#8217;s Equations by the FDTD Method. Analysis and optimization of performance on CPUs and GPUs (under development)<\/p>\n<p>Master class 5.4. Integration of Maxwell&#8217;s Equations by the FDTD Method. Mixed Precision Computing on CPUs and GPUs (under development)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This course was developed at the oneAPI Center of Excellence at UNN, which is supported by Intel. Objective The course focuses on high performance computing (HPC) using models, methods, and tools for parallel programming on Intel\u00ae platforms. The course is &hellip; <a href=\"https:\/\/hpc-education.unn.ru\/en\/the-oneapi-center-of-excellence\/programming-with-oneapi\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":40,"featured_media":0,"parent":5761,"menu_order":41,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0},"_links":{"self":[{"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/pages\/6026"}],"collection":[{"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/comments?post=6026"}],"version-history":[{"count":3,"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/pages\/6026\/revisions"}],"predecessor-version":[{"id":6182,"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/pages\/6026\/revisions\/6182"}],"up":[{"embeddable":true,"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/pages\/5761"}],"wp:attachment":[{"href":"https:\/\/hpc-education.unn.ru\/en\/wp-json\/wp\/v2\/media?parent=6026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}