Алексея Тутубалин на HighLoad++ — «Используем современный процессор на 146%»

Небольшая сенсация на конференции разработчиков высоконагруженных систем HighLoad++ (http://www.highload.ru/) — удалось уговорить Алексея Тутубалина (да, да, того самого — http://www.lexa.ru/) сделать доклад о материалах собственных исследований последних лет.

Алексей — один из лучших в России специалистов по интернет-технологиям, разработке сложных сайтов и интернет-сервисов, высоким нагрузкам, большим объемам данных. Фактически легенда Рунета. Наибольшую известность Алексею принесли собственные  проекты Russian Internet Survey (http://www.lexa.ru/ru-survey/

) и веб-сервер «Русский Apache» (http://apache.lexa.ru/), под управлением которого работает больше половины всех сайтов Рунета. Сейчас Алексей Тутубалин продолжает свою исследовательскую деятельность в рамках проекта «Черный Квадрат» (http://www.rukv.ru/), где он анализирует развитие русского сегмента Интернета.

Алексей сделает доклад на HighLoad++ под кодовым названием «Используем современный процессор на 146%» про современное состояние параллельных вычислений. Приведем краткий конспект выступления:

+ Векторные операции (SIMD: MMX, SSE, AVX). SIMD расшифровывается как single instruction, multiple data — одиночный поток команд, множественный поток данных. Что умеет, типы данных, виды операций. Требования к программам и алгоритмам, выравнивание данных. Быстродействие формальное и реальное. Кто сделает SIMD-код?

+ Многоядерные процессоры, многопроцессорные конфигурации. Сложно думать параллельно, сложно отлаживать (невоспроизводимые ситуации), data races, расход ресурсов на синхронизацию, проблемы с процессорными кэшами если потоки работают с одними/близкими адресами в памяти. Типичное современное использование:
++ Несколько/много изолированных процессов
++ Несколько/много потоков (threads), обрабатывающих независимые запросы
++ Сложные многопоточные программы, сильно связанные внутри себя
++ Data-parallel программы: пилим (большие) данные на (независимые) куски и обрабатываем: map-Reduce (всех видов), сортировка, точки синхронизации/reduce понятны, не требуется синхронизация в случайный момент, да еще и по внешнему событию. Data races маловероятны. Программа выглядит последовательной, а вычислительно-интенсивные места используют все ядра/CPU.

+ Параллельные языки программирования:
++ ISPC: интересует CPU-only, двойная буферизация болезненна, нет желания таскать большой рантайм вне программы.
++ OpenCL:  планируется/возможен перенос на GPU, рантайм не пугает, двойная буферизация не пугает.

Удачи и до встречи на конференции!
http://www.highload.ru/

Алексея Тутубалин на HighLoad++ — «Используем современный процессор на 146%»

Добавить комментарий