LINUX.ORG.RU

В Clang появилась поддержка спецификации OpenMP

 , , ,


0

7

Инженеры корпорации Intel сообщили о завершении работы по полной реализации поддержки OpenMP 3.1 в компиляторе С-подобных языков Clang. На текущий момент реализация успешно проходит все тесты совместимости, исходники лежат на github отдельной веткой, и уже начат процесс объединения изменений с основной веткой Clang.

OpenMP является открытым стандартом по распараллеливанию программ на C-подобных языках и языке программирования Fortran. Наличие поддержки OpenMP в компиляторе позволяет с помощью pragma-директив распараллеливать выполнение ресурсоемких вычислений в таких программах как ImageMagic, GraphicsMagic и многих других. Следует также отметить, что в июле 2013 года вышла новая версия спецификации OpenMP 4.0.

>>> Подробности

★★★★★

Проверено: maxcom ()
Последнее исправление: shahid (всего исправлений: 2)
Ответ на: комментарий от anonymous

опять целый здоровенный абзац написали о том какой Clang молодёжный! :-)

да, я понимаю это — он клёвый, стильный и т д :-) .. трэнд года! «каждый раз когда я компилирию через Clang — выздоравливает 1 котёнок»!... «недавно я переводил бабушку через дорогу и она открыла мне древний секрет: компилируй только через Clang..»!

но чётко можно сказать что мол «ДА, код получается в итоге быстрее чем у GCC!» ??

или же только иногда (по случайности) выходит более быстрый код?

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 3)
Ответ на: комментарий от user_id_68054

или же только иногда (по случайности) выходит более быстрый код?

this

mix_mix ★★★★★
()
Ответ на: комментарий от user_id_68054

НЕТ, код скорее получится более медленным при оптимизации под конкретную целевую платформу.

НО ВОЗМОЖНО В ТЕОРИИ И ДА, если вы делаете более универсальный бинарник, который LLVM динамически с оптимизирует.

AlexVR ★★★★★
()
Ответ на: комментарий от user_id_68054

..действительно ли Clang делает более быстрый код, чем код который делает GCC ?

У меня — да. Целочисленка, структуры данных, работа с памятью. В среднем clang 3.3 превосходит gcc 4.8.1 на 10-15%.

Немаловажно и то, что clang компилирует заметно быстрее, чем gcc. 1.5-2 раза у меня.

Если бы он еще с GDB нормально дружил, я бы gcc сделал вторым компилятором, а не основным рабочим.

aist1 ★★★
()
Ответ на: комментарий от anonymous

При этом у него нормальная лицензия, позволяющая его использовать для компиляции ПО под лицензиями, отличными от ДжиПиЭль.

4.2

shahid ★★★★★
() автор топика
Ответ на: комментарий от aist1

Если бы он еще с GDB нормально дружил

А есть примеры? Просто очень часто использую и clang, и gdb, полёт нормальный.

sjinks ★★★
()
Ответ на: комментарий от aist1

Кроме скорости компиляции у clang вообще куча киллер фич.

1. адекватные сообщения об ошибках

2. встроенный реактивный аналог valgrind

3. либеральная лицензия

Reset ★★★★★
()
Ответ на: комментарий от user_id_68054

а чем же отлаживают — на Clang ?

Для clang есть LLDB, но он имеет другой интерфейс, отличный от GDB. Поэтому, например, Eclipse CDT не может отлаживать код, скомпилированный clang.

aist1 ★★★
()
Ответ на: комментарий от Reset

1. адекватные сообщения об ошибках

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

2. встроенный реактивный аналог valgrind

Реквестирую ликбез. Что это за фича? Хотя бы ключи для гугления :)

aist1 ★★★
()
Ответ на: комментарий от sjinks

Думаю, пример можно получить, запустив отладку кода, скомпилированного в clang, из Eclipse CDT (любой более-менее свежей версии). Точки останова работают нормально, а вот step into уже капризничает — пропускает операторы. Отлаживать можно, но очень неудобно.

Я допускаю, что я — криворукий неосилятор. Может ключик какой волшебный есть для clang?

aist1 ★★★
()
Ответ на: комментарий от aist1

Реквестирую ликбез. Что это за фича? Хотя бы ключи для гугления :)

AddressSanitizer, MemorySanitizer, ThreadSanitizer

Пилится гуглоразрабами изначально под clang. Используется в гугле для автоматического тестирования Chrome и других продуктов. Презентация

Reset ★★★★★
()
Ответ на: комментарий от anonymous

Благодарю.

Кланг'овый анализатор уже работает с C++ или всё еще только с С?

aist1 ★★★
()
Ответ на: комментарий от Reset

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

aist1 ★★★
()
Ответ на: комментарий от aist1

Если бы он еще с GDB нормально дружил…

Во-первых, lldb.

Во-вторых, баг с невидимостью переменных после -faddress-sanitizer уже давно починили, с is_stmt и неверной работой брейкпоинтов под gdb — тоже.

Можно ссылочку на багрепорт по твоей проблеме?

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

с is_stmt и неверной работой брейкпоинтов под gdb — тоже.

Мда... Действительно, с clang 3.3/gdb 7.6 отладка работает нормально. Ура!

Благодарю :)

aist1 ★★★
()
Последнее исправление: aist1 (всего исправлений: 1)
Ответ на: комментарий от aist1

У меня — да. Целочисленка, структуры данных, работа с памятью. В среднем clang 3.3 превосходит gcc 4.8.1 на 10-15%.

А, вот эти ребята.

Примеров нет, даже если будут то gcc -00 сравнивается с clang - 03, и так далее и тому подобное, этой песни нет конца, точнее пока будут деньги у Apple. Никогда ваш шланг не приблизитcя к GCC по генерации кода.

anonymous
()
Ответ на: комментарий от anonymous

Почему же у вас так рвутся пердаки от упоминания Apple?

А, точно, прыщам ведь никогда не приблизиться к OS X по удобству.

anonymous
()
Ответ на: комментарий от thunar

там какие то принципиальные ограничения, или просто некому этим заняться?

Там, судя по всему, ограничения головного мозга, связанные с тем, что все языки, кроме Objective C и необходимых для его поддержки C/C++ считаются устаревшими/ненужными/маргинальными.

Vudod ★★★★★
()
Ответ на: комментарий от Vudod

ограничения головного мозга, связанные с тем, что все языки, кроме Objective C и необходимых для его поддержки C/C++ считаются устаревшими/ненужными/маргинальными

Там принципиально не принимают в upstream вещи, которые «считаются устаревшими/ненужными/маргинальными»? Или ими просто никто не хочет заниматься?

kamre ★★★
()
Ответ на: комментарий от kamre

Там принципиально не принимают в upstream вещи, которые «считаются устаревшими/ненужными/маргинальными»? Или ими просто никто не хочет заниматься?

Сложно сказать. Насколько я понял из отдельных высказываний ряда разработчиков, их не интересует интеграция и сопровождение лишнего кода, под которым они подразумевают те же Fortran, Ada, Pascal и др. Это можно сделать в виде отдельного форка или проекта на базе llvm, но в основной ветке им это не нужно. Может быть, это прнципиальная позиция людей из Apple, ведь clang не совсем свободный проект и находится у них в звисимости.

Vudod ★★★★★
()
Ответ на: комментарий от Vudod

позиция людей из Apple, ведь clang не совсем свободный проект и находится у них в звисимости

По таким критериям, свободных проектов среди чего-либо крупного вообще не существует, т.к. все они имеют в своем руководстве сотрудников тех или иных компаний.

monsta_kill
()
Ответ на: Шах и мат, GCC! от Deleted

Шах и мат, GCC!
Теперь можно спокойно от GCC отказываться.

Не, ну если ты дебил, то вперед... Умным людям нужен как минимум, фортран еще, кроме C/C++

unanimous ★★★★★
()

Похоже, это следующий крупный рывок в проекте после того, как сборку ведромира во FreeBSD перевели на него же. Появились новые силы в команде?

Infra_HDC ★★★★★
()
Ответ на: комментарий от der_looser

2 то же плох, но 3 — это финиш, хуже и быть не может.

thunar ★★★★★
()
Ответ на: комментарий от Vudod

их не интересует интеграция и сопровождение лишнего кода, под которым они подразумевают те же Fortran, Ada, Pascal

Разумная позиция, не обязательно все подряд неизвестно какого качества тащить в проект и иметь с этим проблемы. Если бы какая-то корпорация вроде Intel захотела добавить свой fortran, переделанный под llvm, то могли бы и договориться скорее всего.

clang не совсем свободный проект и находится у них в звисимости

Любой проект находится в зависимости у разработчиков, а свободность позволяет всем заинтересованным сделать форк и пилить там свои «устаревшие/ненужные/маргинальные» вещи. Почему «clang не совсем свободный»?

kamre ★★★
()
Ответ на: комментарий от splinter

вариант

не нравиться медленная скорость компиляции.

Woofywoof
()
Ответ на: комментарий от Vudod

Насколько я понял из отдельных высказываний ряда разработчиков, их не интересует интеграция и сопровождение лишнего кода, под которым они подразумевают те же Fortran, Ada, Pascal и др. Это можно сделать в виде отдельного форка или проекта на базе llvm, но в основной ветке им это не нужно.

А зачем в clang (сокращение от C language) реализовывать fortran, ada, pascal и др.? Если есть инициативная группа, которой требуются перечисленные языки, что им мешает реализовать свой фронтенд для LLVM (что было бы логически верно)?

m0rph ★★★★★
()
Ответ на: комментарий от kamre

Там принципиально не принимают в upstream … ?

Больше слушай. Как должно быть ясно из названия, Clang — LLVM компилятор «C» языков. При чем тут Fortran?

Всяких других языков на LLVM вагон и маленькая тележка: несколько реализаций OpenCL, Objective Modula-2, LLVM D Compiler, LLVM-Lua, Rubinius, даже иплементация PHP есть. Не говоря о JIT в IcedTea и Mono.

baka-kun ★★★★★
()
Ответ на: комментарий от m0rph

Если есть инициативная группа, которой требуются перечисленные языки, что им мешает реализовать свой фронтенд для LLVM (что было бы логически верно)?

Собственно, наверное, ничего не мешает. Мне, например, просто надобности нет, gfortran вполне хватает, он разививается, OpenMP там есть уже давно, причём с 4.5 стал адекватно воспринимать даже распараллеливание сечений. Многие люди используют компилятор от Интел. Люди, использующие Фортран, как правило --- это учёные, они редко занимаются написанием компиляторов.

Vudod ★★★★★
()
Ответ на: комментарий от kamre

Если бы какая-то корпорация вроде Intel захотела добавить свой fortran, переделанный под llvm, то могли бы и договориться скорее всего.

У Интела уже есть свои компиляторы и C/C++ и Fortran, причём гораздо более вылизанные, нежели llvm/clang. Зачем им связываться с llvm, тем более что он зависим от Apple и распространяется под сомнительною лицензией: вложат в Интел деньги в развитие llvm/clang, а Apple возьмёт их код и использует в своих проектах, а свой перестанет давать. Это вам не ядро Linux, где GPL.

Vudod ★★★★★
()

Отлично. Жду с нетерпением 4.0

gear ★★★
()
Ответ на: комментарий от anonymous

а зачем им опускаться до такого уровня?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.