LINUX.ORG.RU

Патчем к LLVM реализовано ускорение свободного драйвера RadeonSI в 1,5-2 раза

 , ,


7

10

Для LLVM представлен коммит объёмом примерно в 2 тысячи строк, после применения которого производительность графической подсистемы, известной под обобщённым названием RadeonSI, увеличивается на десятки процентов. На самом деле после применения этого патча во всех тестах производительность открытого графического стека обходит проприетарный драйвер Catalyst.

Так же стоит отметить что в Mesa 11 (релиз которой ожидается в течении недели-двух) для RaseonSI обеспечена полная поддержка OpenGL 4.0 и 4.1 (ранее поддержка ограничивалась версией 3.3).

Измерение производительности

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

★★★★★

Проверено: splinter ()

На самом деле после применения этого патча во всех тестах производительность открытого графического стека обходит проприетарный драйвер Catalyst.

ДА ЛАДНО?!

В убунту 15.10 войдет?

Kompilainenn ★★★★★ ()

Клёво. Ждём в апстриме.

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

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

В убунту 15.10 войдет?

Сначала в апстрим llvm должно войти. Вряд ли в убунте сейчас тестируют llvm из гита, и вряд ли его обновят после релиза, так что не войдёт, ищите в ppa.

Ivan_qrt ★★★★★ ()

AMD не для игр, так то.

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

ДА ЛАДНО?!
В убунту 15.10 войдет?

Нет, не успеет, на самом деле похоже что и в LLVM-3.7 не успеет. Для широкой публики придётся ждать какой-нибудь LLVM-3.7.1, а вот гентушники уже могут накатить прямо сейчас.

haku ★★★★★ ()

в 1,5-2 раза

Так вы же уже рассказывали, что он не медленнее венды. Что, теперь он быстрее железа?

anonymous ()

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

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

уже протестил, конечно моя домашняя тачка с 2 гигами рамы и дохлым пентаком может и не даст полной картины, но прирост есть.

Novell-ch ★★★★★ ()

Что за жёлтый заголовок, ускорение в 1.5 раза только в Xonotic, в проприетарных играх всё так же открытый драйвер сливает каталисту

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

Что за жёлтый заголовок
в проприетарных играх

Лютое 4.2, ибо в Metro 2033 Redux +60%, извольте проследовать по первому линку.

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

А вот в Metro Last Light Redux, на уровне, где надо перейти реку через мост по поверхности, как был неиграбельный фпс, так и остался.
Как, врочем, и в BioShoсk Infinite.

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

И причем вкусненько! Вот когда будет каждая новая карта выдавать максимум производительности на Linux на открытом драйвере от AMD - тогда это однозначный сигнал к покупке. Иначе - vesa ought to be enough for anybody.

I-Love-Microsoft ★★★★★ ()

На самом деле после применения этого патча во всех тестах производительность открытого графического стека обходит проприетарный драйвер Catalyst.

Какое же говно этот каталист:-(

Behem0th ★★★★★ ()

Офигеть вообще можно с таких новостей, по многим причинам.

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

Фпс для задротов, поборники opensourece не поскупятся купить топ для комфортной игры в 30fps.

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

smilessss, греп патча на предмет r600 даёт не нулевые результаты...

Chaser_Andrey, ты же в Генте накатываешь? Можешь выложить степ-бай-степ инструкцию вида:

1. layman -a llvm #ради llvm-9999

2. wget patch-link && mv si.patch /etc/portage/where-is-users-patches-go

...

3. PROFIT

Stil ★★★★★ ()

А в чём суть патча? Упоминается планировщик для SI. Только что он делает, переставляет инструкции? Или заменяет медленные инструкции на комбинацию быстрых?

i-rinat ★★★★★ ()

Это не шутка? Апрель давно позади.. Точно не шутка! Великолепно! Поздравляю AMD-шников!

обеспечена полная поддержка OpenGL-4.0 и OpenGL-4.1

А у Штеуда будет? В принципе, когда-нибудь? А то надоело по каждому чиху primusrun делать.

robus ★★★★ ()

В тестах моя карта и используемый мной драйвер. В игры не играю, но все равно приятно, пойду проверять)

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

Прочитал, мало что понял. Зато возник ещё вопрос. Интересно, железо в Radeon'ах следит за зависимостями инструкций? Или выдерживание нужного числа циклов — целиком забота компилятора?

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

Так вы же уже рассказывали, что он не медленнее венды. Что, теперь он быстрее железа?

а венда не может быть медленнее железа?

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

Да накатить-то мы всегда можем. Нам бы софт обновить...

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

1. Оверлеи не нужны дополнительные. Добавляешь в /etc/portage/package.keywords

=sys-devel/llvm-9999 **

2. Патчим средствами portage, для этого создаем каталог

mkdir -p /etc/portage/patches/sys-devel/llvm-9999

3. Чтобы получить патч на гитхабе, нужно к линку дописать .patch. Полученный патч сохраняем в нужном каталоге.

wget -O /etc/portage/patches/sys-devel/llvm-9999/00_radeonsi.patch https://github.com/axeldavy/llvm/commit/5005a869e01debaf3f78df804ab4fe67325ad88a.patch

4. emerge -av1 llvm

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

фпс увеличивается только там, где он и так производительность была более-менее нормальной. там где были лютые тормоза ничего особо не изменилось :(

КЭП

увеличивается на десятки процентов

50fps + 20% = 60fps
5fps + 20% = 6fps

з.ы. судя по всем гайдам, тестам и видео с RadeonSI и раньше было не все так плохо

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

Если это действительно правда - это потрясающая новость.

Chaser_Andrey ★★★★★ ()
Ответ на: комментарий от i-rinat

Насколько я помню, следит - там вообще хитрая массивно-параллельная хрень, которая работу (т.е. одновременно выполняемые разные шейдеры) постоянно распределяет между CU'шками.

Но это, собственно, не отменяет возможность ускорения путём перестановки инструкций.

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

В некоторых (абстрактных?) VLIW после команды загрузки данных в регистр, этот регистр ещё несколько тактов содержал старое значение, что могло использоваться компилятором для оптимизаций. Что-то типа load delay slot.

Хоть и писалось, что архитектура больше не VLIW, я очень сомневаюсь, что они для новых чипов всё старое выбросили и сделали дизайн с нуля.

i-rinat ★★★★★ ()

Компиляция вывалилась с ошибкой

FAILED: : && /usr/bin/x86_64-pc-linux-gnu-g++ -m32 -fPIC -O2 -pipe -march=amdfam10 -g  -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wno-comment -std=c++11 -ffunction-sections -fdata-sections  -Wl,-O1 -Wl,--as-needed -Wl,-z,defs   -Wl,-O3 -Wl,--gc-sections -shared -Wl,-soname,libLLVMCppBackendInfo.so.3.8 -o lib32/libLLVMCppBackendInfo.so.3.8.0svn lib/Target/CppBackend/TargetInfo/CMakeFiles/LLVMCppBackendInfo.dir/CppBackendTargetInfo.cpp.o  lib32/libLLVMSupport.so.3.8.0svn -Wl,-rpath,"\$ORIGIN/../lib32" && :
/usr/lib32/libc_nonshared.a(stack_chk_fail_local.oS): In function `__stack_chk_fail_local':
(.text+0x20): undefined reference to `__stack_chk_fail'
collect2: error: ld returned 1 exit status
Chaser_Andrey ★★★★★ ()

интересно, а что будет, если этот ваш компилятор шейдеров заменить на gcc

wakuwaku ★★★★ ()
Ответ на: комментарий от i-rinat

Именно что ваще всё выбросили. Погугли, есть документ открытый про архитектуру GCN. Очень прикольно сделали и кстати очень похоже на OpenCL :-).

В двух словах: любой GCN GPU состоит из Compute Unit'ов. CU состоит из 4-х векторных ядер по 16 чисел + 1 скалярного ядра. Логически векторные, собственно, работают как 1 на 64 числа. В коде идут вперемешку инструкции для векторных ядер и для скалярного. Ветвления, циклы и т.п. обрабатывает скалярное ядро. Вычисления - векторные. А дальше самый прикол: а как же сделать, скажем if (элемент вектора < 1) { векторные операции } else { другие векторные операции }? А вот как: есть 64-битный регистр-маска выполнения, в который перед телом if загоняется маска, в которой каждый бит равен 1, если тело if должно выполниться для соотв. элемента вектора, и 0, если соответствующую операцию нужно пропустить. Далее для else делается так же, но наоборот. Получается, что с точки зрения векторного процессора ветвления-то и нет, просто сначала одна часть вектора «не вычисляется», а потом другая. :-)

Аналогичными извращениями делаются циклы и т.п., и в этом весь прикол LLVM-бэкенда AMDGPU - нужно генерить такой вот смешанный код, который при этом ещё и за масочками следит.

И вот эти вот CU'шки - они универсальные, т.е. на них и фиксированные функции выполняются, и шейдеры. И в разных GPU их просто разное количество, чем больше CU - тем быстрее :-)

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

забыл пункт 3.1, а-ля раскомментировать

//else //(uncomment to turn default for SI)
// return createSIMachineScheduler(C);

иначе магии не будет (заглушка от дурака походу)

haku ★★★★★ ()

Наконец-то и у меня, как владельца карточки HD7790 праздник :-)

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