Pull to refresh
33
Karma
0
Rating

Новые «плюшки» компилятора – безопасней, быстрее, совершеннее

Intel corporate blog Programming *C++ *Fortran *

Как говорилось во всеми нами любимом фильме: «Налетай, торопись, покупай живопись». Последняя, конечно, тут ни при чем, а вот «налетать» на новую Бета версию компилятора уже пора. Сегодня я расскажу о том, что нового появилось в пакете Intel Parallel Studio XE 2018 Beta, и в частности, в компиляторной её составляющей. А там действительно много что добавилось, ведь стандарты не стоят на месте — C++14, C++17, Fortran 2008, 2015, OpenMP 4.5 и 5.0, а компилятор должен не только их поддерживать, но и генерировать совершенный, производительный и безопасный код. Кроме этого, новые наборы инструкций AVX512, позволяющие «снимать сливки» с последних процессоров Skylake и KNL, всё больше входят в арсенал современных компиляторов. Но а самое вкусное — новые ключи, которые позволяют получить ещё больше производительности «не напрягаясь». Итак, поехали!
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Views 8.6K
Comments 20

Неинициализированные переменные: ищем ошибки

Intel corporate blog Programming *Fortran *

Большое количество научных исследований используют код, написанный на языке Фортран. И, к великому сожалению, «научные» приложения тоже не застрахованы от банальных ошибок, таких как неинициализированные переменные. Стоит ли говорить, к чему могут приводить подобные вычисления? Иногда эффект от таких ошибок может довести до «серьёзных прорывов» в науке, или стать причиной действительно больших проблем – кто знает где полученные результаты могут быть использованы (но, мы догадываемся где)? Хотелось бы привести ряд простых и эффективных методов, которые позволят проверить существующий код на Фортране с помощью компилятора Intel и избежать подобных неприятностей.
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Views 7.4K
Comments 2

Прогресс не стоит на месте: OpenMP 4.5

Intel corporate blog Programming *C++ *Concurrent computing *


Всё течет, всё меняется, и OpenMP продолжает активно развиваться. Почти три года назад стандарт стал поддерживать не только параллелизм по задачам, но и по данным (векторизацию), про что я подробно писал. Самое время посмотреть, что появилось в последней версии, выпущенной в ноябре 2015, и что уже поддерживается на данный момент в компиляторах от Intel. Ну что, приступим!
Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Views 9.3K
Comments 2

Intel® Parallel Studio XE 2017: «Python к нам приходит» и другие новинки

Intel corporate blog Programming *Concurrent computing *

На первой неделе сентября этого года вышла в свет новая версия продукта Intel Parallel Studio XE 2017. Давайте разбираться, что интересного появилось в ней.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 13K
Comments 11

«Фортран – живее всех живых» или «Что нового у дедушки ifort»

Intel corporate blog Programming *Compilers *Fortran *

Как вы уже знаете, недавно вышла новая Intel Parallel Studio XE 2016, а с ней, как и полагается, новые версии всех тулов, в том числе, и Фортрановского компилятора. Он всё ещё «жив курилка», активно развивается, при это весьма востребован и используется множеством разработчиком, особенно в HPC и академической среде. Новая версия, как всегда, делает жизнь этих разработчиков чуточку легче, поддерживая новые стандарты и давая больше возможностей. Давайте посмотрим, что появилось в версии 16.0.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Views 16K
Comments 0

Много лицензий, хороших и разных

Intel corporate blog Website development *Programming *
image
Copyright CartoonStock

В своё время я писал про то, какие типы лицензий есть у Intel и как всё это дело работает. Тот пост крайне рекомендуем к прочтению, потому что принцип лицензирования остался неизменным. Но прошло достаточное количество времени и некоторые моменты серьёзно изменились. Давайте разберёмся в них.
Читать дальше →
Total votes 16: ↑13 and ↓3 +10
Views 13K
Comments 0

Intel Parallel Studio XE 2016: новые возможности компилятора C/C++

Intel corporate blog Programming *C++ *Compilers *

На прошлой неделе вышла новая версия компилятора С/С++ от Intel — 16.0 aka Parallel Studio XE Composer Edition for C++. Существенно расширилась поддержка новых стандартов (C11, C++14, OpenMP 4.1), возможности по работе с Xeon Phi, вышли новые версии библиотек и ещё много всего «вкусного». Давайте более подробно посмотрим на то, что появилось в последнем релизе. Поехали!
Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 15K
Comments 11

Новая бесплатная библиотека для аналитики данных Intel® DAAL

Intel corporate blog Data Mining *Big Data *Machine learning *

Сегодня вышел в свет первый официальный релиз новой библиотеки Intel для аналитики данных — Intel Data Analytics Acceleration Library. Библиотека доступна как в составе пакетов Parallel Studio XE, так и как независимый продукт с коммерческой и бесплатной (community) лицензией. Что это за зверь и зачем она нужна? Давайте разбираться.
Читать дальше →
Total votes 26: ↑18 and ↓8 +10
Views 17K
Comments 14

Оптимизация циклов: нужны блоки

Intel corporate blog Programming *C++ *Compilers *Fortran *

Среди большого количества цикловых оптимизаций, одной из наиболее эффективных является техника разделения цикла на блоки (loop blocking). Суть её заключается в изменении итерационного пространства с целью более оптимальной работы с памятью, то есть уменьшения промахов кэша. Для этих целей в последней версии компилятора появилась специальная директива, позволяющая контролировать эту оптимизацию. Но обо всём по порядку.
Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Views 14K
Comments 2

Когда размер имеет значение

Intel corporate blog Programming *C++ *Compilers *


Иногда встречаются задачи, для которых уменьшение размера приложения, а точнее, правильный баланс между размером и производительностью, является даже более приоритетным, чем скорость его выполнения. Такого рода проблемы существуют, в частности, при разработке для встраиваемых (embedded) систем. Для них приложения «затачиваются» под конкретный тип процессора с очень ограниченным размером памяти, а значит размер нашего приложения будет напрямую влиять на стоимость конечного продукта. Кроме того, можно добавить больше функциональности и улучшить качество самого кода.

Компиляторы Intel обычно отдают предпочтение производительности и слабо заботятся о размере получаемого на выходе приложения. По умолчанию, фокус на максимальную скорость. Задача разработчика заключается в умении найти правильный баланс между скоростью выполнения приложения и используемыми оптимизациями компилятора, и его размером. В компиляторе Intel C/C++ имеется целый ряд возможностей, позволяющий контролировать этот баланс и делать размер приложения более приоритетным, чем его производительность. Давайте рассмотрим эти возможности.
Читать дальше →
Total votes 28: ↑25 and ↓3 +22
Views 16K
Comments 7

«Ра-а-авняйсь, смирно!». Выравниваем данные

Intel corporate blog Programming *C++ *Compilers *Fortran *


В современных компиляторах задача векторизации циклов является очень важной и нужной. В большинстве своем, при успешной векторизации производительность приложения может быть существенно увеличена. Способов добиться этого достаточно много, а тонкостей, связанных именно с получением ожидаемого «ускорения» нашего приложения – ещё больше.

Сегодня мы поговорим о выравнивании данных, его влиянии на производительность и векторизацию и работу с ним в компиляторе, в частности. Очень подробно само понятие дается в этой статье, как и множество других нюансов. Но нас интересует влияние выравнивания при векторизации. Так вот, если вы прочитали статью или просто знаете, как происходит работа с памятью, то известие о том, что данные считываются блоками вас не удивит.
Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Views 18K
Comments 11

Сказ о том, как «цифирь» не сошлась

Intel corporate blog Programming *Compilers *Fortran *


Некоторое время назад я писал про то, как получать воспроизводимые результаты и какие сложности с этим связаны. Также подробно рассказал про модели, позволяющие контролировать работу с числами с плавающей точкой в компиляторе и отдельно уточнил, что, если мы используем какие-либо библиотеки или стандарты, то должны позаботится, чтобы нужные флаги были указаны и для них. И вот совсем недавно я натолкнулся на интересную проблемку, связанную именно с воспроизводимостью результатов при работе с OpenMP.

Что такое воспроизводимость? Да всё просто – мы хотим получать одну и ту же «хорошую цифирь» от запуска к запуску, потому что для нас это важно. Это критично во многих областях, где сейчас активно используются параллельные вычисления.

Итак, как вы помните, для машинных вычислений существенную роль играет порядок суммирования, и, если у нас имеются циклы, распараллеленные с помощью любой технологии, то неизбежно возникнет проблема воспроизводимости результатов, потому что никто не знает в каком порядке будет проводиться суммирование, и на сколько «кусков» будет разбит наш исходный цикл. В частности это проявляется при использовании OpenMP в редукциях.
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views 17K
Comments 22

Оптимизируем шаг за шагом с компилятором Intel C++

Intel corporate blog Website development *Programming *C++ *Compilers *


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

Итак, весь тернистый путь компиляции и оптимизации нашего приложения можно разбить на 7 шагов. Пошагали!
Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Views 24K
Comments 3

Fortran 2003: учим Фортран и С дружить

Intel corporate blog Programming *C++ *Fortran *

На языке Фортран написано огромное количество кода, отлаженного и работающего многие годы. Я не собираюсь поднимать вопрос «что лучше — Фортран или С?». У каждого языка есть свои сильные и слабые стороны. Но, учитывая большое распространение языка С, всё более популярными в определенных кругах становятся случаи «гибридных» приложений, когда часть кода пишется (скорее, уже написана) на языке Фортран, а другая – на С. Вот только у этих языков есть определенная специфика, про которую я частично уже говорил, и чтобы написанное нами приложение работало корректно, нужно учитывать много нюансов. Различия в типах данных, соглашениях о вызове (calling convention), именах (naming convention) делают задачу создания mixed language приложения далеко нетривиальной. Хорошо, что в стандарте Fortran 2003 появился целый набор средств, специально разработанный для решения задачи интероперабельности C и Фортрана. Кстати, не помню других языков, которые бы стандартизировали подобную работу — ещё один «плюсик» Фортрану за протянутую «руку дружбы».
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Views 17K
Comments 4

«Нежданчики» языка Фортран

Intel corporate blog Programming *Compilers *Fortran *

Многие из нас, обучаясь программированию ещё в университетах или дома, делали это на языках С/С++. Конечно, всё зависит от времени, в которое начиналось наше знакомство с языками программирования. Скажем, кто-то начинал с Фортрана, другие — с Basic’a или Delphi, но стоит признать, что доля начавших свой тернистый путь программиста с С/С++ наибольшая. К чему я всё это? Когда перед нами стоит задача изучить новый язык и написать на нём код, мы часто основываемся на том, как бы я это написал на своём «базовом» языке. Сузим вопрос — если нужно написать что-то на Фортране, то мы вспоминаем, как бы это было реализовано на С и делаем по аналогии. Очередной раз столкнувшись с тонкостью языка, которая привела к абсолютно неработающему алгоритму и большой проблеме, эскалированной мне, я решил отыскать как можно больше нюансов языка Фортран (Fortran 90/95), по сравнению с С, с которыми столкнулся лично. Это своего рода «нежданчики», которые ты явно не планировал увидеть, а они бац – и всплыли!
Конечно, речь не пойдёт о синтаксисе — в каждом языке он свой. Я попробую рассказать о глобальных вещах, способных изменить всё «с ног на голову». Поехали!
Читать дальше →
Total votes 41: ↑33 and ↓8 +25
Views 29K
Comments 24

Intel® Graphics Technology. Часть III: эффективные вычисления на графике

Intel corporate blog Programming *Compilers *Concurrent computing *
image

В комментариях к прошлому посту был поднят весьма важный вопрос – а будет ли вообще выигрыш в производительности от выгрузки вычислений на интегрированную графику, по сравнению с выполнением только на CPU? Конечно, он будет, но нужно соблюдать определенные правила программирования для эффективных вычислений на GFX+CPU.
В подтверждение моих слов, сразу представлю график ускорения, получаемого при выполнении вычислений на интегрированной графике, для различных алгоритмов и с разной долей вовлеченности CPU. На КДПВ мы видим, что выигрыш более чем весомый.
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Views 8.8K
Comments 4

Intel® Graphics Technology. Часть II: «выгружаем» вычисления на графику

Intel corporate blog Programming *Compilers *Concurrent computing *

Продолжаем начатый разговор о Intel® Graphics Technology, а именно о том, что у нас есть в распоряжении с точки зрения написания кода: прагмы offload и offload_attribute для оффлоадинга, атрибуты target(gfx) и target(gfx_kernel), макросы __GFX__ и __INTEL_OFFLOAD, интринсики и набор API функций для асинхронного оффлоада. Это всё, что нужно нам для счастья. Чуть было не забыл: конечно, нам нужен компилятор от Intel и магическая опция /Qoffload.

Но обо всё по порядку. Одна из основных идей – это относительно легкая модификация существующего кода, выполняемого на CPU для его выполнения на интегрированной в процессор графике.
Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 11K
Comments 10

Intel® Graphics Technology. Часть I: почти Gran Turismo

Intel corporate blog High performance *Website development *Programming *Compilers *


В посте про «новшества» Parallel Studio XE 2015 я обещал написать про интересную технологию от Intel — Graphics Technology. Собственно, это я и собираюсь сделать сейчас. Суть Intel Graphics Technology заключается в использовании интегрированного в процессор графического ядра для выполнения вычислений на нем. Это оффлоад (offload) на графику, что, естественно, дает прирост производительности. Неужели интегрированная графика настолько мощна, что этот прирост будет действительно велик?
Давайте посмотрим на семейство новых графических ядер GT1, GT2 и GT3/GT3e, интегрированных в процессоры 4-го поколения Intel Core.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 18K
Comments 18

Pointer Checker: проверим наши указатели

Intel corporate blog Programming *C++ *Compilers *
Мы все сталкивались с проблемами, возникающими при неправильной работе с указателями: выход за пределы массива и переполнение буфера, случайная запись в неизвестный кусок памяти, с последующим чтением этого «мусора» в другом месте, а в некоторых отдельных случаях и просто падение всей системы. Иногда это просто «дичь», господа! И нужно уметь обходится с этой «дичью» правильно – вовремя находить и исправлять подобные ошибки и проблемы. Именно этим занялись в «плюсовом» компиляторе Intel ещё несколько релизов тому назад. Кроме того, многие идеи пошли дальше и будут реализованы в «железе» через технологию Intel Memory Protection Extensions. Давайте-ка посмотрим, как всё это работает в компиляторе.
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Views 8K
Comments 11

Intel® Parallel Studio XE 2015 — разговор о новых именах и «фишках»

Intel corporate blog Programming *Concurrent computing *
26 августа 2014 года вышла очередная новая версия пакета инструментов Parallel Studio – 2015. О нововведениях предыдущей версии мы писали почти год назад, а теперь самое время обзорно рассказать о том, что появилось в последнем релизе.
Не так давно я пытался пролить свет на запутанные имена программных продуктов Intel в соответствующем посте, но добрые ребята из маркетинга опять всё переиначили. Итак, знакомьтесь с новой философией в названиях:

Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views 12K
Comments 20
1

Information

Rating
Does not participate
Registered
Activity