SlideShare a Scribd company logo
Часть II: Обзор CUDA API
Александр Межов
Ассистент кафедры Информатики
as.mezhov@gmail.com
28 октября 2011
Кафедра Информатики
ОСОБЕННОСТИ CUDA APIs
Виды CUDA APIs и возможности CUDA-устройств
Виды CUDA APIs
• CUDA Driver API
– Ручная инициализация контекста GPU
– Отсутствуют CUDA-расширения для C++
– Код CPU может компилироваться без nvcc
• CUDA Runtime API
– Автоматическая инициализация контекста GPU
– Наличие CUDA-расширений для C++
Выбор CUDA API
• CUDA Driver API
– Больше гибкости ( + )
– Сложность кода ( – )
• CUDA Runtime API
– Меньше гибкости ( – )
– Простота кода ( + )
Совместимость CUDA API
• Имеется обратная совместимость версий
CUDA
v1.0
CUDA
v1.1
CUDA
v2.0
Application Application Application
Вычислительные возможности GPU
• Capability – это версия архитектуры CUDA
GPU, которая указывает на его
вычислительные возможности и
особенности
cudaGetDeviceProperties()
ОЦЕНКА ПРОИЗВОДИТЕЛЬНОСТИ
Способы оценки эффективности приложений CUDA
Время выполнения
• Общее время вычислений на GPU
• Время выполнения участка кода GPU
Таймеры CPU
• Таймеры CPU позволяют замерять общее
время выполнения вычислений на GPU
cudaThreadSynchronize()
Таймеры CUDA
• Таймеры CUDA
позволяют замерять
время выполнения
участка кода GPU
Скорость передачи данных
• Теоретическая пропускная способность
FDDRAM * (RDDRAM/8) * sizeof(float),
где FDDRAM – частота, RDDRAM – разрядность шины
• Эффективная пропускная способность
(BR+ BW) / time,
где BR и BW – объем прочитанной/записанной информации
• Реальная пропускная способность
ОПТИМИЗАЦИЯ РАБОТЫ С
ПАМЯТЬЮ
Способы оптимизации работы с памятью CUDA GPU
Архитектура CUDA GPU
L2
Texture Processing
Cluster
Texture
SM
SM
. . .
Device RAM
Streaming Multiprocessor
Instructions Constants
Shared Memory
SP
SP
SP
SP
SP
SP
SP
SP
SFU SFU
Registers
Типы памяти устройства
• Streaming Multiprocessor
– Регистровая память
– Разделяемая память
– Память констант
• Texture Processing Cluster
– Память текстур
• DDRAM
– Локальная память
– Глобальная память
Передача данных Host/Device
• Является дорогостоящей операцией
• Возможна асинхронная передача
cudaMemcpy()
cudaMemcpyAsync()
Асинхронная передача данных
• Копирование данных и выполнение ядра
можно осуществлять параллельно
Возможная оптимизация
Копирование
Выполнение
Копирование
Выполнение
• Синхронная передача данных в GPU
• Асинхронная передача данных в GPU
Нулевое копирование (Zero Copy)
• Прямое обращение к памяти Host’а
– Встроенные видеокарты
• Использование кэша CPU
Объединенное чтение DDRAM
• Выравнивание исходных данных по
границе слова
• Потоки warp’а должны осуществлять
одновременное чтение DDRAM
Разделяемая память и конфликты
• Общая для всех потоков блока
• Распределяется между блоками
• Разбивается на банки (32-битные слова)
Регистровое давление
• Регистры жестко распределяются между
потоками мультипроцессора
• При большом количестве потоков
возникает конфликт доступа к регистрам
ВЫБОР ОПТИМАЛЬНОЙ
ТОПОЛОГИИ
Методы оценки топологии вычислений CUDA
Степень покрытия
• Степень покрытия мультипроцессора – это
отношение числа активных warp'ов к
максимально возможному числу активных
warp'ов
– По количеству используемых регистров
• С учетом топологии вычислений
• Без учета топологии вычислений
– По размеру используемой разделяемой памяти
Определение степени покрытия
• CUDA GPU:
– 8192 регистра
– 768 потоков на мультипроцессор
• Топология:
– 12 регистров на ядро
– 128 потоков в блоке
Tmax = 8192 регистров / 12 регистров = 682 потока
Treal = int(682 / 128) * 128 = 640 потоков
С = Тreal / Tmax = 83%
ОПТИМИЗАЦИЯ КОДА
Оптимизация инструкций CUDA
Регистровая зависимость
• Инструкция использует регистр, значение
которого было получено при выполнении
предыдущей инструкции
register = instruction1();
instruction2(register);
Float vs Double
• Арифметические операции с float-числами
осуществляются быстрей, чем с double-
числами
– Рекомендуется использовать суффикс «f» при
объявлении числовых констант, например, 3.14f
Деление чисел
• При делении чисел на степень двойки
рекомендуется использовать оператор
сдвига
X / N  X >> log2(N)
X % N  X & (N-1)
Степень числа
• Для известных целых значений степеней
рекомендуется использовать явное
умножение вместо вызова pow()
pow(X, 2)  X * X
pow(X, 3)  X * X * X
Часто используемые функции
• Обратный квадратный корень
– rsqrtf() / rsqrt()
• Прочие арифметические операции
– expf2() / exp2() – экспонента во 2-й степени
– expf10() / exp10() – экспонента в 10-й степени
– cbrtf() / cart() – экспонента в степени 1/3
– rcbrtf() / rebut() – экспонента в степени -1/3
Точность vs Скорость
• Аппаратные аналоги функций
__sinf() / sinf()
__cosf() / cosf()
__expf() / expf()
• Совмещенные функции
sincosf() / sincos()
УПРАВЛЕНИЕ ПОТОКОМ КОМАНД
Общие рекомендации по написанию кода
Операторы ветвления
• Инструкции управления потоком команд
(if, switch, for, while, do-while) отрицательно
сказываются на производительности
– В идеале все потоки warp'а должны идти по
одному пути, иначе увеличивается количество
выполняемых инструкций и возможно
последовательное выполнение
Предикативная запись
ОТЛАДКА И ПРОФИЛИРОВАНИЕ
Отладка и профилирование приложений CUDA
Существующие утилиты
• Linux
– CUDA-GDB
– http://developer.nvidia.com/cuda-gdb
• Windows Vista & Windows 7
– NVIDIA Parallel Nsight
– http://developer.nvidia.com/nvidia-parallel-nsight
Профилирование c Parallel Nsight
АППАРАТНЫЕ ОСОБЕННОСТИ GPU
Краткий обзор архитектурных особенностей GPU
Причины рассогласования
• Основные причины рассогласования
результатов вычислений на GPU и CPU
– Усечение double чисел до float при отсутствии
аппаратной поддержки double
– Неассоциативность арифметических операций с
дробными числами
– Небольшие отклонения от стандарта IEEE 754
– Особенности архитектуры процессоров x86
Литература
• NVIDIA Developer Zone
– http://developer.nvidia.com/cuda
• NVIDIA Parallel Nsight
– http://developer.nvidia.com/cuda-gdb
• CUDA C Best Practices Guide
– http://developer.download.nvidia.com/compute/cuda
/4_0/toolkit/docs/CUDA_C_Best_Practices_Guide.pdf
Спасибо за внимание
Александр Межов
as.mezhov@gmail.com
28 октября 2011
Кафедра Информатики
Часть III: Решения для работы с GPU
Александр Межов
Ассистент кафедры Информатики
as.mezhov@gmail.com
Кафедра Информатики

More Related Content

What's hot

Лекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusЛекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk Plus
Mikhail Kurnosov
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
Mikhail Kurnosov
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Mikhail Kurnosov
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
Mikhail Kurnosov
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Alexey Paznikov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Mikhail Kurnosov
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...Mikhail Kurnosov
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSU
larhat
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Mikhail Kurnosov
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Mikhail Kurnosov
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Mikhail Kurnosov
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
a15464321646213
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Ontico
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Ontico
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Mikhail Kurnosov
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012Alex Tutubalin
 

What's hot (20)

Лекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusЛекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk Plus
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSU
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012
 

Similar to CUDA Best Practices (2-3)

Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обучения
Andrew Babiy
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Alex Tutubalin
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
a15464321646213
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
Sergey Staroletov
 
Gpgpu
GpgpuGpgpu
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
Vasil Remeniuk
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
a15464321646213
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
MATLAB
 
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктурыГидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
InterSystems
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
MATLAB
 
Lecture1: Introduction to Parallel Computing
Lecture1: Introduction to  Parallel ComputingLecture1: Introduction to  Parallel Computing
Lecture1: Introduction to Parallel Computing
Andrii Rodionov
 
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
VThn18
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
FlyElephant
 
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06Computer Science Club
 
Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Alexey Rusnak
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ontico
 
842302.pptx
842302.pptx842302.pptx
842302.pptx
ssuser1f4025
 
"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA
Oleg Nazarevych
 

Similar to CUDA Best Practices (2-3) (20)

Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обучения
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
Gpgpu
GpgpuGpgpu
Gpgpu
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
 
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктурыГидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
 
введение в Gpu
введение в Gpuвведение в Gpu
введение в Gpu
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
 
Lecture1: Introduction to Parallel Computing
Lecture1: Introduction to  Parallel ComputingLecture1: Introduction to  Parallel Computing
Lecture1: Introduction to Parallel Computing
 
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
 
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06
 
Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
 
842302.pptx
842302.pptx842302.pptx
842302.pptx
 
"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA
 

CUDA Best Practices (2-3)