2014-02-03 2 views
10

Я прочел эту ссылку - https://wiki.debian.org/ru/AtiHowTo и решил установить OpenCL.Как настроить OpenCL на видеокарта AMD с драйвером opensource?

the r600g driver still have to load proprietary microcode into the GPU to enable hardware acceleration. This firmware is usually included in the kernel, but is packaged separately in Debian.

Итак, я установил прошивку:

# apt-show-versions firmware-linux-nonfree firmware-linux 
firmware-linux-nonfree:all/sid 0.40 uptodate 
firmware-linux:all/sid 0.40 uptodate 

Затем я обновить версию ядра:

uname -v 
#1 SMP PREEMPT RT Debian 3.12.8-1 (2014-01-19) 

и проверили флаги ядра:

grep DRM_RADEON /boot/config-$(uname -r) 
CONFIG_DRM_RADEON=m 
# CONFIG_DRM_RADEON_UMS is not set 
grep AGP /boot/config-$(uname -r) 
CONFIG_AGP=y 
CONFIG_AGP_AMD64=y 
CONFIG_AGP_INTEL=y 
CONFIG_AGP_SIS=y 
CONFIG_AGP_VIA=y 

Также я версия установки Xserver достаточно недавно:

# apt-show-versions xorg 
xorg:amd64/sid 1:7.7+5 uptodate 

Я выбираю как драйвер RADEON:

You most certainly are using wheezy's xserver-xorg-core which does not provide xorg-video-abi-6.0 any more, and radeonhd is not available for the newer xorg-video-abi because it has been removed from Debian

# apt-show-versions xserver-xorg-video-radeon 
xserver-xorg-video-radeon:amd64/sid 1:7.3.0-1 uptodate 

Это дает мне OpenGL работу:

$ glxinfo | grep OpenGL 
OpenGL vendor string: X.Org 
OpenGL renderer string: Gallium 0.4 on AMD RV770 
OpenGL core profile version string: 3.1 (Core Profile) Mesa 10.1.0-devel (git-81144c0 saucy-oibaf-ppa+curaga) 
OpenGL core profile shading language version string: 1.40 
OpenGL core profile context flags: (none) 
OpenGL core profile extensions: 
OpenGL version string: 3.0 Mesa 10.1.0-devel (git-81144c0 saucy-oibaf-ppa+curaga) 
OpenGL shading language version string: 1.30 
OpenGL context flags: (none) 
OpenGL extensions: 

Я пытаюсь использовать приложение, которое работает с OpenCL.

Эти программы работает нормально на CPU:

$ mono scallion/bin/Debug/scallion.exe parallax 
Cooking up some delicions scallions... 
Putting 1 patterns into 1 buckets. 
Using kernel optimized from file kernel.cl (Optimized4) 
Using work group size 1 
Compiling kernel... done. 
LoopIteration:10 HashCount:167.77MH Speed:7.8MH/s Runtime:00:00:21 
Predicted:19:38:20 
Stopping and shutting down... 

LoopIteration:11 HashCount:184.55MH Speed:7.8MH/s Runtime:00:00:23 
Predicted:19:36:58 init: 2687ms/1 (2687ms, 0.37/s) 
generate key: 153ms/6 (25.5ms, 39.22/s) 
cpu precompute: 7ms/6 (1.17ms, 857.14/s) 
total without init: 23706ms/1 (23706ms, 0.04/s) 
set buffers: 0ms/11 (0ms, 0/s) 
write buffers: 0ms/11 (0ms, 0/s) 
read results: 23699ms/11 (2154.45ms, 0.46/s) 
check results: 0ms/11 (0ms, 0/s) 

7.78 million hashes per second 

Stopping and shutting down... 

Но я не могу обнаружить GPU:

$ mono scallion/bin/Debug/scallion.exe 
Usage: scallion [OPTIONS]+ regex [regex]+ 
Options: 
     -l, --listdevices   Lists the devices that can be used. 
     -d, --device=VALUE   Specifies the opencl device that should be used. 

Там нет GPU в списке устройств:

$ mono scallion/bin/Debug/scallion.exe -l 
Id:0 Name:Intel(R) Core(TM)2 Quad CPU Q9650 @ 3.00GHz 
    PreferredGroupSizeMultiple:1 ComputeUnits:4 ClockFrequency:2000 
    MaxConstantBufferSize:65536 MaxConstantArgs:8 MaxMemAllocSize:2147483648 

Я не могу найти инструкции по настройке OpenCL:

apt-get install libclc-r600 

apt-show-versions libclc-r600 ocl-icd-libopencl1 
libclc-r600:all/saucy 0~git20140101-1~gd~s uptodate 
ocl-icd-libopencl1:amd64/sid 2.1.3-2 uptodate 

и после запуска приложения я получаю сообщение об ошибке:

~/github.com/lachesis/scallion$ mono ./scallion/bin/Debug/scallion.exe -l 

Unhandled Exception: 
System.InvalidOperationException: ErrorCode:'-1001' 
at scallion.CLDeviceInfo.CheckError (Int32 err) [0x00000] in :0 
at scallion.CLDeviceInfo.GetPlatformIds() [0x00000] in :0 
at scallion.CLDeviceInfo.GetDeviceIds() [0x00000] in :0 
at scallion.CLRuntime.GetDevices() [0x00000] in :0 
at scallion.Program.ListDevices() [0x00000] in :0 
at scallion.Program.Main (System.String[] args) [0x00000] in :0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidOperationException: 
ErrorCode:'-1001' 
at scallion.CLDeviceInfo.CheckError (Int32 err) [0x00000] in :0 
at scallion.CLDeviceInfo.GetPlatformIds() [0x00000] in :0 
at scallion.CLDeviceInfo.GetDeviceIds() [0x00000] in :0 
at scallion.CLRuntime.GetDevices() [0x00000] in :0 
at scallion.Program.ListDevices() [0x00000] in :0 
at scallion.Program.Main (System.String[] args) [0x00000] in :0 

The error code values are defined in opencl.h It look like your platform is not configured properly. CL_PLATFORM_NOT_FOUND_KHR (-1001) error from clGetPlatformIDs. That's because you do have the dispatcher, but no actual OpenCL drivers."

После

sudo apt-get install libopencl1-mesa 

$ find/-iname «libMesaOpenCL.so*» 2>/dev/null 
/usr/lib/x86_64-linux-gnu/libMesaOpenCL.so 
/usr/lib/x86_64-linux-gnu/libMesaOpenCL.so.1.0.0 
/usr/lib/x86_64-linux-gnu/libMesaOpenCL.so.1 

В файле конфигурации должен быть

cat /etc/OpenCL/vendors/mesa.icd 
libMesaOpenCL.so 

Ошибка

fatal error: cannot open file '/usr/lib/clc/rv770-r600--.bc': No such file or directory 

Как это сделать?

ответ

1

Не уверен, что драйверы «без нагрузки» являются источниками с открытым исходным кодом.

Затем, если вы посмотрите на:

OpenGL renderer string: Gallium 0.4 on AMD RV770 

Выглядит как галлий LLVM используется для отображения (не родной GPU), поэтому нет гарантии, что OpenGL ускоряется GPU.В любом случае, если вы используете несвободные драйверы, мой совет заключается в том, чтобы загружать самые последние драйверы с сайта AMD &, используя их вместо установленных на данный момент.

Кроме того, недавний AMD APP SDK (от 2,8 в, если память мне подходит) поставляется отдельно от драйвера графического процессора, поэтому вы можете попытаться использовать его вместо открытого пакета. Он работает, по крайней мере, на Ubuntu 12.04 (драйверы AMD из хранилища + AMD APP SDK с сайта AMD)

+3

Вы смешиваете средство визуализации программного обеспечения LLVMpipe с Gallium, это всего лишь один из многих возможных рендерингов Gallium, в этом случае он использует графический процессор. Об этом говорит «Gallium 0.4 на AMD RV770», по моему он говорит «Gallium 0.4 на AMD REDWOOD». Когда используется рендеринг программного обеспечения LLVMpipe, вместо этого он читает «Gallium 0.4 on llvmpipe» – TechZilla

+0

Кроме того, он действительно использует Free Drivers, из которых R600 является специфическим драйвером, который охватывает его семейство карт. Небезопасный указатель на этом packagename предназначен только для требуемого прошивки. Я бы сказал, однако, весь процесс излишне жесток из-за чрезвычайно медленных темпов обновлений mesa дистрибутива. Не говоря уже о всегда ужасном состоянии графической документации mesa/distro. – TechZilla

5

В конечном итоге я включил бесплатный стек OpenCL и столкнулся с очень похожими проблемами. Я предоставлю краткий обзор некоторых из соответствующих пакетов.

Это libopencl1-mesa - это только время выполнения ICD, которое загружается в общий ocl-icd-libopencl1. Затем libclc используется libopencl1-mesa для работы с ядрами OpenCL. Используя базовый компонент набора микросхем LLVM, libclc генерирует инструкции. Вам не хватает набора микросхем графического адаптера клей, который предоставляется отсутствующим .bc. Это значительно упрощено, но для этой проблемы этого должно быть достаточно, но хорошая диаграмма поможет очень.

В вашем конкретном примере, .bc «s будет предоставлен libclc-r600 Однако я ничего для вашего чипсета не вижу„DONE“, на этой странице freedesktop.org GalliumCompute. Похоже, самый низкий поддерживаемый чипсет - Evergreen (серия HD5000).

* повторите проверку GalliumCompute, если вы прочтете это после 02-04-2014.

 Смежные вопросы

  • Нет связанных вопросов^_^