Страницы

Показаны сообщения с ярлыком AMD. Показать все сообщения
Показаны сообщения с ярлыком AMD. Показать все сообщения

пятница, 6 января 2017 г.

OpenCL radeon r600g. Параллельные вычисления. Проверка возможностей APU A10-6700 в Linux Fedora 25

Процессор AMD APU A10-6700 - это гибридный процессор, содержит встроенное ядро AMD Radeon HD8670D.
Это даёт надежду, что возможности встроенного графического ядра можно будет использовать для ускорения некоторых операций и расчётов, помимо трехмерной графики и аппаратного ускорения кодирования и декодирования видеопотоков (что поломали в Fedora 25 под Wayland).

Для задействования возможностей вычисления на графическом ядре,  надо установить инструменты: компилятор OpenCL C, различные реализации спецификации OpenCL, утилиты и пр.

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

В Linux, я сейчас использую Fedora 25, из-за окружения Gnome 3.
Устанавливать Ubuntu 16.04 LTS буду в крайнем случае, если ничего не выйдет. Драйвер AMD Catalyst он ведь под Ubuntu.


Инфраструктура OpenCL


Не буду ваваться в историю OpenCL, сразу к делу. Спецификации на OpenCL различных версий можно найти в реестре "Khronos OpenCL™ Registry" [1].

Можно пойти простым путём - установить реализацию спецификации OpenCL на процессорах общего назначения [3]. Это позволит писать программы на OpenCL C, но ускорение будет слабым, за счёт команд SSE,AVX и пр.

Есть вариант, задействовать набор инструментов и драйверов от компании AMD, catalyst & amd app sdk [4]. Но это, невозможно в Fedora 25, для меня по крайней мере. Catalyst - уже старый драйвер. Как его устанавливать в новой системе неясно.
Я предпринял попытку установить OpenCL окружение в Windows 8.1. Там тоже надо устанавливать старый драйвер Catalyst, вместо Radeon Crimson.
Вообщем, поддержка весьма условная. Графика в процессоре уже старая, с точки зрения AMD. Много затруднений.

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


ICD - Installable Client Driver



Спецификация OpenCL определяет способ, которым  несколько устройств ускорителей могут сосуществовать в одной системе [2].

Каждый ускоритель "может реализовывать" библиотеку, соответствующую спецификации OpenCL.

Менеджер, который заведует согласованием называется : Installable Client Driver (ICD).


В репозитории Fedora 25 (64-bit) это пакет: ocl-icd.x86_64

Список установленных драйверов ускорителей можно посмотреть в :
/etc/OpenCL/vendors

в файле с расширением .icd указана ссылка на конкретную библиотеку, конретного ускорителя.


Информационные утилиты clinfo & clpeak


Для того, чтобы ориентироваться в достижении цели - установки OpenCL, прежде всего установлю полезные информационные утилиты clinfo - для отображения возможностей платформ и clpeak для легкого тестирования.

clinfo
В репозитории Fedora 25 (64-bit) это пакет: clinfo.x86_64

Если запустить clinfo на системе без поддержки OpenCL, отобразится следующее:

$ clinfo
Number of platforms   0

В системе с настроенной поддержкой OpenCL можно будет видеть
кратко:

$ clinfo -l

Platform #0: Clover
 `-- Device #0: AMD ARUBA (DRM 2.46.0 / 4.8.15-300.fc25.x86_64, LLVM 3.8.0)
Platform #1: Portable Computing Language
 `-- Device #0: pthread-AMD A10-6700 APU with Radeon(tm) HD Graphics

Как видно доступно 2 платформы, внутри каждой по одному устройству ("Device" по терминологии OpenCL).


clpeak

В репозитории Fedora 25 (64-bit) это пакет: clpeak.x86_64

Позволяет посмотреть производительность некоторых операций OpenCL

$ sudo dnf install --enablerepo=updates-testing clpeak


Portable Computing Language


Реализация спецификации OpenCL для выполнения на процессорах общего назначения, имеющих поддержку SSE/SSE2 AVX и т.п.

В репозитории Fedora 25 (64-bit) это пакет: pocl.x86_64

После установки этого пакета появляется 1 доступная opencl платформа №0, с одним opencl-устройством (процессор AMD A10-6700), с четырьмя вычислительными модулями.

$ clinfo -l
Platform #0: Portable Computing Language
 `-- Device #0: pthread-AMD A10-6700 APU with Radeon(tm) HD Graphics

$ clpeak

Platform: Portable Computing Language
  Device: pthread-AMD A10-6700 APU with Radeon(tm) HD Graphics
    Driver version  : 0.13 (Linux x64)
    Compute units   : 4
    Clock frequency : 3700 MHz

    Global memory bandwidth (GBPS)
      float   : 2.73
      float2  : 2.87
      float4  : 3.11
      float8  : 3.44
      float16 : 3.35

    Single-precision compute (GFLOPS)
      float   : 20.64
      float2  : 3.21
      float4  : 10.92
      float8  : 20.60
      float16 : 39.28

    Transfer bandwidth (GBPS)
      enqueueWriteBuffer         : 2.88
      enqueueReadBuffer          : 1.71
      enqueueMapBuffer(for read) : 173184.17
        memcpy from mapped ptr   : 1.52
      enqueueUnmap(after write)  : 244032.22
        memcpy to mapped ptr     : 1.39

    Kernel launch latency : 0.94 us


OpenCL C


OpenCL C - язык программирования "opencl-ядер". Написан в инфрастуктуре LLVM и зависит  от неё. Это подмножество C. [5].

В репозитории Fedora 25 (64-bit) это пакет: libclc.x86_64



OpenCL для встроенного в APU ядра Radeon HD8670D


Что и удивительно, данная поддержка доступна для процессора AMD APU A10-6700, можно сказать "из коробки".
Кодовое имя семейства графики: "Nothern Islands", NI
Имя графического чипа: AMD ARUBA
Драйвер ядра: radeon
Драйвер Mesa: r600g
Пишется, что почти поддерживается спецификация OpenCL1.1 [11], см. колонку "Evergreen/NI" в [7].



В репозитории Fedora 25 (64-bit) это пакет:  mesa-libOpenCL.x86_64


После установки mesa-libOpenCL.x86_64, появляется платформа Clover [8].


$ clinfo -l

Platform #0: Clover
 `-- Device #0: AMD ARUBA (DRM 2.46.0 / 4.8.15-300.fc25.x86_64, LLVM 3.8.0)
Platform #1: Portable Computing Language
 `-- Device #0: pthread-AMD A10-6700 APU with Radeon(tm) HD Graphics


$ clpeak

Clpeak вываливает исключение на GPU. Вот это уже нерадостно. Это может привести к потерям времени на поиск и устранение трудностей.

Platform: Clover
  Device: AMD ARUBA (DRM 2.46.0 / 4.8.15-300.fc25.x86_64, LLVM 3.8.0)
    Driver version  : 13.0.2 (Linux x64)
    Compute units   : 6
    Clock frequency : 0 MHz
    Build Log: input.cl:48:2009: warning: null character ignored
unsupported call to function __floatunsidf in compute_dp_v1

Тут также есть проблема со старым багом: Clock frequency : 0 MHz. см.. https://people.freedesktop.org/~agd5f/0001-drm-radeon-add-query-to-fetch-the-max-engine-clock.patch

Ну отказала одна платформа (GPU), можно отлаживаться на другой (CPU). Тут и вступает в игру унифицированность OpenCL.

PyOpenCL обёртки для OpenCL на языке Python


Python - это интерпретатор - он выполняет команды пользователя немедленно. Очень удобен для пошагового изучения неизвестной зверюшки OpenCL.

PyOpenCL - заворачивает различные части OpenCL в синтаксис привычный в языке Python. Зовётся и так: opencl pyhton bindings.


В репозитории Fedora 25 (64-bit) это пакеты: python2-pyopencl.x86_64 и python3-pyopencl.x86_64

В моей системе на команду python отозвалась версия 2.7.12,  для неё и поставил.

Когда установлено почти всё, можно начать пробовать программировать на GPU.
Не факт, что в ближайшее время, но вот пара ссылок(en) [10] & [9]:


http://www.drdobbs.com/article/print?articleId=231002854&siteSectionName=parallel
http://www.drdobbs.com/article/print?articleId=240162614&siteSectionName=open-source


Заключение


Главное достоинство OpenCL в том, что оно делает доступным обычному пользователю ускорение на графическом ядре, на его имеющемся оборудовании. Это сохраняет деньги и продлевает срок использования существующих машин.
Как и раньше, в эпоху 286, 386 процессоров, ускорение операций с плавающей точкой требовало отдельного сопроцессора, так и сейчас. :-)

 
※※※

Ресурсы


1. Khronos OpenCL™ Registry. https://www.khronos.org/registry/cl/
2. Kronos ICD implementation: https://github.com/KhronosGroup/OpenCL-ICD-Loader


3. Portable Computing Language (PoCL). http://portablecl.org/

4. Страница загрузки AMD Catalyst. http://support.amd.com/en-us/download

5. OpenCL C implementation. http://libclc.llvm.org/


6. Clpeak. https://github.com/krrishnarraj/clpeak


7. http://dri.freedesktop.org/wiki/GalliumCompute/

8. Clover. https://people.freedesktop.org/~steckdenis/clover/

9. A Gentle Introduction to OpenCL.  http://www.drdobbs.com/article/print?articleId=231002854&siteSectionName=parallel

10.  Easy OpenCL with Python. http://www.drdobbs.com/article/print?articleId=240162614&siteSectionName=open-source

11. OpenCL 1.1 specification. https://www.khronos.org/registry/cl/specs/opencl-1.1.pdf

※※※

понедельник, 2 января 2017 г.

VRReady. Vega-Ryzen-NVMe. Предварительная проектная сборка настольного компьютера для виртуальной реальности

Обнадёживащие новости из стана AMD продолжают поступать и радовать вкусностями.
Дабы не терять время, опишу желаемую конфигурацию домашнего компьютера, способного справляться с виртуальной реальностью. Т.н. VR Ready PC.

Ryzen+Vega+NVMe


1. Итак, AMD в 2017 году выпустит процессор AMD Ryzen. 16-поточный процессор. Его и выберу.

2. В 2017 году AMD представит мощную видеокарту AMD с процессором Vega 10, с пиковой производительностью 25 Тфлопс.

3. Чипсет платформы AM4. Поддерживающий такие скоростные вещи как USB 3.1 type C, NVMe, M.2 Sata.

4. Скоростной накопитель NVMe. Дабы уйти от скоростей стандарта SATA. Ну например, пусть будет : Kingston HyperX Predator. 1Гб/с. От SSD-накопителей SATA нужно отказываться, т.к. это ограничивает скорость. И в новой сборке их не будет.

Это базовая скоростная платформа для виртуальной реальности.
Ryzen+Vega+NVMe.

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

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

Так что, надо сменить порядок и выработать правило: Vega+Ryzen+NVMe.

Для минимальных требований VR, при экономии бюджетных средств, базовая платформа будет выглядеть так:  RX480+Ryzen+NVMe.

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

Vega+Ryzen+NVMe или VR+N или VRN


Ну и на вкусное, если бы я был разработчиком материнских плат и компьютеров, я бы выкинул всё лишнее и разместил бы на одной плате mini-itx сразу всю связку.
Графический процессор Vega, системный процессор Ryzen, нтегрированный SSD, слот NVMe + наиболее высокоскоростные интерфейсы на текущий момент. Система охлаждения + система мониторинга всего чего можно.
Без компромиссов.

И никаких D-SUB, PS/2 разъёмов, Molex, PCI, PCIe и прочих флоппи-дисков.

В принципе, гибридный процессор APU, это и есть зародыш того, что нужно.

※※※

Asrock FM2A85X-ITX Nuvoton NCT5573D sensors. Напряжения, температуры, вентиляторы в Linux

Отслеживание напряжений, температуры, скоростей вращения вентиляторов в Linux всегда вызывало трудности, даже при наличии программы мониторинга lm_sensors.
Основная проблема - недостаток информации от производителя, о применённой микросхеме SuperIO, о её подключении к датчикам, характеристики применённых резистивных делителей для "высоких" напряжений, схема расположения датчиков температуры на материнской плате.
Одно слово - информация.
Поэтому, приходится её восстанавливать, с помощью всяких ухищрений, поиска спецификаций. И без трассировки по плате может не обойтись, в некоторых случаях.


Итак, lm_sensors - пакет мониторинга напряжений, температур, вентиляторов.

Основной конфигурационный файл: /etc/sensors3.conf

Подопытная плата: Asrock FM2A85X-ITX на сокете FM2 + процессор AMD APU A10-6700 Richland

Конфигурационный файл конкретной системы, обычно помещается в папку /etc/sensors.d/

После выполнения команды sensors-detect, был обнаружен чип мониторинга NCT5573D и был загружен для него драйвер NCT6775 (modprobe nct6775).

Первоначальный вывод команды sensors выглядел так:

nct6776-isa-0290
Adapter: ISA adapter
Vcore:          +0.99 V  (min =  +0.75 V, max =  +1.40 V)
in1:            +0.18 V  (min =  +2.04 V, max =  +2.04 V)  ALARM
AVCC:           +3.44 V  (min =  +2.98 V, max =  +3.63 V)
+3.3V:          +3.42 V  (min =  +2.98 V, max =  +3.63 V)
in4:            +0.53 V  (min =  +2.04 V, max =  +2.04 V)  ALARM
in5:            +1.70 V  (min =  +1.50 V, max =  +1.70 V)
in6:            +1.86 V  (min =  +1.01 V, max =  +1.10 V)  ALARM
3VSB:           +3.44 V  (min =  +2.98 V, max =  +3.63 V)
Vbat:           +3.38 V  (min =  +2.70 V, max =  +3.63 V)
fan1:           849 RPM  (min =  600 RPM)
fan2:          1636 RPM  (min =  600 RPM)
fan3:             0 RPM  (min =    0 RPM)
fan4:             0 RPM  (min =    0 RPM)
fan5:             0 RPM  (min =    0 RPM)
SYSTIN:         +40.0°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
CPUTIN:         +34.5°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
AUXTIN:         -29.0°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
PCH_CHIP_TEMP:   +0.0°C  
PCH_CPU_TEMP:    +0.0°C  
PCH_MCH_TEMP:    +0.0°C  
intrusion0:    OK
intrusion1:    OK
beep_enable:   disabled

Невозможно доверять такой информации и принимать осмысленные решения о дальнейшей оптимизации системы.

Самое простое, вентиляторы определились правильно, их значения соответствуют значениям в UEFI BIOS платы Asrock FM2A85X-ITX.

Напряжения не все - их значения - сырые, частично верные - надо разбираться.

Начал с UEFI BIOS и его раздела HW Monitor. Выписал имеющиеся там значения напряжения. Сопоставлял с видимыми в выводе.

Т.к. я уже имею опыт составления конфигурационного файла сенсоров, то шло достаточно быстро, но упёрлось в недостаток информации.
Пришлось искать спецификацию на Nuvoton NCT5573D.
Вместо этого нашлась спецификация на Nuvoton NCT5577D, что меня удовлетворило, на предположении, что чип и его решения недалеко ушли от предка Nuvoton NCT5573D.
Также, нашёл спецификацию на Nuvoton NCT6776D, но там уже есть
отличия.

Чип Nuvoton NCT5573D - это SuperIO контроллер, обслуживающий множество подсистем x86-компьютера.

Итак, чип мониторинга Nuvoton NCT5573D в части мониторинга
содержит 8 аналоговых входов, присоединённых к 8-битному АЦП
Максимальное напряжение на входе АЦП: 2.048 V (256 шагов x 8mV = 2.048V).


4 внешних аналоговых входа обозначенных как (CPUVCORE, VIN0,VIN1, VIN3).
Куда и как разведены VIN0, VIN1, VIN3 на этой конкретной плате, можно только догадываться, но если следвать спецификации и её примерам, то VIN0 - это измерение 12 В линии питания.

4 внутренних аналоговых входа обозначенных как (AVCC, VBAT, 3VSB, 3VCC) и присоединенных через внутренние резистивные делители к источнику питания (а вот куда - это неизвестно). Но имеют осмысленные обозначения, так что их легко понять имея опыт.


Для мониторинга напряжений, чьи верхние значения диапазона ниже 2.048 вольт не нужно применять резистивных делителей.
Таким напряжением является напряжение ядра процессора, которое в нашем случае, скорее всего присоединено к выводу CPUCORE чипа мониторинга. Так и есть. Это подтверждается значениями напряжения в BIOS и других средств мониторинга под Windows. Верхняя граница установлена по данным BIOS, нижняя - наименьшее наблюдаемое мною за некоторый период наблюдений. Возможно требует уточнения по спецификации процессора.

AVCC, VBAT, 3VSB, 3VCC - не требуют большого вмешательства. Лишь установление правильных границ в соответствии со спецификацией ATX, в зависимости от версии поддерживаемой блоком питания.



Для мониторинга положительного +12В напряжения, в спецификации на чип мониторинга рекомендуют применять резистивный делитель с номиналами резисторов 10 кОм и 56 кОм. Эти значения попадают в стандартный диапазон сопротивлений.

При определении вывода показывающего напряжение +5V, подбирался множитель, чтобы значение соответствовало напряжению для пяти вольт в BIOS (переписанные ранее значения и их возможные изменения).

Т.е. на данный момент имеются определённые напряжения процессора и основных линий стандарта ATX.
Уже можно останавливатся в поисках.

Замечу, что в моей системе, с нового года, применяется новый тихий блок питания BeQuiet SFX power 300W, который соответствует спецификации "SFX 12V Version 3.2". Данная спецификация задает диапазон изменения питающих напряжений для большей их части, в пределах 5 процентов.

Итак, конфигурационный файл для материнской платы AsRock FM2A85X-ITX, с процессором AMD APU A10-6700 и блоком питания BeQuiet SFX power 300W.

Расположение конфигурационного файла:  /etc/sensors.d/asrock-FM2A85X-ITX.conf

Содержимое:

# Asrock FM2A85X-ITX motherboard sensors
# Процессор: AMD APU A10-6700 Richland
# Блок питания: BeQquit SFX Power 300W (SFX 12V Version 3.2)
# Чип мониторинга: Nuvoton NCT5573D (исп. драйвер NCT6776D, Kernel driver NCT6775)
# Дата: 1 января 2017 года
# сервер: red
# Поместить этот файл в /etc/sensors.d/
# URL: http://gimmor.blogspot.com/2017/01/asrock-fm2a85x-itx-nuvoton-nct5573d.html


# Суженый выбор чипа, для платы Asrock FM2A85X-ITX, после определения sensors-detect
chip "nct6776-isa-0290"

# Неработающие или неиспользуемы выводы

ignore  intrusion1


# temp0 - показывает отрицательное значение
ignore temp0
ignore temp3
ignore temp4
ignore temp5
ignore temp6
ignore temp7
ignore temp8
ignore temp9

# fan3 - не подключен
ignore fan3
ignore fan4
ignore fan5

#ignore in1
#ignore in4

# Описание взято из описания чипа Nuvoton NCT5577D, по аналогии
# Чип мониторинга Nuvoton NCT5573D содержит 8 аналоговых входов, присоединённых к 8-битному АЦП (256 градаций измерений)
# Максимальное напряжение на входе АЦП: 2.048 V (256 шагов x 8mV = 2.048V)
# Диапазон напряжений ATX стандарта в соответствии с SFX 12V Version 3.2 (3.2.1 DC Voltage Regulation)
# 4 внешних входа присоединённых к (CPUVCORE, VIN0,VIN1, VIN3)
    # in0 - Processor core, VDD

    # нижняя граница - опытное наблюдаемое значение, требует уточнения
    label in0 "Processor core, VDD"
    set in0_min 0.75
    set in0_max 1.4
    label in1 "in1?"
    set in1_min 0
    set in1_max 2.048

    label in4 "in4?"
    set in4_min 0
    set in4_max 2.048
    #compute in4 2*@, @/2
    # in5 - Линия питания +5VDC (±5%) (вычислено по совпадениям со значениям BIOS)
    label in5 "+5V ATX power"
    compute in5 3*@, @/3
    set in5_min  4.75
    set in5_max  5.25
    # in6 - Линия питания +12VDC (±5%)
    # Значения резисторов делителя взяты 10 и 56 кОм, из спецификации на чип Nuvoton nct5577D
    label in6 "+12 ATX power"
    compute in6 66/10*@, @/6.6
    set in6_min  11.4
    set in6_max  12.6
   
# 4 внутренних входа присоединённых к питанию (AVCC, VBAT, 3VSB, 3VCC)
# Содержат внутренние резисторы 34 кОм
    label in2 "AVCC"
    set in2_min 3.14
    set in2_max 3.47
#    label in8 "RTC battery"
    label in7 "3VSB"
    set in7_min 3.14
    set in7_max 3.47
    # in3 - Линия питания +3.3VDC (±5%)
    label in3 "+3.3V ATX power"
    set in3_min  3.14
    set in3_max  3.47


# Напряжение часовой батареи (RTC), обычно CR2032 li-Ion
# Номинальное напряжение 3В
# Напряжение разряженной батареи 2В
# Диапазон 2-3.6 В
    label   in8            "3V CR2032 RTC Battery, VccRTC"
    set     in8_min        2
    set     in8_max        3.6

# Температуры
# AMD APU A10-6700 Maximum operating temperature: 71.3 °C
# AMD APU A10-6700 HTC Temperature Limit (TctlMax): 70 °C

# С температурами сложно, т.к. неизвестно где установлены датчики

    label temp2 "CPU Socket area temperature"
    set   temp2_max      85
    set   temp2_max_hyst  80
    label temp1 "Motherboard area temperature"
    set   temp1_max      85
    set   temp1_max_hyst  80

    label temp3 "AUXTIN"


# Системные вентиляторы

    # Системный вентилятор
    label   fan1           "4-pin system fan"
    set     fan1_min       600
    # Процессорный вентилятор
    label   fan2       "4-pin processor fan"
    set     fan2_min       600


# k10temp-pci-00c3

# Интерпретация может быть неверна
# Опытная корректировка температуры процессора
# Исхожу из предположения, что показано значение Thermal Margin
chip "k10temp-pci-00c3"
label temp1 "CPU Tctl value"
#compute temp1 70-@, 70-@


# Опытная корректировка температуры графического ядра гибридного процессора

# Интерпретация может быть неверна
# Тип сенсора - thermal diode, по данным AIDA64 Extreme
chip "radeon-pci-0008"
label temp1 "Graphic core thermal value"



Как видно, некоторые выводы (in1, in4) не определены до сих пор. Т.е. непонятно куда подключены и какие делители применены и какие в результате множители.


Границы напряжений пятипроцентные.
Границы напряжения батареи резервного питания часов установлены как для Li-ION (по данным википедии).
Если границы неверно определяются даже после команды sensors -s, то возможно подправить файл /etc/sensors3.conf в части чипа мониторинга. Там закомментировать старые границы.



С температурами было просто - названия почти соответствуют
CPUTIN - CPU Temp Input
SYSTIN - System Temp Input
Соответствуют значения в BIOS CPU temperature и M/B temperature.
С границами температур сложно.Установил из предположения, что разъём процессора и материнская плата (в каком месте?) могут нагреваться до высоких значений, превышающих максимальную температуру процессора в 70 градусов.
Типы сенсоров - термисторы по умолчанию, т.к. неизвестна конкретная реализация на плате AsRock FM2A85X-ITX.

Вентиляторы аналогично. Их значения чётко соответствуют значениям в BIOS. И что есть что, легко сопоставить.


Также в качестве примера добавлены сенсоры K10temp-pci-00c3 и radeon-pci-0008.
Однако их интерпретация не закончена.
Известно только одно - выдаваемые значения как-то связаны с температурным режимом процессора и графического ядра.

Полученный вывод команды sensors:
nct6776-isa-0290
Adapter: ISA adapter
Processor core, VDD:            +0.98 V  (min =  +0.75 V, max =  +1.40 V)
in1?:                           +0.18 V  (min =  +0.00 V, max =  +2.04 V)
AVCC:                           +3.44 V  (min =  +3.14 V, max =  +3.47 V)
+3.3V ATX power:                +3.42 V  (min =  +3.14 V, max =  +3.47 V)
in4?:                           +0.52 V  (min =  +0.00 V, max =  +2.04 V)
+5V ATX power:                  +5.09 V  (min =  +4.75 V, max =  +5.26 V)
+12 ATX power:                 +12.25 V  (min = +11.40 V, max = +12.62 V)
3VSB:                           +3.44 V  (min =  +3.14 V, max =  +3.47 V)
3V CR2032 RTC Battery, VccRTC:  +3.38 V  (min =  +2.00 V, max =  +3.60 V)
4-pin system fan:               631 RPM  (min =  600 RPM)
4-pin processor fan:           1640 RPM  (min =  600 RPM)
Motherboard area temperature:   +37.0°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
CPU Socket area temperature:    +33.5°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
intrusion0:                    OK
beep_enable:                   disabled

radeon-pci-0008
Adapter: PCI adapter
Graphic core thermal value:   +4.0°C  (crit = +120.0°C, hyst = +90.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
CPU Tctl value:   +4.6°C  (high = +70.0°C)
                          (crit = +70.0°C, hyst = +69.0°C)



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

※※※





суббота, 24 августа 2013 г.

Особенности Ubuntu Linux на системе с процессором AMD Fusion A10-6700. My new Linux desktop

Заметки, по мере улучшения домашней конфигурации, которая вылилась в сборке компьютера на платформе AMD Fusion и установке Ubuntu Linux 13.10.

Собрать систему планировалось в корпусе mini-itx Silverstone FT03-Mini. Это было задающим требованием (для красоты), поэтому платы рассматривались mini-itx.
Таким же требованием было использование процессора AMD A10-6700 Richland.
Требованием также было наличие vga-выхода, dvi-d и hdmi, чтобы подключить существующее оборудование.


Первоначальный состав системного блока получился следующий:
1. Процессор AMD A10-6700 OEM, разъем FM2 (индекс cpubenchmark.net - 4983)
2. Материнская плата Asrock F2A85X-ITX, разъем FM2
3. 8 Гб памяти AMD 1866, одной планкой (одноканальный режим)
4. Охладитель (cooler) Noctua L9a (временно обычный Titan)
5. Старые накопители Sata 2.5" Seagate и Intel.
6. Корпус mini-itx SilverStone FT03-mini
7. Блок питания SFX (125 мм x 100 мм x 64 мм) Inwin IP-S300BN1-0.

Старая система которая подлежала осовремениванию - Intel Celeron 420/Intel D945GCPE (индекс cpubenchmark.net - 457). Простейшая связка, которая выручила, из-за недоступности компьютера Intel i3-3225, на текущей площадке.

Расчётное увеличение индекса производительности - 4983/457 = 10.9 раз.
10 раз, когда ещё такое событие случиться.

Итак, процессор AMD A10-6700 имеет на борту интегрированное графическое ядро HD 8670D, которое грех было бы не использовать в системе и обойтись без отдельной видеокарты (отложить на будущее, при необходимости). Также на будущее откладывается приобретение второй планки памяти, слотового привода Blu-ray и пр. Всё это делается для снижения первоначальной стоимости. Однако получившаяся сборка должна работать сразу, а не лежать на полочке.

Разгон системы не планируется, поэтому выбран процессор AMD A10-6700 Richland с TDP процессора 65 ватт.

Запомню тут характеристики процессора AMD A10-6700, чтобы потом не искать:
- Маркетинговое семейство: Fusion
- Маркетинговое название: A10 6700 Richland
- Серия центрального процессора: 6000
- Модель:  A10-6700 APU with Radeon™ HD 8670D
- Код детали: AD6700OKA44HL, AD6700OKHLBOX
- CPUID:  610F31h
- Маркетинговое название графической части: HD 8670D
- Кодовое название модуля (одного из двух) центрального процессора: piledriver (сваезабивочная машина, ха-ха)
- Поддержка инструкций: MMX, SSE, SSE2, SSE3, SSSE3, SSE4a, SSE4.1, SSE4.2, AMD64, AMD-V, AES, AVX, AVX1.1, XOP, FMA3, FMA4, CVT16, F16C, BMI1 (Bit Manipulation instructions), ABM (Advanced Bit Manipulation), TBM (Trailing Bit Manipulation instructions), Turbo Core 3.0, NX bit
- Количество видимых системой логических процессоров: 4
- Частота базовая: 3.7 ГГц
- Кэш-память инструкций на ядро: 64 КиБ
- Кэш-память данных на ядро: 64 КиБ
- Кэш-память L2: 2x2 МиБ
- Число сопроцессоров плавающей точки (FPU): 2
- Разрядность сопроцессоров плавающей точки (FPU): 128
- Кодовое имя архитектуры графического процессора: Northern Islands
- Архитектура: TerraScale 3 (VLIW4)
- Кодовое инженерное имя: ARUBA (Richland)
- 2D Linux driver: radeon
- 3D Linux driver: r600g
- 2D/3D Linux closed source driver: catalyst
- Код 3d-оборудования: R9xx
- Ядро дисплейное: DCE6.1
- Число вычислительных ядер графического процессора (Radeon cores): 384
- Частота графического процессора: 844МГц
- Частота памяти DDR3: 1866 МГц
- Техпроцесс: 32 нм
- Число транзисторов: ~1,3Гшт
- AMD Turbo Core 3.0
- Частота при использование Turbo: 4.2 ГГц
- AMD Unified Video Decoder: UVD 3.2 (аппаратный видеодекодер H.264,VC-1 (WMV9),MPEG-2, версии 3.2)
- Linux Video Decode (VDPAU/OpenMax/VAAPI) on UVD: да
- AMD Video codec engine: VCE 1.0 (аппаратный кодировщик H.264)
- Linux Video Encode (Video encode (OpenMax) on VCE): ? (требуется доработка)
- AMD Eyefinity- до 4 мониторов (3 выхода на плате Asrock)
- AMD Radeon™ Dual Graphics (добавочная мощность с дискретной картой 6000 серии)
- AMD Radeon™ HD Graphics
- AMD HD Media Accelerator
- AMD Accelerated Video Converter
- AMD Perfect Picture HD ?
- AMD Quick Stream Technology ?
- AMD Steady Video Technology 2.0 ?
- AMD HD3D Technology ?
- Powernow (Cool`n`Quiet)
- AMD PowerPlay в закрытом драйвере Catalyst,
- Максимальная температура:  71.3 °C
- TDP 65 ватт
- Разъём (socket) FM2
- Фирменный цвет AMD: красный, надо бы добавить к черному корпусу немного красного



Первоначальная сложность данной сборки в том, что материнская плата использует специфическую микросхему (контроллер) сетевого интерфейса Realtek 8111E, для которого, вроде бы, пока ещё нет драйвера (примечание: уже есть) в выпущенных версиях Ubuntu.
Тестирование новых материнских плат на поддержку Linux в основной массе обзоров не проводиться, поэтому однозначно сказать как поведёт себя эта конфигурация, я не могу.
Смущает бренд Asrock.

Не могу отнести данную плату к топовой конфигурации, т.к. наличие 3-х разнообразных видеовыходов, подразумевает что использоваться будут разные мониторы (разного поколения). Топовая же версия данной платы выглядела бы так - 4 одинаковых современных интерфейса (APU поддерживает 4 по технологии Eyefinity), например hdmi или Displayport, т.е. подразумевалось, что будут использованы одинаковые мониторы, для полного использования функции AMD Eyefinity. Эту же версию платы можно было назвать Transit, для бюджетного перехода со старой системы, с сохранением существующего оборудования. Плата не раскрывает полностью возможности процессора и чипсета (невозможно CrossFire X), в данном форм-факторе mini-itx. Но это и не требуется.



Компания Realtek предлагает исходные коды драйвера для своих чипсетов, но это приводит к ситуации, при каждом обновлении ядра, надо будет выполнять перекомпиляцию исходных кодов драйвера. Очень не удобно, но по крайней мере путь понятен. Также есть способ автоматической пересборки исходных кодов драйвера, при обновлении ядра.


Поэтому конфигурация попадает в разряд проблемных. Т.е. всё вроде поддерживается, а вот сетевой контроллер подкачал (примечание: не подкачал).
Это было предварительное мнение, основанное на проверке компонентов материнской платы (сетевого и звукового контроллеров) поиском в сети Интернет.

Небыстрый просмотр показал ещё пару mini-itx плат под разъем FM2, но они все, так или иначе содержат сетевой контроллер Realtek GbE, либо имеют недостаточное число видеовыходов.
Многие производители не указывают версию в спецификации, что резко затрудняет подбор конфигурации.

Однако, т.к. целью всё таки является сборка системы AMD Fusion для Linux, то преодоление возможных проблем с контроллером будет решаться с помощью USB-Ethernet адаптера фирмы Apple, который уже неоднократно выручал при проблемах со встроенным сетевым интерфейсом, либо в дальнейшем отдельной сетевой платой, в единственный разъем PCI-e.

Т.к. я попробую загрузить свою существующую систему, которая кстати говоря работает на многих конфигурациях, я заранее установлю последнюю сборку ядра Linux в мою текущую конфигурацию.

Делается это так, в Ubuntu, в ручном режиме.
По ссылке находятся последние ежедневные сборки ядра Linux
http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/

Надо скачать 3 файла, для своей архитектуры (у меня amd64 - 64 битная Linux, в том числе и на Intel процессорах), в папку.
linux-headers...., linux-headers....all..., linux-image....

Я использовал терминал и команду wget, которой передал ссылки на файлы (из браузера).

После установка: sudo dpkg -i *.deb
Выполняяется в папке где лежат скачанные пакеты.
Потом перезагрузка.


"Плюсы" полученной конфигурации на процессоре AMD A10-6700 (магия букв APU):
1. Трудности, - а мы их любим
2. Неполная совместимость материнской платы с Linux - это хорошо, каждый дистрибутив будет иметь проблемы с сетью, с каждым надо будет отдельно разбираться
3. Отсутствие понятных явных преимуществ процессора AMD в Linux. Где существенное ускорение операций? Какие программы используют?
4. Завышенная цена, выше чем i3-3225.
5. Бедный выбор материнских плат форм-фактора mini-itx с чипсетем A85X.
6. Неясности со встроенной графикой. Будет вообще работать? Увижу рабочий стол? Будет нормальное ускорение Gnome Shell?
7. Нестандартная высота задней планки (backplate) на материнской плате, из-за чипа, что недаёт возможность крепить некоторые охладители (Noctua L9a). Правда у этого охладителя есть спец. крепление и именно для таких mini-itx плат, но только надо проверять при покупке, либо бесплатно получить у производителя, прислав ему подтверждение. Ну а суть простая, там просто шайбочки, увеличивающие высоту планки.
8. Куча непонятного мусорного ПО на прилагающемся диске, под Windows.



А ведь была и хорошая альтернатива на платформе Intel Ivy bridge:
Intel DQ77KB, две сетевые intel платы, mini-PCIe, So-Dimm и пр.

И всё это работает в Linux без особых проблем, с аппаратным ускорением и пр.


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

В дальнейшем планах установка Ubuntu 13.10, проверка дисплейного сервера Mir на открытых драйверах AMD/ATI. Проверка мультимониторной конфигурации, проверка стабильности работы в mini-ITX корпусе.

Первый запуск

Итак, первые впечатления после загрузки существующей версии Ubuntu Gnome 13.04, с ядром Linux 3.11 на материнской плате Asrock FM2A85X-ITX с процессором AMD A10-6700 Richland. Открытый стенд, т.к. корпус ещё не приехал и вместо охладителя - какая-то первая попавшаяся под  руку железка.
Комплектация материнской платы бюджетная (4 черных кабеля Sata, задняя плашка, диск с драйверами, книжка по установке), но главное - стильная наклейка Asrock. Это большой плюс, т.к. наклейки к OEM процессору не было, а это минус. Лучше бы к плате добавили наклейку (в черно-золотистых тонах), с указанием разъёмов на плате, как это делает Intel со своим платами. Неплохо было бы заднюю плашку с отверстиями под разъёмы также прокрасить и оформить получше.

Центральный вычислительный модуль (процессор) определился в BIOS(UEFI) нормально. Версия BIOS v.1.4.

Итак, страхи о том, что сетевой контроллер не поддерживается, прошли. Сеть работает. Драйвер используется встроенный в ядро r8169. Насколько стабильно будет, посмотрим.
Также работает выход и вход звука, но не все ещё выходы я смог проверить. Смущает уровень шума на микрофонном входе.

Аппаратное ускорение похоже не запустилось и X использует программный рендеринг (Gallium 0.4 on llvmpipe), т.е. fallback-режим. Правда он тоже достаточно быстрый и интерфейс отзывчивый, однако здесь нет преимуществ APU. Что заметно проигрывает в битве с Intel i3-3225, который работает и ускоряет сразу.

Загрузка с LiveCD Ubuntu daily 13.10 показала, что "там что-то есть" - Gallium 0.4 on AMD Aruba.
Aruba - это кодовое имя для графической части APU. А вот что это даёт, это надо собирать информацию. Да и путаница с этими именами пока присутствует. Мир маркетинга - мир лжи.

Неплохо, неплохо. Похоже это добротная материнская плата для Linux компьютера. В новой версии Ubuntu так вообще, всё будет работать "из коробки" - я надеюсь.

Итак, перспективы хорошие. Они правда, уже лет 10 "хорошие", всё ожидаем, когда же нормально заработает драйвер ATI/AMD на полную мощность.
Причём слабая поддержка открытого драйвера - это на совести руководства AMD. Которое, похоже не видит явного преимущества платформы Intel в Linux, с её открытым драйвером.
APU становиться магистральным направлением и слабая поддержка APU в Linux, это серьезный минус в конкурентной борьбе. Исходя из того, что AMD планирует распространять свои APU в том числе и на планшеты, а на планшетах будет работать Ubuntu Touch и пр. Ubuntu, а графический сервер Mir будет максимально использовать открытые драйверы, то наличие качественного открытого драйвера становиться определяющим, а будет ли вообще AMD в Linux. Сейчас, когда выйгрыш в производительности достигнут более быстрым центральным вычислительным модулем (процессором) ещё можно проводить старую политику выпуска закрытого драйвера для Linux и вяло поддерживать открытый драйвер. Но замедление роста производительности, проистекающее из технологических и архитектурных ограничений, происходящее в отрасли, выведет программную поддержку (драйверы, API и пр.) на первое место и тут Intel опять впереди.

Простыми словами, зачем мне процессор AMD, если даже не работает ускорение двумерной графики в Linux?




Из непосредственно замеченного улучшения - увеличение скорости отображения страниц в броузере Firefox, но что-то подсказывает, что это просто заслуга более быстрого процессора.

Включение поддержки управления питанием драйвера Radeon

Сделал по инструкции [см . Ресурсы п. 2].
Прописывание загрузочной опции ядра radeon.dpm=1 в файл /etc/default/grub и обновление загрузчика update-grub
Загрузка какого-то firmware, у меня получилось TAHITI_smc.bin (возможно это ошибка идентификации, потому что 13.10 использует Aruba) в папку /lib/firmware/radeon . В принципе, все эти файлы можно загрузить, чтобы ядро выбрало нужный.
Перезагрузка.
После этого в выводе dmesg видны power states (режимы питания)
и строка
[drm] radeon: dpm initialized

Включение температурного сенсора графического ядра

Прописывание загрузочной опции ядра radeon.hw_i2c=1
Использование sensors-detect

Непомогло.

Наблюдение за температурными датчика, тахометрами и напряжениями

Используется пакет lm-sensors
Установленный чип Nuvoton NCT5573D определяется как Nuvoton NCT6776F и что-то показывает, драйвер w83627ehf.


AMD UVD 3.2

Важный компонент, поддерживающий аппаратное декодирование видеоформатов MPEG4,
По наследству, поддерживает AMD UVD 1.0, AMD UVD 2.0, AMD UVD 3.0.
Позволяет декодировать H.264, VC-1.

Добавилось ускорение декодирования MPEG-2, MPEG-4 ASF (DivX, Xvid) и MVC (Blue-ray 3D).

Итого, процессор Richland имеет возможности аппаратного декодирования (ускорения) видеопотоков MPEG4 Part 10, MPEG4 part 2, MPEG 2, VC-1 (WMV9) и Linux поддерживает эту возможность, по состоянию на Январь 2015 года.


AMD VCE 1.0 или AMD H.264 encoder

Важный компонент, поддерживающий аппаратное кодирование в h.264. Использовать удобно для преобразования (транскодирования) MP4-файлов, для целевых устройств Android, Apple и т.п.
Поддержка включена в открытом 3d-драйвере, после открытия компанией AMD исходных кодов (Radeon VCE Code).
Требуется тестирование работоспособности.


Впечатления о корпусе Silverstone FT03-Mini

Шикарный корпус. В собранном виде выглядит отлично. Качественные алюминиевые панели, провода упрятаны.

Из особенностей, долгая сборка, "открути то, открути это".
Материнская плата Asrock в темно-золотистых тонах очень хорошо подходит к данному корпусу. В Комплекте к материнской плате - черные кабели SATA, двух видов, 4 штуки, так что "внутри темно".
Блок питания я поставил серого цвета, но это не проблема, т.к. его не видно, только когда снимаешь панели.

Корпусной вентилятор шумноват. Гул "басовитого" движка, однако не раздражающий, похож на автомобильный. Исправиться в следующей итерации возни с корпусом, когда поставлю регулятор, либо менять. Поток воздуха серьезный.
При нагрузке процессора, температура не поднялась выше 54-х градусов, в простое 33-34 градуса. Температура 2.5" диска - 28-30 градусов.
Обычный просмотр Интернет с помощью Firefox - 36-38 градусов.

Также шумят вентиляторы на процессорном охладителе и на блоке питания (тихо). Это всё требует окончательной доводки и полировки.

3.5 дюймовый винчестер достаточно просто снимается и устанавливается в крепёж. Крепеж на 2 винтах и легко доступен.
2.5 дюймовый винчестер помещенный в нижнюю корзину, обдувается проходящим потоком воздуха - очень хорошо и также легко доступен.
Системный ssd диск запрятан глубже, его просто так не достать, без разборки, надо откручивать кучу винтиков, а именно 2+4+4+4 = 14 штук. :-). И соответственно закручивать.

Корпус SilverStone FT03-mini - лучший из корпусов, с которыми я возился. Я не сборщик, я любитель.

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


Фотографии не привожу т.к. бардак на столе.


Замеченные неудобства

- Какие-то трудности загрузки диска Ubuntu Live посредством UEFI.
- Шумный корпусный основной вентилятор Silverstone Air Penetrator AP-141, 140x140 не поддерживает регулировку скорости (нет PWM), работает на 1500 об./мин., 30.1 dB(A), а материнская плата имеет 4-контактный разъём для корпусного вентилятора - При уменьшении скорости основного вентилятора, начинает шуметь вентилятор блока питания (80х80х15) при обычной нагрузке (Firefox)
- Используемый блок питания не имеет проводов (6 pin) для дополнительного питания видеокарты
- 10 сентября 2013 года. Заметил глюк связанный с контроллером сети. Если постоянно включить multicast ip-tv видео (телевизор), то после нескольких часов (более 5-6) происходит сброс системы и перезагрузка. Выяснилось это потому, что под обычными воспроизведением видео в цикле сброса не происходит. Это конечно минус сетевого контроллера. Осталось проверить нагрузку обычным трафиком.
- 12 сентября 2013 года. Компьютер работал 2 дня на загрузку и последовательное обновление Ubuntu версии 10.10 на 13.10 на одном из дисков, сбоя не было.

Выводы

APU, как концепция, не работает "из коробки" в системе Linux Ubuntu 13.04, перехожу на следующую.

Что же, попробую с течением времени воспользоваться всеми заложенными технологиями в процессор AMD APU A10-6700. Как первый этап - это использование VDPAU (да-да, ошибки нет) в VLC 2.2.x., GIMP использует ускорение OpenCL в некоторых фильтрах и пр.

Если же ничего не выйдет в обозримое время, то всегда есть возможность задействовать APU в Windows 8, а там множество программ показывающих преимущество APU [Ресурсы п.5].
Если не нужна ОС Windows, то связку (AMD Richland + mini-itx Asrock FM2A85X-ITX) можно преобразовать в сетевое хранилище NAS на платформе  AMD, просто докупив корпус с корзинами под винчестеры, а 7 портов sata III, позволят сделать очень хороший домашний NAS, хотя мне сейчас привлекателен новый HP Proliant Microserver Gen8.


Менять блок питания, либо добиваться тишины от его вентилятора
Уменьшать скорость корпусного вентилятора, либо менять.

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

Борьба красных с синими продолжается.

Ресурсы

1. https://unixblogger.wordpress.com/2011/10/18/the-pain-of-an-realtek-rtl8111rtl8168-ethernet-card/

2. How To Setup Radeon DPM On Ubuntu Linux. http://www.phoronix.com/scan.php?page=news_item&px=MTQyNDE

3. Wikipedia. Сравнение графических процессоров AMD. http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%BE%D0%B2_AMD

4. Wikipedia. http://en.wikipedia.org/wiki/Radeon_HD_6000_Series

5. AMD Developer central. Application showcase. http://developer.amd.com/community/application-showcase/

6.AMD Developer central. Open-source. http://developer.amd.com/tools-and-sdks/open-source/

7. Wikipedia. http://en.wikipedia.org/wiki/List_of_AMD_Accelerated_Processing_Unit_microprocessors

8. Wikipedia. Piledriver architecture. http://en.wikipedia.org/wiki/Piledriver_%28microarchitecture%29

9. Тестирование материнской платы Asrock FM2A85X-ITX. подробные фотографии микросхем. http://www.easycom.com.ua/mboard/asrock_fm2a85x-itx/?lang=ru

10. Overclockers.ru. Обзор и тестирование материнской платы Asrock FM2A85X-ITX. http://www.overclockers.ru/lab/54176_2/Obzor_i_testirovanie_materinskoj_platy_ASRock_FM2A85X-ITX.html

11.  AMD Technologies. http://www.amd.com/us/products/technologies/Pages/technologies.aspx

12. AMD A10-6700 info. http://www.cpu-world.com/CPUs/Bulldozer/AMD-A10-Series%20A10-6700%20-%20AD6700OKA44HL.html

13. Графический стек в Linux.  http://habrahabr.ru/post/148954/

14. Radeon DPM power states. http://www.botchco.com/agd5f/?p=57

15.  Тест Noctua L9a. http://www.overclockers.ru/lab/54761_4/Obzor_i_testirovanie_malogabaritnyh_kulerov_Ice_Hammer_IH-1500A_i_Noctua_NH-L9a.html

16. AMD UVD3. http://www.amd.com/Documents/UVD3_whitepaper.pdf

17. UVD. https://ru.wikipedia.org/wiki/Unified_Video_Decoder


вторник, 26 марта 2013 г.

О поддержке видеокарт Intel/AMD/NVidia в Linux. Часть I

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

Intel/AMD/NVidia - три крупнейших производителя видеокарт для персональных компьютеров. Все трое, мало уделяют внимания поддержке своего оборудования в Linux. Последнее время, движение в правильном направлении наметилось, но ещё не достаточно. Правильное направление - это качественные открытые графические драйверы, с поддержкой 2D-3D ускорения и всего того спектра возможностей, о которых я читаю в рекламных проспектах. Пусть это будет один производитель, но чтобы качественно.


Столкнувшись с практической неработоспособностью видеодрайвера для графического процессора Intel GMA3650, я решил внимательнее посмотреть на текущую ситуацию, с обеспеченностью графических процессоров работоспособными драйверами.

Март 2013 года.
Версии приведены по состоянию на март 2013 года. Дополнения вносятся в Августе 2013 года.
Оборудование, для настольных персональных компьютеров, доступное в розницу в России, г. Воронеж, на момент написания заметки.


AMD - Advanced micro devices

Сайт компании: http://www.amd.com/

Фирменный драйвер (closed-source) компании AMD, для её видеокарт, носит название Catalyst
Общая страница технологии Catalist на сайте компании: http://www.amd.com/us/products/technologies/amd-catalyst/Pages/catalyst.aspx


Процессор APU: AMD Trinity A10-5800K, встроенный граф.ускоритель Radeon 7660D.

Последний отдельный графический ускоритель: AMD Radeon HD 7950
Последняя, наиболее производительная серия: AMD Radeon HD 7000 Series (codename Southern Islands)
Последний наиболее производительный ускоритель: AMD Radeon HD 7970 GHZ Edition
7000 серия обеспечивает аппаратную поддержку спецификации OpenGL 4.2, OpenCL 1.2

Привходящее оборудование для настольных персональных компьютеров

Привходящий APU: AMD Richland A10-6800K, встроенный графический ускоритель Radeon HD 8670D. лето 2013 года
Привходящая серия: AMD Radeon HD 8000 Series, 4 квартал 2013 года
Привходящий, наиболее производительный ускоритель: AMD Radeon HD 8970 GHZ Edition

Особенности текущей политики AMD - ежегодное обновление линейки процессоров APU.


Последняя версия фирменного драйвера Catalyst для Linux:
13.4 от 29 мая 2013 года.
13.1 от 17 января 2013 года.
Драйвер ранее, в эпоху ATI, назывался fglrx.

Привходящая версия драйвера Catalyst для Linux: 13.8 beta
Ссылка на страницу последнего драйвера для Linux: http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx


Общая ссылка на страницу выбора драйвера: http://support.amd.com/us/gpudownload/Pages/index.aspx


Ссылка на страницу предыдущих версий драйвера для Linux:
http://support.amd.com/us/gpudownload/embedded/previous/Pages/embedded_linux.aspx

Основной способ установки: распаковка и запуск скрипта инсталляции, из-под суперпользователя.


Открытый драйвер (open-source), для видеокарт AMD и процессоров AMD APU



Поддержка графических ускорителей AMD Radeon, в оконной системе X Window, в основном обеспечивается драйвером с названием Radeon (x86-video-ati)
Страница с описанием драйвера Radeon: http://www.x.org/wiki/radeon
Последние изменения драйвера: Версия 7.1.0 от 30 января 2013 года, добавлена полная поддержка ускорения двумерной графики (2D acceleration) S.Islands, т.е. серии AMD Radeon HD 7000 Series.
Из интересного: Поддержка AMD APU Trinity добавлена 28 марта 2012 года

Страница со сводной таблицей возможностей, реализованных в открытом драйвере Radeon: http://www.x.org/wiki/RadeonFeature

Для 3d-ускорения видеокарт 7000 и 8000 серии используются т.н. Gallium-драйвер - RadeonSI (сокр. Radeon Southern Islands). Очень базовая поддержка.
Открытый драйвер для встроенной графики процессора AMD APU Trinity (Radeon HD 7660D) в настоящее время разрабатывается.



Intel - Integrated Electronics

Сайт компании: http://www.intel.com/

Последнее кодовое наименование процессоров: ivybridge
Последнее семейство настольных процессоров: Intel Core i7 3-d generation
Последняя серия встраиваемых графических ускорителей Intel: Intel HD Graphics 4000

Привходящее кодовое наименование: haswell
Привходящее кодовое наименование настольных процессоров: haswell-dt
Привходящее семейство настольных процессоров: Intel Core i7,i5,i3 4-d generation
Привходящая серия встраиваемых графических ускорителей Intel: Intel HD Graphics 4600 ( GT2), Intel HD Graphics 5200

Открытый драйвер для оконной системы X Window: x86-video-intel
Последняя версия: 2.21.5 от 20 марта 2013 года

Страница со сводной таблицей возможностей драйвера x86-video-intel: http://www.x.org/wiki/IntelGraphicsDriver

Открытый драйвер x86-video-intel поддерживает SNA/UXA ускорение двумерной графики.



Список наборов микросхем графических ускорителей, поддерживаемых
открытым драйвером Intel: https://01.org/linuxgraphics/about/supported-hardware

Увы, в этом списке, не указана поддержка Intel GMA3650, которая входит в процессор Intel Atom N2800, установленный на материнской плате Intel DN2800MT, на которой эта заметка написана.


NVidia

Сайт: http://www.nvidia.com/

Страница загрузки фирменных драйверов для видеокарт NVidia:
 http://www.nvidia.com/object/unix.html

Последняя версия фирменного драйвера nv: 310.40 от 8 марта 2013 года

Последний отдельный графический ускоритель для настольных компьютеров: Geforce GTX Titan
Аппаратно поддерживает Open GL 4.3, OpenCL, CUDA


Открытый драйвер x86-video-nouveau

Страница с описанием драйвера Nouveau: http://nouveau.freedesktop.org/wiki/
Последние изменения драйвера: 1.0.6
Поддерживается ускорение двумерной графики (2D EXA).
Технология Nvidia Optimus не поддерживается в настоящее время свободным драйвером neuveau.

nouveaufb - драйвер для виртуальной консоли.



Технологии, графические подсистемы, прикладные интерфейсы

X.Org

X.Org - свободная реализация оконной системы X Window system.
Сайт: http://www.x.org/wiki/


Чтобы узнать версию установленного X сервера:
$ X -version

X.Org X Server 1.13.3
Release Date: 2013-03-07
X Protocol Version 11, Revision 0

Журнал загрузки X сервера: /var/log/Xorg.0.log

Mesa

Mesa - открытая реализация интерфейса прикладного программирования трехмерной графики (API OpenGL), в виде библиотеки.

Сайт разработчика спецификации OpenGL: http://www.khronos.org/opengl

Последняя версия спецификации: OpenGL 4.3, OpenGL Shading Language 4.30, от 6 августа 2012 года


Сайт библиотеки Mesa: http://www.mesa3d.org/
Последняя версия: 9.2 от 27 августа 2013 года

Уровень поддержки спецификации OpenGL
Для достижения полной поддержки спецификации OpenGL 3.2 осталось реализовать язык "shader language 1.5" - GLSL 1.5.


Проверка версии Mesa в системе Ubuntu 13.04 установленной на плате Intel DN2800MT - команда glxinfo

gimmor@oko$ glxinfo | grep "OpenGL"
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 0x301)
OpenGL version string: 2.1 Mesa 9.0.3
OpenGL shading language version string: 1.20
OpenGL extensions:

Откуда сразу становиться понятно, что версия в пакетах Ubuntu - не самая последняя, но устаревающая. Используется программный отрисовщик трехмерной графики. Поддерживается спецификация OpenGL версии 2.1, shading language 1.2.

Помимо OpenGL, библиотека Mesa поддерживает API OpenGL ES 1 и ES 2, OpenVG и EGL.

Gallium3D

Gallium3D - унифицирующий слой API. В настоящее время - часть исходных кодов библиотеки Mesa.
Унификация прикладного интерфейса породила термин Gallium-драйвер, это та часть, которая отличается, - своя для каждого графического ускорителя.

EXA 2D acceleration

Стандартный способ ускорения двумерной графики графическим ускорителем,  используемый в X сервере.
В настоящее время, большинство графических драйверов X Windows реализуют EXA ускорение.

XAA XFree86 Acceleration Architecure 

Устаревший способ ускорения двумерной графики - XAA, удалён из базы исходных кодов, начиная с версии X.Org 1.13.



SNA/UXA 2D acceleration

Способы ускорения двумерной графики используемые в открытом драйвере Intel для X Window.
UXA - первый реализованный способ, SNA - его дальнейшее развитие.
SNA - Sandy Bridge New Acceleration

Отличительная черта UXA - использование GEM (Graphics Execution Manager). GEM включен в состав ядра Linux и используется для поддержки работы драйвера intel.
Отличие SNA от UXA в переработанной внутренней структуре.


CLAMOR 2D acceleration - 2D over OpenGL

Ускорение отрисовки двумерной графики (2d), посредством 3d-драйвера.
Впервые введён в кодовой базе открытого драйвера x86-video-intel.

Новейший RadeonSI также поддерживает такую возможность.
Опция «AccelMethod» «glamor» в секции Device конфигурационного файла xorg.conf


OpenCL - Open Computing Language

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

OpenVG
Ускорение векторной графики.
Сайт: http://www.khronos.org/openvg/


LLVM Low lever virtual machine

Унифицирующая технология компиляторов.
В Mesa используется программным ускорителем llvmpipe.


LLVMPipe

LLVMPipe - "пипе - ага, вот откуда пошла пипетка" - программный3d-растеризатор, как замена аппаратному ускорителю в графическом процессоре. Используется в т.н. "fallback" - безопасном режиме, при неработоспособности аппаратуры.

http://www.mesa3d.org/llvmpipe.html



VA-API Video acceleration application program interface

VA-API (Video acceleration application program interface) - открытый прикладной интерфейс, библиотека, обеспечивающая аппаратное ускорение декодирования видеоформатов.

http://www.freedesktop.org/wiki/Software/vaapi

Предложен фирмой Intel, в её свободных драйверах для своей встроенной графики.


VDPAU Video Decode and Presentation API

Наиболее поддерживаемый прикладной API для ускорения декодирования видеоформатов.
Предложен NVidia. Выступает как альтернатива иным прикладным интерфейсам ускорения декодирования видеоформатов (см. выше. VA-API).

XvBA X-Video Bitstream Acceleration

Открытый (open-source) прикладной API для ускорения декодирования видеоформатов, но работающий на закрытом драйвере AMD/ATI (Catalyst, быв. fglrx), предложенный фирмой AMD.
Может выступать как исполняющаяся часть VA-API.


VESA

VESA - стандартный графический драйвер, без ускорения.

FB Framebuffer
FB графический драйвер виртуальной консоли


AIGLX

$ cat /var/log/Xorg.0.log | grep AIGLX
[    19.390] (==) AIGLX enabled
[    19.826] (II) AIGLX: Screen 0 is not DRI2 capable
[    19.826] (II) AIGLX: Screen 0 is not DRI capable
[    19.863] (II) AIGLX: Loaded and initialized swrast

Direct rendering - способ прямого доступа к аппаратуре графического ускорителя

Изначально, ядро Linux, не разрешало прямого доступа к аппаратуре, в силу архитектуры своих корней Unix. Задумывалось скрыть оборудование от пользователя слоем абстрации. Однако, позже это вызвало трудности использования графических ускорителей в пользовательском пространстве, что и привело к созданию интерфейса DRI.

DDX

Драйвер внутри X Window



DRI - Direct Rendering Infrastructure

Страница проекта DRI: http://dri.sourceforge.net/

DRI2 - Direct Rendering Infrastructure  2

Страница проекта DRI2: http://www.x.org/wiki/DRI2/
Новая архитектура DRI.

DRM - Direct Rendering Manager
DRM - часть инфраструктуры DRI, находится в ядре.


LibDRM

Часть системы X Window, ответственная за прямой доступ к аппаратному ускорению.


KMS - Kernel Mode Settings

Mode settings - установка режима работы видеокарты - резрешения и числа цветов (битность, глубина цвета), выходов (outputs).

KMS в настоящее время поддерживают графические драйверы radeon, intel, nouveau

Используется для установки консоли высокого разрешения. Стандартная консоль имеет размер 80 символов на 25 строк.


GRUB2 - загрузчик (bootloader)

Опции, передаваемые ядру при загрузке (через GRUB):
text - загрузка в текстовом режиме
xforcevesa - принудительная (силой) загрузка драйвера стандарта VESA. Использовать когда невозможно загрузить обычный видеодрайвер. Т.е. это похоже на безопасный режим. Любая видеокарта поддерживает VESA режимы. Однако не будет 2D-ускорения.
nomodeset - отключение установки режимов, посредством KMS
video - установки режимов

Утилита xrandr

Управление выводами видеокарты, режимами, цветом,  компоновкой многомониторных конфигураций. Часть системы X Window.

Последняя версия: 1.2
Привходящая версия: 1.4


Wayland

Новый графический сервер. Запущен в разработку компаниями Intel и Reg hat. (синий волк и красная шапочка).

Страница http://wayland.freedesktop.org/
Последняя версия: 1.2


XWayland

Слой интеграции между X.Org и Wayland.

Mir

Новый собственный графический сервер (стэк) от Canonical.
Основное преимущество - работа на разнообразных платформах, от ПК до телефонов.
Ожидается и уже работает в Ubuntu 13.10.


XMir

Прослойка, позволяющая запускать приложения оконного сервера X, на сервере Mir.


NVidia Optimus

Технология переключения видеокарт "на лету".


bumblebee-nvidia

Поддержка технологии NVIDIA Optimus с использованием несвободного драйвера NVIDIA.


Unified Video Decoder UVD

В графических процессорах AMD - блок аппаратного декодирования битовых потоков, закодированных в стандартах H.264, AVC, VM-1 и пр.

В открытых драйверах Radeon появляется поддержка UVD.


VCE Video Codec Engine

В новейших графических процессорах AMD (AMD Radeon HD 7970) - блок аппаратного кодирования видеопотоков (VCE).
Данный аппаратный модуль присутствует и в гибридных процессорах AMD APU.


DPM Dynamic Power Management 

Технология управления потреблением питания, а значит и скоростью графической части в процессорах AMD APU.
Поддержка недавно введена в ядро Linux 3.11.
Обеспечивает существенное увеличение графической производительности встроенного в APU графического ядра, по сравнению с предыдущими.

Опция ядра: radeon.dpm=1

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



libglvnd

Библиотека-диспетчер (Vendor-Neutral GL Dispatch Library). Прослойка позволяющая иметь одновременно в системе различные реализации OpenGL, от различных поставщиков. По идее, если я правильно понял, можно будет иметь видеокарты от AMD и NVidia в одной системе.

Linux OpenGL ABI

Исходные коды и более развернутое описание libglvnd: https://github.com/NVIDIA/libglvnd


Intel QuickSync

Аппаратная технология Intel для ускорения кодирования/декодирования видеоформатов.
Официально, в операционной системе Linux поддержка Intel QuickSync не осуществляется. 
Существуюет свободный декодер видеоформатов поддерживающий Intel QuickSync decoder.


Выводы. Intel vs AMD

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

Для экспериментов с поддержкой графики AMD - выбор APU AMD. Жаль, AMD выпускает процессоры дешевле Intel, с хорошей встроенной графикой, но не ориентируется на аудиторию Linux - это маркетинговый просчёт, либо специальные соглашения с "оффтопик". А потребность существует, огромна и нормальный открытый драйвер для APU позволит очистить склады моментально. Увы, - "денег не надо" ©Д.Е.Г.

Высокая частота обновления графических процессоров не оставляет шансов устаревшим версиям на полноценную поддержку, в результате получается - новые процессоры ещё не поддерживаются, а старые уже не поддерживаются. ИМХО.

Для моих целей (разработка) выбор может быть любым. И только открытый драйвер.


Ресурсы

. http://en.wikipedia.org/wiki/Radeon_HD_7000_Series
. Запуск поддержки Glamor: http://phoronix.com/forums/showthread.php?78512-Running-radeonsi-on-Ubuntu-13-04
. О текущей поддержке спецификации OpenGL в свободной библиотеке Mesa/Gallium3D. http://www.phoronix.com/scan.php?page=news_item&px=MTMzMzI
. Форум Ixbt - i3 vs A10, http://forum.ixbt.com/topic.cgi?id=8:24062
- Компания AMD открыла код для ускорения декодирования видео силами UVD-декодеров GPU. http://www.opennet.ru/opennews/art.shtml?num=36571
- О технологии Intel QuickSync. http://ru.wikipedia.org/wiki/Intel_Quick_Sync_Video
- Свободный декодер на основе Intel QuickSync. http://sourceforge.net/projects/qsdecoder/
- AMD Fusion Linux Gallium3D Performance Has Improved A Lot. http://www.phoronix.com/vr.php?view=19007
- http://en.wikipedia.org/wiki/X-Video_Bitstream_Acceleration
- NVIDIA Publishes Vendor-Neutral GL Dispatch Library. http://www.phoronix.com/scan.php?page=news_item&px=MTQ0NzU