Страницы

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

суббота, 7 января 2017 г.

Intel DH77KC Nuvoton NCT6776D sensors. Напряжения, температуры, вентиляторы в Linux. Настройка и мониторинг

Распаковав из ангара,в терминах Eve Online, свою давнюю систему, построенную на платформе Intel ® H77 Express Platform и процессоре Intel 3-поколения.
Как же прекрасен вид, раритетной десктопной платы Intel - таких сейчас уже не выпускают. Фанатом я был и остаюсь как AMD, так и Intel. Поэтому две платформы, при полном развёртывании позволяют "чудить как хочешь", "мерить что хочешь" и на собственном опыте, а не по обзорам заметить все тонкости.
Сейчас, это "старое" железо (3-4 летней давности) входит в стадию зрелости и поддержка в Linux приближается к 100%.

Решил провести стандартный цикл обслуживания и настройки. Благо для платформы процессора AMD, я это сделал недавно, в заметке "Asrock FM2A85X-ITX Nuvoton NCT5573D sensors. Напряжения, температуры, вентиляторы в Linux".

Первый запуск не удался. Железная планка завалилась и замкнула контакты. Но, сработала защита от замыкания, очень качественного и бесшумного блока питания.
Модуль памяти плохо сидел в слоте. Вообщем, кантовка компьютерных систем не обходится без последствий. Поправил и запустил свою текущую систему Fedora 25.
Стартовала шустрее и плавнее, чем на платформе AMD, это проявляется в некоторых задержках, чуствуемых мною. Т.е. процессор пошустрее, хотя в том же классе.

Итак, lm_sensors - пакет мониторинга напряжений, температур, вентиляторов. Установлен и настроен уже в этой системе Fedora, надо только добавить специфический конфигурационый файл, для сенсоров этой конкретной платы.

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

Intel DH77KC sensors, lm_sensors


Подопытная плата: Intel DH77KC + Intel Core i3-3225 with Intel HD4000 graphics.

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

Чип мониторинга установлен здесь: Nuvoton NCT6776D

Подключено большое количество сенсоров, вентиляторов и термодатчиков.
Реализована зона ACPI Thermal - это фейрверк уважения к разработчикам компании Intel.
Эта плата запускает старые версии Mac OS X без переделки.

По части мониторинга - очень шикарная обстановка. Однако проблема настройки присутствует и её надо довести до ума.

Чип Nuvoton NCT6776D определился по другому адресу (nct6776-isa-0a00), так что конфликта со старой настройкой нет и создается новый специфический конфигурационный файл для этой платы. Этот адрес и будет ключём выбора нужной настройки в зависимости от платформы на которой загружена.

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

nct6776-isa-0a00
Adapter: ISA adapter
Vcore:                  +1.01 V  (min =  +0.00 V, max =  +1.74 V)
in1:                    +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
AVCC:                   +3.42 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
+3.3V:                  +3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in4:                    +1.05 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:                    +1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in6:                    +1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
3VSB:                   +3.18 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
Vbat:                   +3.26 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
fan1:                   423 RPM  (min =    0 RPM)
fan2:                  1078 RPM  (min =    0 RPM)
fan3:                   535 RPM  (min =    0 RPM)
fan4:                     0 RPM  (min =    0 RPM)
SYSTIN:                 +37.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = CPU diode
CPUTIN:                 +40.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = CPU diode
PECI Agent 0:           +33.0°C  (high = +80.0°C, hyst = +75.0°C)
                                 (crit = +105.0°C)
PCH_CHIP_CPU_MAX_TEMP:  +48.0°C  (high = +80.0°C, hyst = +75.0°C)
PECI Agent 1:            +0.0°C  (high = +80.0°C, hyst = +75.0°C)
                                 (crit =  +0.0°C)
PCH_CHIP_TEMP:           +0.0°C 
intrusion0:            ALARM
intrusion1:            ALARM
beep_enable:           disabled

acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +106.0°C)
temp2:        +29.8°C  (crit = +106.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +34.0°C  (high = +85.0°C, crit = +105.0°C)
Core 0:         +32.0°C  (high = +85.0°C, crit = +105.0°C)
Core 1:         +34.0°C  (high = +85.0°C, crit = +105.0°C)


Видно, что сработали разные типы сенсоров.

Процитирую самого себя из [], поправив сведения на актуальные.

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

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

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


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

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

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

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


Замечу, что в моей Intel-системе, применяется новый бесшумный блок питания Chieftec CPS-500C, который соответствует спецификациям "ATX v2.3+EPS12V". Спецификация ATX v2.3 задает диапазон изменения питающих напряжений для большей их части (кроме минус -12V), в пределах 5 процентов и блок из них не выходит, хотя спецификация ATX v2.3 разрешает 10 процентов при пиковой нагрузке, для +12V.

Итак, конфигурационный файл для материнской платы Intel DH77KC, с процессором Intel I3-3225  и блоком питания Chieftec CPS-500C.

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

Содержимое файла /etc/sensors.d/intel-DH77KC.conf

# Материнская плата: Intel DH77KC
# Процессор: Intel i3-3225 (Ivy Bridge)
# Блок питания: Chieftec CPS-500C (ATX 2.3+EPS12V)
# Чип мониторинга: Nuvoton NC6776D (исп. драйвер NCT6776D, Kernel driver NCT6775)
# Дата: 7 января 2017 года
# сервер: blue
# Поместить этот файл в /etc/sensors.d/
# URL: http://gimmor.blogspot.com/2017/01/intel-dh77kc-nuvoton-nct6776d-sensors.html
#

# Суженый выбор чипа, для платы Intel DH77KC, после определения sensors-detect
chip "nct6776-isa-0a00"

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

ignore  intrusion1

# отключаем сирену
ignore beep_enable


ignore temp0
ignore temp3
ignore temp4
ignore temp5
ignore temp6
ignore temp9
# temp10 - показывать 0 градусов
ignore temp10


ignore fan4


# Описание взято из описания чипа Nuvoton NCT6776D
# Чип мониторинга Nuvoton NCT6776D содержит 9 аналоговых входов, присоединённых к 8-битному АЦП (256 градаций измерений)
# Максимальное напряжение на входе АЦП: 2.048 V (256 шагов x 8mV = 2.048V)
# Диапазон напряжений ATX стандарта в соответствии с ATX 2.3+EPS12V (3.2.1 DC Voltage Regulation)
# 4 внешних входа присоединённых к (VIN0,VIN1,VIN2 VIN3)
# Их соответствие программным обозначениям in.. может меняться и быть на усмотрения производителя платы
# Из VisualBIOS вычислено

# Для домашнего использования. Значения и привязки нужно проверять
   
    # in0 - Processor core, VID
    # Определена благодаря технологии Intel SpeedStep (меняется напряжение в широких пределах)
    # Также определена по обычаю in0 - CPUVCORE
    label in0 "CPU #1 Core, VID"
    # Границы заданы в соответствии со спецификацией (datasheet) на процессор 3-поколения
    # Desktop 3rd Generation Intel ® CoreTM Processor Family, Desktop Intel ® Pentium ® Processor Family,and Desktop Intel ® Celeron ® Processor Family datasheet - Volume 1 of 2
    # 7.10.1 Voltage and Current Specifications
    set in0_min 0.25
    set in0_max 1.52
 

    # in4 - PCH
    # in4 - PCH вычислено, т.к. в BIOS CPU 1 Core 1.04 и PCH 1.04
    # Границы напряжения для PCH?
    # Границы напряжений 0.998-1.102
    # В соотв. со спецификацией на чипсет Intel H77 Express, но она уже недоступна
    # Настроена защита границ 10 мВ
    label in4 "PCH"
    set in4_min 0.998+0.010
    set in4_max 1.102-0.010

    label in1 "ATX +12V"
    set in1_min 11.4
    set in1_max 12.6
    compute in1 12*@, @/12   

    # in2 - Линия питания +3.3V
    label in2 "ATX +3.3V"
    set in2_min 3.14
    set in2_max 3.47

    # in3 - Линия питания +3.3VSB (±5%)
    label in3 "ATX +3.3V StandBy"
    set in3_min  3.14
    set in3_max  3.47


    # in6 - Линия питания +5VDC (±5%)
    # (вычислено по совпадениям со значениям BIOS)
    label in6 "ATX +5V"
    set in6_min  5-(5*5/100)
    set in6_max  5+(5*5/100)
    compute in6 5*@, @/5


    # in5 - Линия питания модулей памяти
    # in5 - DDR3 SDRAM, установлено точно, благодаря разгону в BIOS
    # JEDEC standard 1.5V ± 0.075V Power Supply
    # 10.1 Recommended DC Operating Conditions
    # VDD Min 1.425, Max 1.575
    # При разгоне, напряжение выходит за пределы стандарта и срабатывает тревога
    # Данные взяты из спецификации на модель памяти Samsung 4G M378B5173CB0-CK0
    label in5 "DDR3 SDRAM memory, VDD"
    compute in5 1.5*@, @/1.5
    set in5_min  1.5-0.075
    set in5_max  1.5+0.075



# Напряжение часовой батареи (RTC), обычно CR2032 li-Ion
# Номинальное напряжение 3В
# Напряжение разряженной батареи 2В
# Диапазон 2-3.6 В
# Батарейки-то у нас, неопределена

    # in7
    # in7 показывает напряжение в диапазоне, похожем на диапазон 3.3В
    # in7 показывает напряжение близкое к нижней границе диапазона 3.3В
    # Вполне возможно, вывод in7 мониторит напряжение батареи RTC
    label   in7            "RTC CR2032 battery?"
    set     in7_min        2
    set     in7_max        3.6

    # in8
    # in8 показывает напряжение в диапазоне, похожем на диапазон 3.3 В
    label   in8            "in8?"
    set     in8_min        3.14
    set     in8_max        3.47


# Температуры
# Intel i3-3225


# С температурами просто, описание к плате конкретно указывает где установлены
# температурные диоды (sensor type = CPU diode)
    # CPUTIN
    label temp2 "CPU Die temperature"
    set   temp2_max      85
    #set   temp2_crit     105
    set   temp2_max_hyst 80
    # SYSTIN
    label temp1 "Voltage regulator temperature"
    set   temp1_max      85
    set   temp1_max_hyst 80
   
    #PECI Agent 0
    label temp7 "Memory temperature"
    set   temp7_max      80
    # temp8 - "PCH_CHIP_CPU_MAX_TEMP"
    # Устаовлено по совпадению температур
    label temp8 "PCH"
   


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

    # Вытяжной задний системный вентилятор
    label   fan1           "4-pin outlet fan (3-pin installed)"
    set     fan1_min       400
    # Процессорный вентилятор
    label   fan2       "4-pin processor fan"
    set     fan2_min       600
    # Притяжной передний системный вентилятор
    label   fan3       "4-pin inlet fan (3-pin installed)"
    set     fan3_min       400


# Поддержка датчика вскрытия корпуса

label intrusion0 "Case was opened"
set intrusion0_alarm 0
set intrusion0_beep 0




Вывод команды sensors, после настройки, для материнской платы-доски Intel  DH77KC.


 nct6776-isa-0a00
Adapter: ISA adapter
CPU #1 Core, VID:                    +0.82 V  (min =  +0.25 V, max =  +1.52 V)
ATX +12V:                           +12.29 V  (min = +11.42 V, max = +12.58 V)
ATX +3.3V:                           +3.41 V  (min =  +3.14 V, max =  +3.47 V)
ATX +3.3V StandBy:                   +3.41 V  (min =  +3.14 V, max =  +3.47 V)
PCH:                                 +1.05 V  (min =  +1.01 V, max =  +1.10 V)
DDR3 SDRAM memory, VDD:              +1.60 V  (min =  +1.43 V, max =  +1.57 V)  ALARM
ATX +5V:                             +5.16 V  (min =  +4.76 V, max =  +5.24 V)
RTC CR2032 battery?:                 +3.18 V  (min =  +2.00 V, max =  +3.60 V)
in8?:                                +3.26 V  (min =  +3.14 V, max =  +3.47 V)
4-pin outlet fan (3-pin installed):  432 RPM  (min =  400 RPM)
4-pin processor fan:                1090 RPM  (min =  600 RPM)
4-pin inlet fan (3-pin installed):   544 RPM  (min =  400 RPM)
Voltage regulator temperature:       +38.0°C  (high = +85.0°C, hyst = +80.0°C)  sensor = CPU diode
CPU Die temperature:                 +38.5°C  (high = +85.0°C, hyst = +80.0°C)  sensor = CPU diode
Memory temperature:                  +32.0°C  (high = +80.0°C, hyst = +75.0°C)
                                              (crit = +105.0°C)
PCH:                                 +53.0°C  (high = +80.0°C, hyst = +75.0°C)
Case was opened:                    ALARM

acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +106.0°C)
temp2:        +29.8°C  (crit = +106.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +35.0°C  (high = +85.0°C, crit = +105.0°C)
Core 0:         +31.0°C  (high = +85.0°C, crit = +105.0°C)
Core 1:         +35.0°C  (high = +85.0°C, crit = +105.0°C)


Видно, что памяти поднято напряжение, что позволило определить смысл входа сенсора in5, а также сигнал, что напряжение вышло из допустимого стандартом JEDEC.

Видно, что напряжение процессора регулируется.

Памятка


Напряжения вида, 1.01, 102, 1.03 - это середина диапазона АЦП и они установлены так, чтобы наблюдать как повышение напряжений, так и понижение. Разумно, только с применённым коэффициентом не очень понятно, ну и как обычно что куда присоединено.


Температура памяти, большей частью меньше, чем у регулятора напряжения  (видно в BIOS), это позволило понять где-какое значение.

Отсюда фишка - охлаждение сжатым воздухом подозрительных мест. Может быть как-нибудь.

Мультиметром замерил доступные напряжения, через Molex-разъём.
Получил значения 12.21 для 12 В, 5.17 для 5 В линий.

В руководстве к плате "Intel® Desktop Board DH77KC Technical Product Specification" указана фраза:
"Power monitoring of +12 V, +5 V, +3.3 V, 3.3 Vstandby, V_SM, +VCCP, and PCH VCC".
Откуда можно предполжить, что V_SM - это напряжение памяти
VCCP - похож на процессор, а
PCH VCC - это южный мост или Platform Controller Hub, чипсета H77.

Благодаря возможности менять напряжение питания для памяти, было установлено соответствие для входа измерения напряжения памяти и коэффициент. После этого, значения VisualBIOS, sensors стали синхронизированы.

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

Заметил, что Intel подгоняет номинал напряжения к середине АЦП, а AsRock как пойдет.
 
※※※

Ресурсы



1. Intel VisualBIOS wiki. https://sites.google.com/site/visualbios/
2. Intel® Desktop Board DH77KC Technical Product Specification. см. Google
3. ATX v2.3. см. Google
4. Asrock FM2A85X-ITX Nuvoton NCT5573D sensors. Напряжения, температуры, вентиляторы в Linux. http://gimmor.blogspot.ru/2017/01/asrock-fm2a85x-itx-nuvoton-nct5573d.html

※※※
 

Ivy Bridge Intel GT2 graphics. Быстрый тест на открытой реализации OpenCL - beignet

Для платформы Intel, на базе чипсета Intel H77 Express + процессор Intel IvyBridge i3-3225 со встроенным графическим ядром HD4000 (GT2), решил посмотреть состояние свободной реализации OpenCL для ускорения на графическом ядре GT2.


Beignet - это сводобная реализация спецификации OpenCL, для ускорения вычислений на встроенных графических процессорах фирмы Intel [1].
Начиная с IvyBridge и старше.
Моя платформа поддерживает эту возможность, вот её я и проверю.


Операционная система: Fedora 25 + стандартные обновления

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


Beignet - ускорение на встроенном графическом ядре


После установки вывод команды clinfo -l:

$ clinfo -l

Platform #0: Intel Gen OCL Driver
 `-- Device #0: Intel(R) HD Graphics IvyBridge GT2
Platform #1: Portable Computing Language
 `-- Device #0: pthread-Intel(R) Core(TM) i3-3225 CPU @ 3.30GHz
Platform #2: Clover


Появилась платформа №0 Intel Gen OCL Driver, с устройством "Intel(R) HD Graphics IvyBridge GT2"

Платформа №1 - это для ускорения на обычных процессорах, доступна через POCL и она теперь у меня присутствует постоянно, чтобы иметь возможность.

Видны остатки (№2) от установки под AMD, но не работают, что удивительно, пока нет плат с поддержкой и AMD и Intel процессоров.


Быстрый тест, посредством clpeak:


clpeak -p 0
No protocol specified
No protocol specified
No protocol specified
No protocol specified
No protocol specified
No protocol specified
No protocol specified
No protocol specified

Platform: Intel Gen OCL Driver
No protocol specified
No protocol specified
No protocol specified
  Device: Intel(R) HD Graphics IvyBridge GT2
    Driver version  : 1.2 (Linux x64)
    Compute units   : 16
    Clock frequency : 1000 MHz

    Global memory bandwidth (GBPS)
      float   : 10.65
      float2  : 10.99
      float4  : 11.19
      float8  : 11.34
      float16 : 11.15

    Single-precision compute (GFLOPS)
      float   : 189.52
      float2  : 199.95
      float4  : 197.56
      float8  : 194.70
      float16 : 187.21

    No double precision support! Skipped

    Transfer bandwidth (GBPS)
      enqueueWriteBuffer         : 11.28
      enqueueReadBuffer          : 4.96
      enqueueMapBuffer(for read) : 1789569.62
        memcpy from mapped ptr   : 4.96
      enqueueUnmap(after write)  : inf
        memcpy to mapped ptr     : 4.94

    Kernel launch latency : 13.41 us


POCL - ускорение на процессоре Intel i3-3225


Ну и тест ускорения на процессоре общего назначения, посредством POCL:

$ clpeak -p 1

Platform: Portable Computing Language
  Device: pthread-Intel(R) Core(TM) i3-3225 CPU @ 3.30GHz
    Driver version  : 0.13 (Linux x64)
    Compute units   : 4
    Clock frequency : 3300 MHz

    Global memory bandwidth (GBPS)
      float   : 9.21
      float2  : 10.15
      float4  : 10.59
      float8  : 10.19
      float16 : 9.89

    Single-precision compute (GFLOPS)
      float   : 25.59
      float2  : 4.35
      float4  : 13.06
      float8  : 25.98
      float16 : 51.14

    Transfer bandwidth (GBPS)
      enqueueWriteBuffer         : 11.55
      enqueueReadBuffer          : 4.92
      enqueueMapBuffer(for read) : 766958.44
        memcpy from mapped ptr   : 4.91
      enqueueUnmap(after write)  : inf
        memcpy to mapped ptr     : 4.88

    Kernel launch latency : 0.54 us


Заключение


Видно заметное ускорение расчётов с одиночной точностью на встроенном графическом ядре Intel IvyBridge GT2.
Это радует, т.к. приближает параллельные вычисления к обычному домашнему пользователю.


※※※
 

Ресурсы


1. Beignet. https://www.freedesktop.org/wiki/Software/Beignet/

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


※※※

пятница, 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

※※※

среда, 14 октября 2015 г.

Вещи с подключением, с платой Intel Edison Internet of Thins. Часть I


Первоначальная настройка прошивки Intel Edison


Для операций используется настольная операционная система Linux Mint MATE 17.2 64-bit, установленная на плате Intel DN2800MT. Данная связка нивелировала, для пользователя, проблемы материнской платы с производительностью видеоподсистемы, за счёт использования переработанной среды Gnome 2 - MATE.

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

Пошаговый мастер установки Intel Edison. https://software.intel.com/ru-ru/iot/library/edison-getting-started


Установка Flash Tool Lite


Действуем в соответствии с https://software.intel.com/en-us/get-started-edison-linux-step2


1. После подсоединения платы Intel Edison к порту USB, она представлена в системе как обычный flash-накопитель (usb-mass-storage),  с меткой Edison.

2. Удалить все файлы на томе Edison
cd /media/iam/Edison
rm –rf Edison/*
rm –rf Edison/\.*
Проверить всё ли удалилось
ls -lag Edison
Можно для безопасности перенести файлы куда-либо.
У меня при подключении Intel Edison, том был пустой.

3. Установить требуемые библиотеки в настольной системе

$ sudo apt-get install gdebi libncurses5:i386 libstdc++6:i386

4. Загрузить и установить сам инструмент Flash Tool Lite

http://downloadmirror.intel.com/24910/eng/phoneflashtoollite_5.2.4.0_linux_x86_64.deb

Можно установить полученный файл двойным щелчком, через Менеджер пакетов или Ubuntu Software Center.

Запускается обычно командой:
$ phoneflashtoollite

либо через меню.


5. Просмотр описания графического интерфейса утилиты Flash Tool Lite, если возникают трудности, то можно попробовать ручной режим
https://software.intel.com/ru-ru/articles/flash-tool-lite-user-manual
Я начал с прошивки утилитой.

※※※

Прошивка Intel Edison с помощью Flash Tool Lite


При прошивке встроенного ПО, плата Intel Edison должна быть специфическим образом подсоединена к настольной системе. Это зависит от версии платы, в данном случае это Intel Edison Breakout Kit (самая простая и начальная система для запуска).

1. Верхний usb-порт, должен быть присоединён к usb-порту настольной системы, кабелем micro-usb--usb.
2. Нижний usb-порт, должен быть присоединён к micro-usb кабелю, второй конец которого свободен. Его нужно будет потом оперативно подсоединить, после нажатия кнопки "Start Flash". Если программа прошивки определит правильно подключение, то начнётся прошивка.

3. Надо скачать zip-файл с образом прошивки с сайта Intel
4. Открыть zip-файл с образом прошивки в программе, нажав Browse и выбрав zip-файл.
5. Json файл будет выбран автоматически. Но для системы Linux надо выбрать CDC на вкладке, вместо RNDIS.
6. Программа Flash Tool Lite, готова к прошивке. Не прерывайте питание, не отключайте устройство Intel Edison, до завершения и не менее 2-3 минут после завершения прошивки.
7. Нажав кнопку "Start flash" надо быть готовым к подключению нижнего кабеля usb к порту компьютера. Если программа определила правильно подключение, то прошивка начнётся автоматически и продлится несколько минут.

※※※

Подключение к плате Intel Edison в терминальном режиме


Верхний micro-usb разъём используется мостом USB-Serial FTDI, через него и осуществляется терминальное подключение.

1. Для первоначальной настройки платы Intel Edison нужно установить терминальное подключение используя устройство /dev/ttyUSB0, предварительно установив программу screen на настольный компьютер.
$ sudo apt-get install screen

Подключаться так:
$ sudo screen /dev/ttyUSB0 115200

Должно появиться приветствие встроенного Linux Poky (Yocto Project Reference Distro)
Войти пользователю root, без пароля первоначально (потом можно будет задать пароль.

2. Сконфигурировать wi-fi подключение к домашней сети wi-fi
Убедится что включен передатчик на домашнем роутере.

# configure_edison --wifi
Найти домашнюю сеть (пересканировать при необходимости), выбрать, ввести пароль. Система сконфигурируется как клиент wi-fi (Station mode).

Полученный режим можно просмотреть командой:
# configure_edison --showWiFiMode
Присвоенный IP-адрес, в домашней сети
# configure_edison --showWiFiIP

3. Сконфигурировать пароль пользователя root и одновременно ssh-доступ к устройству через wi-fi
# configure_edison --password

4. Проверить подключение по ssh
На настольном компьютере
$ ssh root@192.168.1.43
Ответить yes на незнакомый пока хост и ввести пароль пользователя root.

5. Плата готова к отключению от настольного компьютера и подключению к источнику питания. Она автоматически подключиться к домашней сети и можно будет присоединиться по ssh.
Чтобы корректно отключить можно выполнить команду:
$ shutdown -h
Это задаст отключение через минуту.
Можно нажать Enter
и набрать
$ exit
чтобы выйти из сессии.

6. Плата выключиться, останется гореть 1 светодиод.

※※※

Прошивка Intel Edison в ручном режиме


Попробовать сделать, если утилита не помогла.
Набросок, не проверялся.

1. Распаковать образ системы Yocto на том Edison.
2. Подключиться терминалом minicom или putty, пользователем root.
3. Выполнить прошивку набортными средствами
$ reboot ota
После перезагрузки будет выполнена прошивка.


※※※

Ресурсы


1.https://software.intel.com/ru-ru/iot/library/edison-getting-started
2. https://software.intel.com/ru-ru/articles/flash-tool-lite-user-manual


※※※

среда, 24 апреля 2013 г.

Intel DN2800MT на рабочем столе Ubuntu 13.04


Особенности интегрированной материнской платы Intel DN2800MT на рабочем столе Ubuntu 13.04


Как уже стало многим понятно, материнская плата Intel DN2800MT, в целом прекрасный, но не доработанный продукт. Плата содержит интегрированный процессор Intel Atom N2800 с пассивным охлаждением (чем и привлекла), со встроенным графическим ядром Intel GMA3650. Эта маленькая особенность, при всех достоинствах платы, создает трудно преодолимые проблемы для использования этой платы в Linux, в графическом окружении.

Кодовое имя платформы: cedartrail
Кодовое имя процессора: cedarview
Процессор: Intel Atom N2800. Рейтинг производительности - 644, по данным cpubenchmark.net
Это примерно соответствует производительности имеющихся у меня компьютеров на базе Athlon X2 Dual Core 4000+ 6 летней давности, работа которых под Ubuntu не вызывает трудностей.

Микросхема LPC аппаратного мониторинга температуры и напряжений: Nuvoton W83627DHG, поддерживается в пакете lm-sensors, но требует тонкой настроки /etc/sensors.d/dn2800mt.conf.


Привходящая версия Ubuntu 13.04, с трудом отображает двумерную графику, эффекты заторможенные, а о 3d - лучше не заикаться.

Однако, связка Intel DN2800MT + xmonad, позволила превратить эту "не пришей" плату в неплохую систему для разработки программ для микроконтроллеров Cortex-M3 Миландр MDR32F9Q2I.

Я ранее, уже применял xmonad для обычного настольного компьютера, что показалось мне удобным. Теперь решил применить и сделать xmonad - основным менеджером окон X-Window и настроить его конфигурацию для разработки программ, на время зимнего использования. Летом - это будет роутер.
Итак, система Intel DN2800MT + Ubuntu 13.04 + Xmonad.
В октябре 2015 года, удалось смигрировать на Intel DN2800MT + Linux Mint 17.2 Mate.



Предварительная настройка
Стандартная установка Ubuntu 13.04 прошла штатно, интереса давно уже не вызывает - пропускаю.

Предварительную настройку для этой платы надо сделать, так как графический драйвер (если он вообще есть) содержит какие-то недоработки.

Итак, у меня к плате по интерфейсу VGA подключен плоский TFT-монитор, однако разрешение установилось не соответствующее монитору. Поиск причины привел к необходимости выполнить команду xrandr, которая заведует дисплеями, их расположением, разрешением и пр. в X Window.

# xrandr

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

Автоматически установившееся разрешение было 1980x1080, что приводило к скрытию частей экрана и пр. визуальным проблемам.

Изменил разрешение текущего экрана X-Window, командой:
# xrandr -s 1280x1024

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

Делается это прописыванием в опции загрузки: video=LVDS-1:d

Я чуть дополнил: video=LVDS-0:d video=LVDS-1:d

Маленькая латинская буква "d" - означает "disable" - отключение.

После перезагрузки разрешение стало корректным. Чуть улучшилась скорость отрисовки. Это если поставить 640x480 - будет шустро работать. А консоль, вообще, должна летать.


$ xrandr
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 2048 x 2048
VGA-0 connected 1280x1024+0+0 376mm x 301mm
   1280x1024      60.0*+   75.0 
   1280x960       60.0 
   1152x864       75.0 
   1024x768       75.1     70.1     60.0 
   832x624        74.6 
   800x600        72.2     75.0     60.3     56.2 
   640x480        72.8     75.0     66.7     60.0 
   720x400        70.1 
LVDS-0 disconnected
DVI-0 disconnected
DisplayPort-0 disconnected
DVI-1 disconnected
DisplayPort-1 disconnected



Итак, интерфейс Unity на этой материнской плате - неработоспособен.
Кое-как запускается терминал и устанавливается ghc и xmonad. Конфигурационный файл берется из архивов. Перезагрузка, выбор xmonad и вход в систему, запуск консоли (alt+shift+Enter, у меня win+shift+Enter).

Если требуется более дружелюбный интерфейс, то Gnome-Shell 3.8 работает на плате Intel DN2800MT шустрее Unity.
Быстрее Gnome Shell работает любой "легковесный" менеджер рабочих столов, оптимизированный (не использующий графический ускоритель) для старых компьютеров. Т.е. такая вещь как Enlightment - подойдет однозначно.

Если смотреть правде в глаза, эта плата не успевает отрабатывать зажатую клавишу курсора, когда я набираю этот текст в Firefox, в Gnome-Shell. Тот же набор текста, в Firefox, в Xmonad, не вызывает отрицательных ощущений. 30 вкладок переключаются нормально, текст набирается быстро и пр. Мда, всё-таки видеодрайвер надо дорабатывать.
Рядом стоящий старый компьютер с процессором Sempron с отдельным ускорителем, визуально работает быстрее.


Итак, это 2013 год, это Intel. Это 2D. Ощущения Pentium 20-летней давности. Спасибо за нахлынувшие воспоминания.

Теперь, приказ по компании Intel
1. опубликовать полную спецификацию на графический ускоритель  встроенный в процессоры семейства Intel 2000 series, в том числе встроенный в плату Intel DN2800MT.
2. Оказать усиленную поддержку в разработке и оптимизации драйвера для Linux.
3. По исполнению, доложить сообществу.

Ходят непроверенные слухи, что GMA3650 это графический ускоритель -
PowerVR SGX545 от Imagination Technologies. Однако, делает плату Intel и отсутствие драйверов - это её ответственность.
И вообще, использовать чужое графическое ядро, при наличии своих разработок - это  как? Это надо разогнать отдел маркетинга, или как минимум пересмотреть политику.

Приказ по компании Imagination Technologies

1. Проявить предупредительность и опубликовать спецификацию на свой графический ускоритель
2. В качестве мер извинения - разработать open-source драйвер для Intel GMA3650.
3. По исполнению, доложить сообществу и получить всеобщее признание.
4. В случае неисполнения, обанкротиться и прекратить существование.


Дополнительно. Настройка мониторинга напряжений и температур

Стандартная установка пакетов мониторинга:
$ sudo apt-get install lm-sensors, hddtemp

Определение сенсоров:
root@oko# sensors-detect

Чип мониторинга присутствует в системе, но его надо настроить. Для этого создать файл /etc/sensors.d/dn2800mt.conf

После создания файла, надо выполнить команду:
sensors -s
которая пересчитает границы
Если границы не пересчитываются, то надо удалить

После этого, появляется хоть какое-то доверие к системе мониторинга

Системный 3-выводной вентилятор - fan1

Мое содержимое файла /etc/sensors.d/dn2800mt.conf

# Intel DN2800MT sensors
# Dual-Core Intel ® AtomTM Processor N2800
# Чип мониторинга: Nuvoton W83627DHG
# Дата: 15 октября 2015 года
# сервер: tix
# Поместить этот файл в /etc/sensors.d/
# URL: http://gimmor.blogspot.com/2013/04/intel-dn2800mt-ubuntu-1304_24.html


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

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

    ignore  fan0

    ignore  fan2
    ignore  fan3
    ignore  fan4
    ignore  fan5
    ignore  fan6
    # temp2 всегда 110.5
    ignore  temp2


# Напряжения устройств системы

    # Напряжение процессорного кристалла
    # Т.к. напряжение может менятся в зависимости от режима работы Enhanced Intel SpeedStep Technology, то установлена общая граница
    label   in0            "Processor die, Vcc"
    set     in0_min        0.75
    set     in0_max        1.21

    # Напряжение памяти (Memory, Vcc)
    label   in5            "1.5V Memory"
    set     in5_min        1.5 * 0.95
    set     in5_max        1.5 * 1.05

    # Intel® Platform Controller Hub (PCH) Vcc
    # Intel® NM10 Express Chipset Intel® CG82NM10 PCH)
    # Номинальное напряжение питания внутренней логики 1.05 В
    # Vcc1_05 - напряжение внутренней логики чипсета
    # Границы напряжений 0.998-1.102 в соответствии со спецификацией на Intel NM10 Express chipset
    # Настроена защита границ на 10 мВ
    label   in6            "1.05V Platform Controller Hub, Vcc1_05"
    set     in6_min        0.998+0.010
    set     in6_max        1.102-0.010


# Напряжения ATX стандарта
# Диапазон в соответствии с ATX12V Power Supply Design Guide

    # +12.0V
    label   in1            "ATX +12V"
    compute in1            12*@, @/12
  
    set     in1_min        11.4
    set     in1_max        12.6

    # AVCC
    # Напряжение аналоговой земли, используется в DDI
    # Непроверен, не используется
    label   in2               "Analog Vcc"
  
    # +3.3V
    label   in3            "ATX +3.3V"
    set     in3_min        3.14
    set     in3_max        3.47

    # +5.0V
    label   in4            "ATX +5V"
    compute in4            5*@, @/5
    set     in4_min        4.75
    set     in4_max        5.25

    # +3.3V Standby
    label   in7            "+3.3V Standby"
    set     in7_min        3.3 * 0.95
    set     in7_max        3.3 * 1.05

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

# Температуры

    # Температура модуля памяти
    # Модуль памяти: 1.5 V DDR3-800 или DDR3-1066 SO-DIMMs, Небуферизированная, без ECC
    label   temp1          "Memory module"
    set     temp1_max      85
    set     temp1_max_hyst 80

    # Температура регулятора напряжения
    label   temp3          "Voltage regulator"
    set     temp3_max      85
    set     temp3_max_hyst 80

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

    # Системный вентилятор
    label   fan1           "3-pin system fan"
    set     fan1_min       0


Температура в простое: 45-50 град Цельсия.
Вот что выводит настроенная системы lm-sensors:

# sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +45.0°C  (crit = +100.0°C)
Core 1:       +44.0°C  (crit = +100.0°C)

w83627dhg-isa-0290
Adapter: ISA adapter
Processor die, Vcc:                      +0.84 V  (min =  +0.75 V, max =  +1.21 V)
ATX +12V:                               +12.00 V  (min = +11.42 V, max = +12.58 V)
ATX +3.3V:                               +3.31 V  (min =  +3.14 V, max =  +3.47 V)
ATX +5V:                                 +4.96 V  (min =  +4.76 V, max =  +5.24 V)
1.5V Memory:                             +1.49 V  (min =  +1.42 V, max =  +1.58 V)
1.05V Platform Controller Hub, Vcc1_05:  +1.06 V  (min =  +1.01 V, max =  +1.10 V)
+3.3V Standby:                           +3.33 V  (min =  +3.14 V, max =  +3.47 V)
3V CR2032 RTC Battery, VccRTC:           +3.23 V  (min =  +2.00 V, max =  +3.60 V)
3-pin system fan:                        345 RPM  (min =    0 RPM, div = 32)
Memory module:                           +43.0°C  (high = +85.0°C, hyst = +80.0°C)  sensor = CPU diode
Voltage regulator:                       +46.5°C  (high = +85.0°C, hyst = +80.0°C)  sensor = CPU diode

Плюсы получившейся конфигурации

1. Тишина, за счёт пассивной системы охлаждения
2. Автоматическая загрузка рабочей среды
3. Богатые возможности подключения различной периферии
4. Нераздражающая производительность в XMonad
5. Выделенная система - стабильная конфигурация - быстрый старт разработки

Минусы

1. Низкая визуальная производительность. Привыкается со временем, если не использовать одновременно быстродействующие компьютеры (избежать сравнения и расстройства навыков взаимодейтвия).
2. Необычный интерфейс XMonad. Способ взаимодействия требует предварительного обучения, объяснения и понимания преимуществ.
4. Размер. Mini-ITX - это крупно.

Выводы

1. Тщательнее проверять поддержку вновь приобретаемого оборудования на предмет совместимости с Linux
2. Использовать как 3g-роутер, как и было запланировано. Но, куда деться от зуда экспериментаторства?
3. Тишина - это когда слышно как работает блок питания роутера.
4. Для беспроблемной работы (пользователю) установить Linux Mint 17.2 Mate.


Ресурсы

. Описание платы на сайте производителя: http://www.intel.ru/content/www/ru/ru/motherboards/desktop-motherboards/desktop-board-dn2800mt.html

http://habrahabr.ru/sandbox/56311/ Об установке драйверов производителя в среде Linux 12.04.
http://www.lxtreme.nl/ols/ . Сайт программы логического анализатора.
. Заметка о выводе звука через HDMI. http://tt.erinome.net/2012/07/276
. Ветка форума Ubuntu, по теме Intel GMA3600: http://forum.ubuntu.ru/index.php?topic=186601.0
. http://www.linux.org.ru/tag/cedartrail
. Форум IXBT по материнской плате Intel DN2800MT. http://forum.ixbt.com/topic.cgi?id=9:65950
. Установка lm-sensors в Ubuntu. https://help.ubuntu.com/community/SensorInstallHowto
. Мнение Freedesktop.org насчёт предмета обсуждения http://people.freedesktop.org/~zhen/cedarview/
.
.


вторник, 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