Оригинал материала: https://3dnews.ru./813345

Intel как софтверная компания: интервью с разработчиком

Наш собеседник из Intel Валерий Черепенников родился в Горьком (ныне Нижний Новгород), где закончил с отличием Нижегородский государственный университет им. Н. И. Лобачевского по специальности «радиофизика и электроника» (радиофизический факультет). В Intel Валерий пришел в 2000 году, сразу после окончания университета. За время работы в корпорации он участвовал в проектах, связанных с «машинным зрением», компьютерной обработкой изображения и звука. Особый интерес у Валерия вызывает разработка процессорных архитектур, в том числе систем-на-чипе, а также вопросы оптимизации производительности. С 2005 года он возглавляет коллектив разработчиков по созданию решений на основе платформ Intel — сначала суперкомпьютеров, а затем мобильных клиентских систем. В свободное время Валерий занимается большим теннисом и футболом.

#Многоядерные системы — основной приоритет

3DNews: Какие направления разработки ПО Intel считает для себя наиболее важными?

Валерий Черепенников: Я попытаюсь осветить несколько тем. Во-первых, приоритетными являются все вещи, связанные с многоядерностью и программированием для MIC (архитектура, лежащая в основе ускорителя высокопараллельных вычислений Xeon Phi. — прим. автора). Перенести программу, в которой есть считаное число потоков, на архитектуру, которая позволяет использовать тысячу, — нетривиальная задача.

В классической архитектуре кластеров, когда есть некое количество процессоров Xeon, объединенных в сетку по InifiniBand, она решается путем разработки MPI (Message Passing Interface. — прим. ред.), но и тут не все просто. Поскольку узлов тысячи и тысячи, возникает проблема отказоустойчивости системы. Среднее время расчета задачи оказывается больше, чем среднее время жизни системы.

Допустим, чтобы выполнить вычислительную задачу, требуется работа тысячи узлов в течение двух часов. За это время один из них откажет с вероятностью, близкой к единице. Значит, весь расчет можно будет выбросить в корзину. Причины могут быть различные. Самая простая — перегрев. Иногда «сносит башню» каким-либо драйверам. Поэтому применяется механизм чекпоинт-рестартов. Состояние задачи с некоторым интервалом сбрасывается в swap, откуда его можно поднять и восстановить в случае отказа.

Еще тяжелее программирование на MIC, в котором ядер гораздо больше, чем в архитектуре Xeon. Возникают проблемы другого типа. Классический подход на основе MPI не работает потому, что мы сталкиваемся с таким ограничением, как количество памяти, выделенное под один процесс. Допустим, у сервера на Xeon есть 16 ядер и 128 Гбайт оперативки. Мы можем при 16 потоках выделить по 8 Гбайт на поток, чего обычно вполне достаточно. Если мы говорим о MIC, то там в одном ядре порядка трех сотен потоков (72х4), а памяти очень немного. Приходится делать извороты в виде OpenMP (API для программирования под многопоточные системы. — прим. автора). В результате вся архитектура ПО должна быть изрядно перелопачена. Кстати, и NVIDIA находится в тех же условиях.

Другая проблема MIC: есть задачи, называемые embarrassingly parallel, в которых вычислительные потоки никак не связаны друг с другом. Когда начинается взаимодействие, все уже намного сложнее.

Кстати, немного о будущем MIC. Следующее поколение будет существенно отличаться от того, что есть сейчас. В Knights Corner мы используем архитектуру Pentium, ядро 54C, которая предусматривает последовательное исполнение инструкций (In-Order). Следующее поколение будет Out-of-Order, а также самозагружающимся. Как следствие, правила игры существенно поменяются. Дополнительный интерес работе придает то, что надо оптимизировать приложение под существующую архитектуру, но так, чтобы оно работало и на следующей.

Над этими задачами трудится много людей в Intel. В частности, значительная часть из 700 человек, работающих в России. Это создание инструментов программирования: компиляторов, API, OpenMP, отладчиков, профилировщиков и так далее.

3DNews: Нас всегда интересовало то, что было до MIC, — проект Larrabee. Эти планы окончательно легли под сукно или еще сохранились какие-то перспективы?

Валерий Черепенников: Как известно, что бы ни делали русские, всегда получается АК-47. А что бы ни делала Intel, получается процессор. Larrabee изначально позиционировался как графический чип, но мы в результате сделали некий акселератор высокопроизводительных вычислений. Ветка MIC пошла по этой дороге, в следующих поколениях эта штука станет самозагружаемой. В плане графики Intel делает ставку на те ядра, которые интегрируются в CPU (тут интервью надолго переходит в монолог на разные темы. — прим. ред.).

#Алгоритмы: из софта — в железо

Мы знали, что Intel из всего ПО делает только компиляторы, математические библиотеки — все, связанное с профилированием и отладкой софта. Сейчас программные продукты Intel становятся более разнообразными, близкими к массовому рынку и конечному пользователю. Возьмем Perceptual Computing SDK — набор алгоритмов для человеко-машинного взаимодействия. На Mobile World Congress мы представляем Media SDK. Третье из наиболее интересных направлений связано с HTML5.

Раньше в таких задачах, как обработка мультимедийных данных, было мало железа и много софта. Алгоритмы медиакодеков программировались при помощи набора инструкций CPU. Сейчас ситуация радикально изменилась. Происходит быстрое развитие такой темы, как System-on-Chip и ASIC (Application-Specific Integrated Circuit). Наша целевая аудитория в основном связана с мобильным сегментом. Когда появляется некий фактически общепринятый стандарт в индустрии, относящийся к алгоритмике, мы пытаемся вложить его в железо, в результате облегчая жизнь разработчикам программ и ускоряя исполнение последних. Железные решения обычно работают быстрее, чем софтверные.

В SoC отдельный блок обрабатывает видео. Наверху остается только интерфейс, которым в нашем случае является Media SDK или Perceptual Computing SDK, дающий программисту доступ к возможностям железа. Наша цель — расширить список команд разработчиков, которые играют вместе с нами. Перенос функций в железо позволяет программировать на более высоком уровне, тем самым привлекая более широкие слои специалистов, которые в противном случае не стали бы тратить усилия, чтобы заточить свои программы под существующее железо.

#Ленивые программисты

Параллельно происходит другой процесс: программисты становятся более ленивыми. Человек раньше говорил: «Ассемблер — это так сложно. Нужно учить инструкции, конвенции». Теперь ему принесли готовую библиотеку, где нужно дернуть одну функцию. А ответ все тот же: «Да ну, в этом нужно разбираться, это такой низкий уровень». То есть понятие низкого уровня движется вверх.

У нас есть подразделение поддержки разработчиков ПО, программа поддержки стартапов через Сколково. Нечто вроде конкурсов Web Ready. И однажды была такая история. Мы приходим в контору, называть которую я не буду, и перед нами сидят два главных лица компании — CEO (управляющий директор) и CTO (технический директор). CEO говорит:

– А вы, собственно, кто?

– Знаете, мы Intel.

– А что вы делаете?

– Ну вот процессоры, SoC, обвязка. Вы же понимаете, что весь код преобразуется в набор ассемблерных инструкций, который исполняется на этой железяке.

Тут происходит сцена. CEO поворачивается к CTO:

– А я думал, что «Винда» как-то сама все разруливает. Ты вообще об этом слышал?

– Да, я что-то об этом слышал, — отвечает CTO после некоторого размышления.

#Perceptual Computing — что это такое

Направление, которое очень активно развивается в последние годы, касается взаимодействия между человеком и машиной. В глазах широкой публики Intel и такие инициативы никак не связаны. Но на самом деле мы движемся от компании, которая только продает оборудование, в сторону готовых решений. К примеру, на середину 2014 года планируется выпуск камер для распознавания жестов — Senz3D.

Мы также активно наблюдаем за индустрией и сделали много приобретений в этой области. Как правило, это небольшие компании, которые поглощаются ради интеллектуальной собственности и рабочей силы.

В поиске ресурсов для этих направлений Intel смотрит как наружу, так и внутрь себя. В компании, где работают 100 тысяч человек, подчас сложно понять, кто чем занимается и на какой стадии развития стоит. Я помню массу случаев, когда люди обнаруживали, что трудятся над одной и той же задачей (допустим, медиакодеками), но ранее вообще не знали друг о друге.

В Нижнем Новгороде есть близкое мне подразделение, которое занимается Perceptual Computing SDK — это некий набор алгоритмов для распознавания речи, жестов, в том числе при помощи камер. Делаются попытки использовать речь внутри командных интерфейсов. Есть несколько ребят и в Москве, которые занимаются этой темой. Мы пытаемся понять, какие алгоритмы работают в этой области. Более важно — каким образом они лягут в следующее поколение железа.

#Облако, большие данные

Сейчас все больше интересного происходит в облачных технологиях. Само понятие облака расширяется. Одной из наиболее модных тем является Internet of Things (концепция, предусматривающая идентификацию и управление физическими объектами через Интернет. — прим. автора). В Intel мы анонсируем различного рода устройства и программы, связанные с этим.

В связи с облаком важной является тема больших данных и аналитики. Количество данных растет на порядки при не столь уж большом увеличении базы устройств. Вопрос: как обрабатывать данные и извлекать из них полезную информацию? Возьмем алгоритмы, связанные с бизнес-аналитикой. Первичную аналитику (edge analytics) можно производить на самом устройстве (к примеру, смартфоне). Потом данные, которые поступают со всех телефонов, должны консолидироваться на уровне сервера базовой станции. Финальная обработка (backend-аналитика) — это дата-центр а-ля Google, «Яндекс». Задача — внедрить это решение повсюду: от айфона вплоть до backend-сервера.

Другой интересный факт. В расчетных задачах анализ больших данных в реальном времени порой позволяет делать выводы о том, что в противном случае не является очевидным. В классической науке ты ожидаешь подтверждения какой-либо закономерности. Здесь же задача в том, чтобы анализ больших данных превратить в самостоятельный инструмент новых научных открытий. Пример — заряженные частицы влаги в верхних слоях ионосферы. Раньше они исключались из вычислений в метеорологии, так как для этого просто не хватало мощностей. А потом выяснилось, что интегральное направление движения этих частиц порождает тайфуны над атлантическим побережьем США.

#Информационная безопасность

Кстати, если раньше у человека был, допустим, паспорт, права, военный билет, справка об инвалидности, то сейчас все персональные данные зашиты в телефон. С одной стороны хорошо, что все это консолидировано. С другой — потеря мобильного телефона означает, что ты можешь смело идти топиться. Естественно, что защита персональных данных и информационная безопасность вообще — это еще одна интересная область, в которую мы вкладываемся.

Здесь имеет место движение в ту же сторону, что и в области Perceptual Computing. Мы знаем, какие алгоритмы используются для защиты информации, но поскольку мы являемся производителем чипов, то многие из них можем существенно оптимизировать, добавив функции в железо.

MacAfee в Intel всегда была обособленной организацией. Это так называемая fully owned subsidiary. У них была собственная оргструктура, собственная бухгалтерия, в Intel наверху видели только финальное сальдо. У них даже email-адреса оставались свои. Сейчас работа между MacAfee и Intel стала более тесной, внутри последней образована Internet Security Group. Специальная команда занимается тем, чтобы включить алгоритмы, которые разрабатываются на стороне MacAfee, в железки, создающиеся в материнской фирме Intel. В этом направлении открываются большие перспективы.

#Intel адаптируется к новым правилам игры

Мы живем во время постоянно ускоряющихся производственных циклов. Раньше, когда выпускали какой-нибудь процессор, команда разработчиков собиралась лет за пять до этого момента. Через год-полтора заканчивался pathfinding, создавались фокус-группы. Потом появлялись EAS (External Architecture Specifications), которые сейчас, к счастью, стали публиковать открыто. Далее шла разработка на уровне RTL (Runtime Libraries). В последние годы приходили люди с паяльником и говорили: «Творцы, отойдите, мы сейчас будем выкладывать все это на интегральную схему». На этом этапе можно было делать только минимальные изменения, которые стоили большой крови. Я сам работал в области, связанной с дизайном архитектуры.

Сейчас подход становится более системным. Если у тебя есть уникальное решение, то ты заинтересован в том, чтобы выбросить его на рынок, опередив всех. Возможна ситуация, описываемая как progress over perfection: не имея идеально проработанного устройства, ты первым приходишь на рынок и собираешь с него все сливки. В сферах, о которых я говорил (безопасность, Perceptual Computing, даже Multimedia), нужно быстро ухватить что-то и вложить в железо. Производственные циклы сокращаются вплоть до полугода, если речь идет, к примеру, о телефонах.

Intel бывает непросто в этом плане. Мы все привыкли к достаточно протяженной разработке и пока только учимся работать по-другому. И получается неплохо, коль скоро мы уже можем себя назвать игроком на рынке сотовых телефонов и «таблеток». Для этого требуется трансформация внутри компании. Технологические задачи идут рука об руку с организационными. В общем, в веселое время живем.

#Узкое место — человеческий мозг

3DNews: Если проложить перспективы от Perceptual Computing, то следует ожидать усиления интереса к психологическим исследованиям в области восприятия и переработки человеком информации в целом. Обозначен ли в Intel этот интерес? И независимо от последнего, какова, по-вашему, роль психологической науки в конвергенции с IT-индустрией?

Валерий Черепенников: У нас есть достаточно большое подразделение Intel Labs, которое занимается подобного рода исследованиями. Но я расскажу о том, что сам наблюдаю «у станка». Вот тема для отдельной диссертации в области психологии: информационный поток двадцать лет назад и сейчас. Объем информации, падающей на человека, возрастает в сотни раз. Объем информации, который способен обработать человек, также увеличивается, но это происходит медленно и за счет того, что в программировании называется не fix, а workaround. Людям требуется жесткая приоритизация. Мне в день приходит порядка 200 писем. Из них я 50 могу посмотреть и 20 прочитать. Когда я бываю в Штатах, этот объем информации возрастает в 2,5 раза. Но для меня что 200, что 500, что 1000 писем — по ту сторону добра и зла. И ты в какой-то момент заставляешь себя: это я читать буду, а это не буду.

У нас каждый год проходит процедура, которая называется FOCAL. По сути, это годовая переаттестация сотрудников, от которой зависит повышение зарплат, выдача новых орденов и звездочек и так далее. В рамках этой процедуры ты заполняешь лист self-assessment (или твой менеджер этим занимается). И в нем есть обязательное поле — направления развития. Я себе из года в год пишу одну вещь: хочу развивать навыки обработки информации в сжатое время. В этом можно совершенствоваться бесконечно.

Возможная задача — переложить на компьютер рутинную, никчемную работу. Среди всех этих писем есть такие, в которых люди требуют от тебя какого-либо решения. А часть просто доносит потенциально полезную информацию. Хорошим тоном будет ответить на такое письмо: «Спасибо, родной, что не забыл меня». Спинномозговая работа, но даже на нее времени не хватает. Я хотел бы, чтобы у меня для этого был автоответчик.

Другая важная вещь — степень твоего эмоционального вовлечения. Ты запоминаешь те факты, которые тебя цепляют. Значит, первое, что должен хороший работник, — это любить свою работу. Тогда он может абсорбировать много информации. А если ты работаешь от забора до обеда, информация усваивается гораздо хуже.

Кроме того, в связи с нарастанием потока информации поведение людей становится гораздо более оппортунистичным. Раньше ценилось стратегическое планирование. Теперь мелкой тактики становится все больше и больше. Ты видишь много блестящих пуговиц вокруг и пытаешься отреагировать на них. В какой-то момент в мозгу щелкает: здесь возможность, а здесь решение, и между ними появляется связь.



Оригинал материала: https://3dnews.ru./813345