GPUはRadeon R7 240で、VRAMは2GBです。
マイニング用ソフトはClaymoreにしてみました。マイニグソフトはGeForceというかCUDA向けが多いようで、Radeonで使えるOpenCLに対応したもの、かつLinuxで使えるものを探して辿り着きました。
RadeonでOpenCLを使うためにはAMDGPU-Proドライバーをインストールするのが簡単ですが、そのままインストールするとビデオドライバーもインストールされてしまいます。
問題なければそれでも良いのですが、わが家の場合はブラウザの描画が乱れてしまうので、ビデオドライバーはamdgpuのままで、OpenCL系のドライバーだけAMDGPU-Proを使いたいなぁ、と思っていたら、ちゃんとそうしたインストールオプションが用意されていました。
※ちなみにAMDGPU-Proのバージョンは17.40です。
amgdpu-pro-install.sh --computeこんな感じで、--computeというオプションを付けてあげるとビデオドライバーは変更されずにOpenCLだけ使えるようになります。
こうするとAMDGPU-Pro版のclinfoコマンドも導入されます。パスが通っていないと思いますが、/opt/amdgpu-pro/bin/clinfoを実行すると正しくOpenCL環境が用意できたことを確認できます。
$ /opt/amdgpu-pro/bin/clinfoさて、ClaymoreはEthereumと別の仮想通貨を同時にマイニングする機能が備わっていますが、Ethereumだけをマイニングすることもできます。そのサンプルがstart_only_eth.bashとして同梱されています。
Number of platforms: 1
Platform Profile: FULL_PROFILE
Platform Version: OpenCL 2.0 AMD-APP (2482.3)
Platform Name: AMD Accelerated Parallel Processing
Platform Vendor: Advanced Micro Devices, Inc.
Platform Extensions: cl_khr_icd cl_amd_event_callback cl_amd_offline_devices
Platform Name: AMD Accelerated Parallel Processing
Number of devices: 1
Device Type: CL_DEVICE_TYPE_GPU
Vendor ID: 1002h
Board name: AMD Radeon HD 8500 series
Device Topology: PCI[ B#1, D#0, F#0 ]
Max compute units: 5
Max work items dimensions: 3
Max work items[0]: 256
Max work items[1]: 256
Max work items[2]: 256
Max work group size: 256
Preferred vector width char: 4
Preferred vector width short: 2
Preferred vector width int: 1
Preferred vector width long: 1
Preferred vector width float: 1
Preferred vector width double: 1
Native vector width char: 4
Native vector width short: 2
Native vector width int: 1
Native vector width long: 1
Native vector width float: 1
Native vector width double: 1
Max clock frequency: 800Mhz
Address bits: 32
Max memory allocation: 1354220544
Image support: Yes
Max number of images read arguments: 128
Max number of images write arguments: 8
Max image 2D width: 16384
Max image 2D height: 16384
Max image 3D width: 2048
Max image 3D height: 2048
Max image 3D depth: 2048
Max samplers within kernel: 16
Max size of kernel argument: 1024
Alignment (bits) of base address: 2048
Minimum alignment (bytes) for any datatype: 128
Single precision floating point capability
Denorms: No
Quiet NaNs: Yes
Round to nearest even: Yes
Round to zero: Yes
Round to +ve and infinity: Yes
IEEE754-2008 fused multiply-add: Yes
Cache type: Read/Write
Cache line size: 64
Cache size: 16384
Global memory size: 1760641024
Constant buffer size: 65536
Max number of constant args: 8
Local memory type: Scratchpad
Local memory size: 32768
Max pipe arguments: 0
Max pipe active reservations: 0
Max pipe packet size: 0
Max global variable size: 0
Max global variable preferred total size: 0
Max read/write image args: 0
Max on device events: 0
Queue on device max size: 0
Max on device queues: 0
Queue on device preferred size: 0
SVM capabilities:
Coarse grain buffer: No
Fine grain buffer: No
Fine grain system: No
Atomics: No
Preferred platform atomic alignment: 0
Preferred global atomic alignment: 0
Preferred local atomic alignment: 0
Kernel Preferred work group size multiple: 64
Error correction support: 0
Unified memory for Host and Device: 0
Profiling timer resolution: 1
Device endianess: Little
Available: Yes
Compiler available: Yes
Execution capabilities:
Execute OpenCL kernels: Yes
Execute native function: No
Queue on Host properties:
Out-of-Order: No
Profiling : Yes
Queue on Device properties:
Out-of-Order: No
Profiling : No
Platform ID: 0xf7c384ac
Name: Oland
Vendor: Advanced Micro Devices, Inc.
Device OpenCL C version: OpenCL C 1.2
Driver version: 2482.3
Profile: FULL_PROFILE
Version: OpenCL 1.2 AMD-APP (2482.3)
Extensions: cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_image2d_from_buffer cl_khr_spir cl_khr_gl_event
シェルの先頭に「export GPU_FORCE_64BIT_PTR=0」という指定がありますが、実はこれでは動かなかったので「export GPU_FORCE_64BIT_PTR=1」と書き換えてあげる必要がありました。
しかし、何度試してみても一向にマイニングが進みません。ログを見ても何がダメなのかがよくわかりません。GPU errorというメッセージで失敗していることしかわかりません。
dbfff700 parse packet: 242しかし、ついに原因を特定しました。「epoch 169(2.32GB)」という部分です。 Ethereumはメモリー上にデータを展開して計算するような仕組みだそうで、現在のサイズが2.32GBということでした。わが家のRadeonのVRAM容量は2GBなので、これを展開できないためにエラーになっているようです。
dbfff700 ETH: job changed
dbfff700 new buf size: 0
dbfff700 ETH: 02/12/18-15:00:20 - New job from eth-eu1.nanopool.org:9999
dbfff700 target: 0x000000006df37f67 (diff: 10000MH), epoch 169(2.32GB)
dbfff700 ETH - Total Speed: 0.000 Mh/s, Total Shares: 0, Rejected: 0, Time: 00:00
dbfff700 ETH: GPU0 0.000 Mh/s
e8f3c700 GPU 0 temp = 40, old fan speed = 29, new fan speed = 25
e8f3c700 GPU0 t=40C fan=29%
e8f3c700 em hbt: 0, fm hbt: 20,
e8f3c700 watchdog - thread 0 (gpu0), hb time 27305
e8f3c700 watchdog - thread 1 (gpu0), hb time 27305
e8f3c700 WATCHDOG: GPU error, you need to restart miner :(
e8f3c700 GPU 0 temp = 40, old fan speed = 29, new fan speed = 25
ゲームをしないのでVRAM 2GBなんて何に使うのかと思っていたら、思わぬところで躓いてしまいました。
WindowsであればビデオカードのVRAMにOSのメモリーを追加して使用できるので、もしかするとWindowsであればこのビデオカードでもEthereumのマイニングができるかもしれません。
しかし、ワタシは普段使っているLinuxでマイニングがしたいのです。ということで、ここからRadeonでVRAM 4GBを搭載しているビデオカード探しが始まっていきました。