⇣ Содержание
Опрос
|
реклама
Самое интересное в новостях
Новосибирск – НГУ, СО РАН и Intel. Часть вторая
Новосибирск – НГУ, СО РАН и Intel. Часть первая. Новосибирский центр IntelПолюбовавшись суперкомпьютерными кластерами в ССКЦ, мы направились в новосибирский центр Intel. Сразу заметим, что физически офис Intel расположен не в Новосибирске, а в Академгородке. На наш взгляд, так это только плюс, тут все близко – и ССКЦ, и СО РАН, и НГУ. Да и в окружении вековых сосен думается и работается лучше, чем в шумном мегаполисе. В офисе Intel нам первым делом гостеприимно предложили по чашечке кофе и пригласили на презентацию. Компиляторы IntelПервым выступил Дмитрий Петунин, руководитель отдела тестирования компиляторов и разработки инструментов верификации программ Intel. Название должности звучит довольно длинно, и для далеких от программирования людей пугающе, но далее станет понятно, о чем идет речь. Современный компилятор – сложный программный продукт, являющийся своеобразной прослойкой между программистом и «железом», для которого он пишет программы. Конечно, можно попытаться программировать по старинке, прямо в машинных кодах, но вы изрядно утомитесь задолго до того, как закончите даже простенькую программу. Современные программисты больше оперируют объектами, их свойствами и методами, то есть языками высокого уровня, но непосредственно центральный процессор ни о чем таком не знает. Компилятор как раз и нужен для того, чтобы «перевести» написанную вами программу в машинные коды, понятные центральному процессору. Какие требования предъявляются к компиляторам? Первое – компилятор должен «переводить» без ошибок, второе – он должен генерировать максимально эффективный машинный код, чтобы наилучшим образом использовать все архитектурные возможности центрального процессора. От этих двух факторов зависит стабильность и скорость выполнения вашей программы. Собственно, этими задачами и занимается отдел Дмитрия Петунина. Языков программирования высокого уровня довольно много, и для каждого из них нужен компилятор. Если вы решите изобрести свой язык программирования, то, вероятно, и компилятор для него вам придется писать самим. Для «стандартных» языков программирования компиляторы давно написаны, но и они постоянно совершенствуются, поскольку архитектуры микропроцессоров постоянно улучшаются. В настоящее время компания Intel разрабатывает собственные компиляторы для языков С++ и Fortran. Такой акцент объясняется довольно просто – язык С++ используется для множества, если не сказать большинства, задач системного программирования, а Fortran – для научных расчетов. Чтобы облегчить программистам использование своих компиляторов, Intel предлагает пакет Compiler Pro, а также средства разработки для высокопроизводительных параллельных вычислений – Parallel Studio и Cluster Toolkit Compiler Edition. Не забыта и набирающая популярность платформа Intel Atom, для которой создан отдельный продукт – Atom Development Studio. Чем компиляторы Intel предпочтительнее остальных? Ответ очевиден – кто как не разработчик центрального процессора лучше всего разбирается в особенностях архитектуры ЦП и может использовать ее наиболее эффективно. Более того, кто еще сможет предложить соответствующий компилятор для новых процессоров одновременно с их появлением на рынке? Задача создания нового процессора и компилятора для него чем-то напоминает известный парадокс про курицу и яйцо. Если нет ЦП, как на нем запустить компилятор? И наоборот – если нет компилятора, как проверить, правильно ли выполняет программу процессор? Разумеется, эта задача имеет решение, и вот как это происходит на самом деле. Сначала создается проект нового процессора. С использованием имеющихся компиляторов создается симулятор нового ЦП. Затем пишется компилятор, который «обкатывается» сначала на симуляторе ЦП, а потом и первых инженерных образцах. Когда новые ЦП уже готовы «в железе», выполняется оптимизация нового компилятора, и к моменту выхода ЦП на рынок в виде готового продукта одновременно с ним выпускается новый компилятор. Все это напоминает, как Мюнхгаузен себя за волосы из болота вытаскивал, но данная схема успешно работает многие годы. Поэтому не приходится сомневаться в словах Дмитрия Петунина, утверждавшего, что компиляторы для процессоров 2013 года уже готовы. И пусть это пока компиляторы для симуляторов, работа над новыми поколениями ЦП Intel идет вовсю, а значит команде Дмитрия скучно точно не будет. Ведь мало создать пусть даже самый лучший компилятор сейчас, надо, чтобы он эффективно использовал всю мощь и нового оборудования, а с развитием микроэлектроники эта задача только усложняется. Одна из задач оптимизации компилятора состоит в том, чтобы научить его распараллеливать программы самостоятельно. Создание программ для параллельных вычислений и сейчас еще является в большей степени искусством, хотя в этом направлении сделано уже достаточно много, чтобы облегчить жизнь простым программистам. Поэтому дальнейшее наращивание числа ядер в центральных процессорах уже не составляет принципиальной сложности. Но с появлением гибридных процессоров, содержащих графический ускоритель, возникают новые проблемы эффективного использования всего потенциала архитектуры. Эта задача решается уже сейчас, на примере связки дискретного ЦП и видеоядра, причем, по словам Дмитрия Петунина, весьма успешно. Схема развития обычных ЦП, приведенная на слайде слева, показывает логичный переход от четырехъядерных к 8- и 16-ядерным процессорам. Умышленно это было сделано или нет, но на презентационном слайде некое графическое ядро обозначено как LRBni. Может быть это то, что мы сейчас называем Larrabee? Стоит ли верить логике слайда, что в Larrabee будет 16 «конвейеров», а не 80, о которых ходят слухи? Сложно сказать. В каждом из исполнительных модулей GPU компании AMD находится по пять вычислительных блоков, что и приводит к фантастическому числу конвейеров – 1600 у нового Radeon HD5870. Будет ли Intel придерживаться той же схемы или пойдет своим путем (что более вероятно), покажет время. Математическая библиотека IntelСледующую презентацию представил Александр Коботов, инженер по разработке программного обеспечения новосибирской группы программистов Intel. Математика в том или ином виде окружает нас повсюду, даже когда мы считаем сдачу в магазине. А уж в компьютерной технике без нее не обойтись совсем никак. Неважно, какое приложение запущено компьютере, но, так или иначе, ему приходится выполнять разнообразные расчеты, будь то спецэффекты в играх, биржевые графики или обработка изображений и сигналов. От того, насколько эффективно компьютер способен проводить вычисления, зависит скорость выполнения приложения, время реакции на действия пользователя, а также точность полученных результатов. Поэтому создаются специальные математические библиотеки, которые содержат оптимизированные для компьютерных расчетов алгоритмы вычисления функций, уравнений и т.д. Это значительно упрощает труд программистов и сильно экономит время как при написании программы, так и в процессе ее выполнения. Простейший пример – допустим, надо подсчитать факториал некоторого числа, скажем, 1000. То есть надо последовательно перемножить числа 1, 2, 3, и так вплоть до 1000. Что может сделать программист в этом случае? Например, создать цикл и посчитать. Также можно вспомнить формулу Стирлинга и вместо цикла использовать ее. А можно просто обратиться к уже реализованной функции в математической библиотеке и получить готовый ответ. Конечно, данный пример весьма примитивен, и легко решается «в лоб», ведь достаточно простой арифметики. Но что делать, если надо решить систему линейных уравнений или выполнить обработку сигналов с помощью преобразования Фурье? Обложиться справочниками по математике – хороший способ, и много нового узнаете, но долго. Как видите, оптимизированная математическая библиотека может кардинально ускорить выполнение расчетов – буквально в разы! Это кажется невероятным, но разработчикам Intel удалось добиться быстродействия на уровне 98% от теоретического максимума. На данный момент основная часть разработки ведется в Новосибирском офисе компании Intel, а разработкой математической библиотеки Intel занимаются опытные сотрудники с академическим прошлым в СО РАН. В работе над этой библиотекой также участвуют молодые специалисты и студенты-практиканты из вузов Новосибирска. Ну а качество подготовки молодых научных кадров в НГУ и СО РАН вполне позволяет добиться столь выдающихся результатов. Платформы с управляемым кодомОчередная презентация была посвящена платформам с управляемым кодом. О том, что в этом направлении делает Intel, слаженным дуэтом рассказали: Вячеслав Шакин и Даниил Соколов Аппаратно-независимая платформа Java в настоящее время используется в очень широком спектре устройств – от мобильных телефонов до серверных кластеров. Microsoft .Net и Silverlight также весьма популярны, как и Adobe flash, заполонивший интернет. Казалось бы, какое дело Intel до программистских «холиваров»? Все очень просто - в Intel считают, что на чем бы ни была написана ваша программа, но на процессорах Intel она должна выполняться максимально эффективно. Да и звание лидера IT-индустрии обязывает находиться в курсе всего происходящего, ибо если оно сейчас непосредственно вас не касается, то завтра все может измениться. Именно поэтому Intel участвует в разработке новых стандартов, а также поддерживает ПО с открытым кодом, например Apache Harmony. Посмотрите, как возросла производительность Java-приложений на платформе Intel Xeon, после соответствующих оптимизаций. Ну а этот слайд еще красноречивее. Вы, наверное, заметили фразу, что Java разрабатывают программисты Intel в Новосибирске, а выпускает ее Sun. Это так и есть, Опыт, который программисты получили за 12 лет сотрудничества с Sun Microsystems еще в составе компании UniPro, пригодился и Intel. На данном слайде также присутствует еще один примечательный момент – производительность платформы Itanium 2 под кодовым именем Tukwila, которая только планируется к выпуску в первом квартале 2010 года. Оказывается, процессоры Intel Itanium 2 Tukwila уже давно находятся в новосибирском центре Intel, поэтому нет и никаких проблем с получением реальных бенчмарков.
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
|