12

このリンクを読みました - https://wiki.debian.org/ru/AtiHowTo そして OpenCL をセットアップすることにしました。

r600g ドライバーは、ハードウェア アクセラレーションを有効にするために、独自のマイクロコードを GPU にロードする必要があります。このファームウェアは通常、カーネルに含まれていますが、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 を選択します。

xorg-video-abi-6.0 を提供しない wheezy の xserver-xorg-core を使用していることは間違いありません。新しい xorg-video-abi では、Debian から削除されたため、radeonhd を使用できません。

# 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

エラー コードの値は opencl.h で定義されています。プラットフォームが正しく構成されていないようです。clGetPlatformIDs からの CL_PLATFORM_NOT_FOUND_KHR (-1001) エラー。これは、ディスパッチャーはあるが、実際の OpenCL ドライバーがないためです。」

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

これを機能させる方法は?

4

2 に答える 2

5

私は最終的に無料の OpenCL スタックを有効にしましたが、非常によく似た問題に遭遇しました。関連するパッケージの一部について、概要を簡単に説明します。

これlibopencl1-mesaは、ジェネリックにロードされる単なる ICD ランタイムocl-icd-libopencl1です。次に、OpenCL カーネルを処理するためにlibclc使用されます。libopencl1-mesaLLVM チップセット固有のバックエンドを使用して、libclc命令を生成します。行方不明によって提供されるGPU チップセット固有の接着剤.bcがありません。これは非常に単純化されていますが、この問題については十分なはずです。それでも、優れた図が非常に役立ちます。

あなたの特定.bcの例では、 はによって提供されますが、この Freedesktop.org GalliumComputeページlibclc-r600で、チップセット 'DONE' に対して何も表示されません。サポートされている最も低いチップセットは Evergreen (HD5000 シリーズ) のようです。

* 2014 年 2 月 4 日以降にこれを読んだ場合は、GalliumComputeを再確認してください。

于 2014-02-04T21:22:06.517 に答える
1

「不自由な」ドライバーがオープンソースかどうかは不明です。

次に、次のようにします。

OpenGL renderer string: Gallium 0.4 on AMD RV770

Gallium LLVM が (ネイティブ GPU ではなく) レンダリングに使用されているように見えるため、OpenGL が GPU によって高速化されるという保証はありません。いずれにせよ、不自由なドライバーを使用している場合は、AMD サイトから最新のドライバーをダウンロードして、現在インストールされているドライバーの代わりに使用することをお勧めします。

また、最近の AMD APP SDK (メモリが適切であれば 2.8 以降) は GPU ドライバーとは別に出荷されているため、オープン パッケージの代わりにそれを使用してみてください。少なくとも Ubuntu 12.04 で動作します (リポジトリからの AMD ドライバー + AMD のサイトからの AMD APP SDK)

于 2014-02-04T09:53:10.693 に答える