- Артикул:00003237
- Автор: Линев А.В., Боголепов Д.К., Бастраков С.И.
- ISBN: 978-5-211-05962-7
- Обложка: Твердая обложка
- Издательство: Галея Принт (все книги издательства)
- Город: Москва
- Страниц: 160
- Формат: 60x84/16 (~143х205 мм)
- Год: 2010
- Вес: 245 г
Настоящий учебник направлен на представление обзора технологий программирования и эффективного использования различных типов параллельных архитектур, включая современные графические процессоры, ускорители ClearSpeed и процессоры Cell BE.
В данном учебнике излагаются основные вопросы использования ускорителей.
Дается обзор различных архитектурных решений и соответствующих средств разработки, а также исследуется эффективность данных решений на примере задачи моделирования динамики системы N точечных масс.
Особое внимание уделяется широко распространенному сегодня типу ускорителей - графическим процессорам, которые за последние семь лет претерпели самые существенные изменения и превратились в универсальные процессоры общего назначения.
Дается обзор существующих систем разработки для ГПУ и рассматриваются их достоинства и недостатки при решении различных задач. Подробно обсуждаются наиболее актуальные в настоящий момент инструменты: графические интерфейсы и шейдерные языки (на примере OpenGL и GLSL), NVIDIA CUDA и OpenCL.
Получаемый в результате изучения данного пособия набор знаний и умений является достаточным для того, чтобы читатель смог самостоятельно адаптировать и реализовать свой алгоритм для того или иного ускорителя, обеспечив эффективное решение задачи.
Ключевые слова: Параллельные вычисления, гетерогенные вычисления, многоядерные архитектуры, потоковая обработка, графические процессоры, процессоры Cell BE, ускорители ClearSpeed
Содержание
CONTENTS
Preface by Victor A. Sadovnichy
CHAPTER 1
1. Possible benefits of GPU computing
2. Development tools for GPU
2.1. Graphics APIs and shading languages.
2.2. Vendor-specific deve-lopment tools.
2.3. Third-party special-purpose tools.
2.4. OpenCL - the open standard for parallel programming of heterogeneous systems.
3. Shading languages for general-purpose computations
3.1. Basics of graphics processing pipeline.
3.2. Basics of general-purpose computations on graphics hardware.
3.3. Limitations of shader programs.
3.4. Dynamics modeling of the N-body system.
4. CUDA for general-purpose computations
4.1. Installing and configuring software.
4.2. CUDA programming model.
4.3. CUDAAPI.
4.4. Basics of computations using CUDA.
4.5. Performance analysis of the N-body problem.
5. OpenCL for general-purpose computations
5.1. OpenCL architecture.
5.2. Basics of computations using OpenCL.
5.3. Porting a program from CUDA to OpenCL.
5.4. Performance analysis of the N-body problem.
6. Conclusion
7. References
CHAPTER 2
1. Cell BE architecture overview
1.1. Processing elements.
1.2. Element Interconnect Bus (EIB).
1.3. Me-mory Interface Controller (MIC).
1.4. Cell Broadband Engine Interface (BEI).
1.5. PowerPC Processor Element.
1.6. Synergistic Processor Ele-ments.
2. Cell BE programming models
2.1. Function-Offload Model.
2.2. Device-Extension Model.
2.3. Compu-tation-Acceleration Model.
2.4. Streaming Model.
2.5. Pipeline Model.
2.6. Shared-Memory Multiprocessor Model.
2.7. Asymmetric-Thread Runtime Model.
3. Development and adaptation of software for Cell BE architecture
3.1. Sequential implementation for PPE.
3.2. Porting computation code to SPE.
3.3. Code vectorization for SPE.
3.4. Parallel implementation for multiple SPEs.
4. SPE code optimization
4.1. Local Storage.
4.2. DMA transfer.
4.3. Vectorization.
4.4. Register load and store.
4.5. Loops.
4.6. Flow control.
4.7. Multiply instructions.
4.8. Two instructions per cycle.
5. Performance analysis of the N-body problem
6. Conclusion
7. References
CHAPTER 3
1. ClearSpeed Advance X620
1.1. ClearSpeed Advance X620 specifications.
1.2. ClearSpeed CSX600 specifications.
1.3. Hardware installation.
1.4. Installing and configuring software.
2. Programming model
2.1. Execution model.
2.2. Memory hierarchy.
3. 3. The basic features of the C" language
3.1. Data types.
3.2. Mono and poly specifiers.
3.3. Pointer types.
3.4. Other structures of the С language.
3.5. Data transfers between mono and poly memory.
3.6. Data caching and semaphores for synchronization.
3.7. Reduction functions.
4. Building and running C" programs
4.1. Compiling program.
4.2. Preparing hardware for running an executable file.
4.3. Running an executable file.
5. Interaction between accelerator and host
6. Performance analysis of the N-body problem
7. Conclusion
8. References