http://habrahabr.ru/post/246055/
Привет, Хабр!
Как указано в названии этого топика, я активно тружусь над созданием учебного видео курса о параллельном программировании и оптимизации кода для высоко-производительных систем на базе Intel'овских архитектур. Ниже представлена дополнительная информация об этом курсе, список покрываемых тем и лабораторных работ, а так же пилотных эпизод, который даст представление о содержании и формате этого курса.
В текущем модуле на примере построения гистограммы будут показаны две оптимизационные техники для улучшения автоматической векторизации кода компилятором и приведены результаты производительности для Intel Xeon CPU и Intel Xeon Phi копроцессора.
Этот курс снимается для компании Intel на английском языке, и будет использован там, где я или мои коллеги из компании не могут присутствовать лично. Список тем, включённый в этот видео курс основан на нашем однодневном трейнинге. Слайды этого курса можно посмотреть по следующей ссылке:
http://research.colfaxinternational.com/post/2014/10/13/CDT-Slides.aspx. При скачивании файла со слайдами email и имя запрашиваются для внутренней статистики и в рассылки писем без согласия клиента не включаются.
Список тем трейнинга (на английском)- Welcome
- About This Document
- Disclaimer
- Introduction to the Intel Many Integrated Core (MIC) Architecture
- Purpose of the Intel MIC Architecture
- Details of the MIC Architecture
- Software Tools for Intel Xeon Phi Coprocessors
- Will My Application Benefit from the MIC architecture?
- Models for Intel Xeon Phi Coprocessor Programming
- Overview of Programming Options
- Native Coprocessor Applications
- Explicit Offload
- Data and Memory Buffer Retention
- Virtual-Shared Memory Offload Model
- Handling Multiple Coprocessors
- Heterogeneous Programming with Coprocessors using MPI
- File I/O in MPI Applications on Coprocessors
- Expressing Parallelism on Intel Architectures
- SIMD Parallelism and Automatic Vectorization
- Thread Parallelism and OpenMP
- Thread Synchronization in OpenMP
- Reduction Across Threads: Avoiding Synchronization
- Distributed Memory Parallelism and MPI
- Summary and Additional Resources
- Optimization Using Intel Software Development Tools
- Optimization Roadmap
- Library Solution: Intel Math Kernel Library (MKL)
- Node-Level Tuning with Intel VTune Amplifier XE
- Cluster-Level Tuning with Intel Trace Analyzer and collector
- Optimization of Scalar Arithmetics
- Compiler-friendly Practices
- Accuracy Control
- Optimization of Vectorization
- Diagnostics and Facilitation of Automatic Vectorization
- Vector-friendly Data Structures
- Data Alignment for Vectorization
- Strip-Mining for Vectorization
- Additional Vectorization ``Tuning Knobs''
- Optimization of Thread Parallelism
- Reduction instead of Synchronization
- Elimination of False Sharing
- Expanding Iteration Space
- Controlling Thread Affinity
- Optimization of Data Traffic
- Memory Access and Cache Utilization
- PCIe Traffic Optimization in Offload Applications
- MPI Traffic Optimization: Fabric Selection
- Optimization of MPI Applications
- Load Balancing in Heterogeneous Applications
- Inter-Operation with OpenMP
- Additional Resources
- Course Recap
- Knights Landing, the Next Manycore Architecture
- Where to Get More Information
- How to Obtain an Intel Xeon Phi Coprocessor
Так же планируется включить лабораторные работы, в которых шаг за шагом показываются этапы оптимизации кода на конкретных примерах. Список названий этих практических упражнений представлен ниже.
Названия лабораторных (на английском)- 2.1-native
- 2.2-explicit-offload
- 2.3-explicit-offload-persistence
- 2.4-explicit-offload-matrix
- 2.5-sharing-complex-objects
- 2.6-multiple-coprocessors
- 2.7-asynchronous-offload
- 2.8-MPI
- 2.9-openmp4.0
- 3.1-vectorization
- 3.2-OpenMP
- 3.3-Cilk-Plus
- 3.4-MPI
- 4.1-vtune
- 4.2-itac
- 4.3-serial-optimization
- 4.4-vectorization-data-structure
- 4.5-vectorization-compiler-hints
- 4.6-optimize-shared-mutexes
- 4.7-optimize-scheduling
- 4.8-insufficient-parallelism
- 4.9-affinity
- 4.a-tiling
- 4.b-Nbody
- 4.c-cache-oblivious-recursion
- 4.d-cache-loop-fusion
- 4.e-offload
- 4.f-MPI-load-balance
- 4.g-hybrid
- 4.h-MKL
Работа над записью и монтажом только началась. Поэтому очень хотелось бы узнать мнение Хабра по вопросам, представленным ниже. Для меня русский перевод одной только звуковой дорожки 10 минутного эпизода, а их будет 50-60 — это несколько часов работы. Так что хотелось бы знать заранее имеет ли моя затея ценность для посетителей Хабра. Так что любая конструктивная критика по содержанию/представлению или просто комментарий только приветствуется.