2018-03-29

(Linux)Radeontop v1.1のmakeで心が折れそうになった

いや、今日はすでに心が折れました・・・。

GPUをRadeon RX 560に換装したところ、Linux Mint 18.3に配信されているRadeontop ではGPUの使用率を計測できなくなってしまいました。v0.9とのことです。

GitHubを確認してみると、つい最近にv1.1がリリースされた模様です。ただし、debファイルではなくソースコードのみでした。



ワタクシ、ソースからモジュールを生成したことがないので、これはちょっとハードルが高いです。

しかし、意を決してコンパイル方法を調べてみたところ、意外と簡単でした。Makefileが置いてあるディレクトリに移動して、以下のコマンドを実行するだけでした。

sudo make
sudo make install

典型的な「食わず嫌い」 ですね。


というわけで、意を決してmakeしてみたところ、コンパイルエラーが発生しました。コンパイルエラーなんて心が折れそうです。

radeontop-master $ sudo make
./getver.sh
Package pciaccess was not found in the pkg-config search path.
Perhaps you should add the directory containing `pciaccess.pc'
to the PKG_CONFIG_PATH environment variable
No package 'pciaccess' found
Package libdrm was not found in the pkg-config search path.
Perhaps you should add the directory containing `libdrm.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libdrm' found
Package xcb was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb' found
Package xcb-dri2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb-dri2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb-dri2' found
cc -Os -Wall -Wextra -pthread -Iinclude -ffunction-sections -fdata-sections    -DENABLE_XCB=1  -DENABLE_NLS=1 -s   -c -o detect.o detect.c
In file included from include/radeontop.h:23:0,
                 from detect.c:17:
include/gettext.h:28:22: fatal error: libintl.h: そのようなファイルやディレクトリはありません
compilation terminated.
<ビルトイン>: ターゲット 'detect.o' のレシピで失敗しました
make: *** [detect.o] エラー 1

libintl.hというファイルが足りないそうです。 へぇ、何のファイルなんですか?これは?

調べてみると、libc6-devというパッケージをインストールすれば良いようです。

apt install libc6-dev

 では、もう一度makeしてみると、今度は別なコンパイルエラーとなりました。別なエラーなので先に進んだと感じた反面、また謎の状況にハマったとも感じてしまいます。心が折れそうです。

radeontop-master $ sudo make
./getver.sh
Package pciaccess was not found in the pkg-config search path.
Perhaps you should add the directory containing `pciaccess.pc'
to the PKG_CONFIG_PATH environment variable
No package 'pciaccess' found
Package libdrm was not found in the pkg-config search path.
Perhaps you should add the directory containing `libdrm.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libdrm' found
Package xcb was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb' found
Package xcb-dri2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb-dri2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb-dri2' found
cc -Os -Wall -Wextra -pthread -Iinclude -ffunction-sections -fdata-sections    -DENABLE_XCB=1  -DENABLE_NLS=1 -s   -c -o detect.o detect.c
In file included from detect.c:17:0:
include/radeontop.h:36:21: fatal error: xf86drm.h: そのようなファイルやディレクトリはありません
compilation terminated.
<ビルトイン>: ターゲット 'detect.o' のレシピで失敗しました
make: *** [detect.o] エラー 1
今度はxf86drm.hというファイルが足りないそうです。これも調べてみるとlibdrm-devというパッケージをインストールすれば良いようです。

・・・・次のエラーがやって来ました。

radeontop-master $ sudo make
./getver.sh
Package pciaccess was not found in the pkg-config search path.
Perhaps you should add the directory containing `pciaccess.pc'
to the PKG_CONFIG_PATH environment variable
No package 'pciaccess' found
Package xcb was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb' found
Package xcb-dri2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb-dri2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb-dri2' found
cc -Os -Wall -Wextra -pthread -Iinclude -ffunction-sections -fdata-sections  -I/usr/include/libdrm  -DENABLE_XCB=1  -DENABLE_NLS=1 -s   -c -o detect.o detect.c
detect.c:18:23: fatal error: pciaccess.h: そのようなファイルやディレクトリはありません
compilation terminated.
<ビルトイン>: ターゲット 'detect.o' のレシピで失敗しました
make: *** [detect.o] エラー 1

次はpciaccess.hというファイルが足りないそうです。こちらはlib-pciaccess-devというパッケージで解決です。

しかし、まだコンパイルエラーは収まりません。そろそろ心が折れそうです。

radeontop-master $ sudo make
./getver.sh
Package xcb was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb' found
Package xcb-dri2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb-dri2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb-dri2' found
cc -Os -Wall -Wextra -pthread -Iinclude -ffunction-sections -fdata-sections  -I/usr/include/libdrm  -DENABLE_XCB=1  -DENABLE_NLS=1 -s   -c -o detect.o detect.c
Package xcb was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb' found
Package xcb-dri2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb-dri2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb-dri2' found
cc -Os -Wall -Wextra -pthread -Iinclude -ffunction-sections -fdata-sections  -I/usr/include/libdrm  -DENABLE_XCB=1  -DENABLE_NLS=1 -s   -c -o ticks.o ticks.c
Package xcb was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb' found
Package xcb-dri2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb-dri2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xcb-dri2' found
cc -Os -Wall -Wextra -pthread -Iinclude -ffunction-sections -fdata-sections  -I/usr/include/libdrm  -DENABLE_XCB=1  -DENABLE_NLS=1 -s   -c -o ui.o ui.c
ui.c:18:21: fatal error: ncurses.h: そのようなファイルやディレクトリはありません
compilation terminated.
<ビルトイン>: ターゲット 'ui.o' のレシピで失敗しました
make: *** [ui.o] エラー 1

ここで心が折れました。今日はもう勘弁してください。




2018-03-28

花咲かじいさん

関東ではサクラが満開でございます。


青森ではサクラが満開になるのは4月下旬から5月GWあたりなので、3月下旬で花見に行くという発想がなかなか生まれないのですが、街を歩いているとチラホラと満開のサクラを見つけ、花見の季節なんだな、と思うわけです。

関東のサクラもキレイに咲いていますが、また弘前城の花見に行ってみたいですね。

2018-03-24

(仮想通貨)GPUを買うか、APUを買うか

Radeon R7 240ではあまりにも仮想通貨のマイニングが遅いので、GPUかAPUを新調したくなりました。

2018-03-22

(仮想通貨)780GのCrossFireは不発

Radeon R7 240でMonacoinをマイニングしていると、当然ながらGPUの使用率は100%に近くり、肝心なLinux Mintの画面描画はモッサリと遅くなってしまいます。

mkxminerに「--powertune 90」 のようにちょっとスピードダウンするように指示しても全く効きません。

こちらはがんばってマイニグしている時のGPU使用率です。radeontopというツールでデータは取得しています。

radeonドライバーを使っている時はVRAMの使用量も表示してくれるのですが、amdgpuドライバーを使っている時はそれが表示されません。

radeontopの最新版はバージョン1.0のようですが、もしやちょっと古くて対応できていないのかもしれません。Linux Mint 18.3にインストールしたradeontopのバージョを確認してみようと考えました。

$ sudo radeontop -h
    RadeonTop for R600 and above.

    Usage: radeontop [-ch] [-b bus] [-d file] [-l limit] [-t ticks]

-b --bus 3        Pick card from this PCI bus
-c --color        Enable colors
-d --dump file        Dump data to this file, - for stdout
-l --limit 3        Quit after dumping N lines, default forever
-t --ticks 50        Samples per second (default 120)

-h --help        Show this help
-v --version        Show the version
バージョン情報を確認するために-vオプションを付けて実行してみると・・・
$ sudo radeontop -v
RadeonTop unknown
 unknown?え?
 どういうことなんでしょう・・・・。

今頃気づきましたが、amdgpuドライバーでVRAM容量が表示できないのはKernelが古いことが原因だったようです。Kernel 4.13を使っているのですが、本当に古いのでしょうか?
$ sudo radeontop -c
Kernel too old for VRAM reporting.
Collecting data, please wait....

 そしてこちらはmkxminerのログ情報です。最下行にGPUの情報が出力されるのですが、カードの温度、ファンの回転速度、GPU使用率などが取得できていません。
[13:59:19 - 0 days 00:24:37] Accepted diff 8 share cfd8d815 GPU#0 in 275ms                                            
[13:59:54 - 0 days 00:25:13] Accepted diff 8 share 15e2a5d6 GPU#0 in 277ms                                            
> 3.0MH/s | Temp(C):                | | Fan: | HW: 0 | Rej: 1.2%
mxkminerは古いGPUを正しく認識できていないのではないかと思います。ますますGPUを新しい物に交換したい気持ちが高まりました。


さて、CrossFireでしたね。

AMD 780GというチップセットはGPUを内蔵していまして、CrossFireXという機能も備えており、外付けGPUと強調して動作することができるということです!!

ということは画面描画は780Gの内蔵GPUに任せて、R7 240はマイニング専任という構成ができるのではないかと思い、試してみました。

まずはマザーボードのBIOS設定を変更します。

一番上の「Internal Graphics Mode」を普段はOFFにしているのですが、今回は「UMA+SidePort」に変更しました。UMAはOSのメモリーを奪う設定で、SidePortはマザーボード上に少しばかり用意されている専用VRAMになります。(128MBだったかな)

次に三番目の「Surround View」 をONにします。すると、自動的に一番下の「Init Display First」がPEGとなります。これはPCI Expressスロットに挿入されたビデオカードを画面表示用として最初に初期化する、という意味です。

この設定でLinux Mint 18.3を起動したところ、画面表示は問題ありませんが、radeontopでGPU使用率を確認してみると、780Gの内蔵GPUの使用率がゼロ%でした。Xorgのログを確認してみると「Hybridなんちゃらの有効化で失敗」というエラーメッセージが記録されていました。

780Gの内蔵GPUがamdgpuドライバーに対応していないのが原因なのではと考え、amdgpuドライバーからradeon ドライバーに切り替えてOSを再起動してみたところ、Xorgのログにはエラーが出力されなくなりましたが、Hybridなんちゃらが成功したというログも記録されていません。

試しにマイニングを始めてみたところ、 amdgpuドライバーがOFFになったことでAMDGPU-ProのOpenCLドライバーがDRMドライバーのバージョンが古い、ということでエラーになってしまいました。

ちゃんとRadeon R7 240とい780Gの内蔵GPUは認識されているのですが、使うことはできませんでした。


では、デュアルブート構成になっているWindows10でもCrossFireが働くのかを確認してみたところ、こちらはOSが起動できませんでした。ログオン画面までは表示できるのですが、パスワード入力後のデスクトップ表示の部分でブルースクリーンになってしまいました。

ここまで失敗して気づいたのですが、CrossFireが可能はGPUには組み合わせがあるそうで、AMD 780Gはだいぶ組み合わせに制限があり、Radeon HD 3450、3470の2種類のビデオカードとしかCrossFire構成を取れないようです。


ちょっと残念な結果でした。もう使用機材が古すぎるようです。

2018-03-21

Windows 10 Fall Creators UpdateでNTFSが破損?

Linux Mint 18.3でWindows10のNTFSパーティションをマウントして使っています。
主にiTunesで管理している音楽をLinux Mint側のLollypopで再生するためにマウントしているので、読み取り専用でマウントしています。
ところが、先日Windows10にFall Creators Updateを適用してから、Linux Mintでマウントしようとするとエラーとなるようになってしまいました。

mountコマンドのステータスコードは忘れてしまいましたが、Windows側でchkdsk /rで回復しろという指示が出たので試してみたもののエラーは解消せず、ステータスコードなどで調べてみた結果、Linux Mint側でntfsfixコマンドで復活できるとのこと。
さっそくntfsfixコマンドを試してみたところ、見事に回復したのですが、PCを再起動する度にntfsfixコマンドを投入する必要があり、根本的な解決には至っておりません。幸い、私の場合は普段はサスペンド運用をしているため「毎日大変」というわけではないのですが・・・。

$ sudo fdisk -l
Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 4098FABC-DC5B-4A64-B19C-34CAAE6C6C1B
デバイス Start 最後から セクタ Size タイプ
/dev/sdb1 2048 2147485695 2147483648 1T Microsoft basic data
/dev/sdb2 2147487744 5860532665 3713044922 1.7T Linux filesystem
 今回の修復対象は/dev/sdb1でした。
 $ sudo ntfsfix /dev/sdb1
Mounting volume… $MFTMirr does not match $MFT (record 24).
FAILED
Attempting to correct errors…
Processing $MFT and $MFTMirr…
Reading $MFT… OK
Reading $MFTMirr… OK
Comparing $MFTMirr to $MFT… FAILED
Correcting differences in $MFTMirr record 24…OK
Correcting differences in $MFTMirr record 25…OK
Correcting differences in $MFTMirr record 26…OK
Correcting differences in $MFTMirr record 27…OK
Correcting differences in $MFTMirr record 28…OK
Correcting differences in $MFTMirr record 29…OK
Correcting differences in $MFTMirr record 30…OK
Correcting differences in $MFTMirr record 31…OK
Correcting differences in $MFTMirr record 32…OK
Correcting differences in $MFTMirr record 33…OK
Correcting differences in $MFTMirr record 34…OK
Correcting differences in $MFTMirr record 35…OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition… OK
Going to empty the journal ($LogFile)… OK
Checking the alternate boot sector… OK
NTFS volume version is 3.1.
NTFS partition /dev/sdb1 was processed successfully.

最初にntfsfixコマンドを投入する時はかなりドキドキでしたが、もう日課になってしまったので全く新鮮味はありません。$MFTと$MFTMirrの内容に差があるということで修復してくれているのですが、この/dev/sdb1をマウントする度にエラーですよと怒られてしまいます。
Windows10側で実施したchkdskコマンドがやけに短い時間で終わったのが気になるのですが、時間のある時にまたWindows10側でchkdskコマンドを再実行してみて様子を見てみようかと思っています。

2018-03-18

競馬:今日の失敗

中京 12R 豊橋特別の馬券の買い方で失敗しました。

11. ピュアコンチェルトと2. グランドボヌールの2頭までは絞り込みができました。

次は、単勝で行くか複勝で行くかを悩みました。その時点では複勝のオッズはどちらも2倍程度でした。単勝ではピュアコンチェルトが3倍くらいで、グランドボヌールが6倍くらいでした。

いつもは複勝でどちらか1頭だけど買うのですが、悩んでいるうちに それぞれを単勝で買っても良いのではないかひらめきました。

単勝2枚の場合(1,000円ずつ買うとして)
3倍×1,000円=3,000円
6倍×1,000円=6,000円

2,000円のOUTに対して3,000円 or 6,000円のINとなります。

複勝1枚の場合(2,000円を買うとして)
2倍×2,000円=4,000円

2,000円のOUTに対して4,000円のINとなります。


複勝の方が3着までの余裕があるので単勝に比べるとリスクが低いと判断 したのですが、結果的にはピュアコンチェルトが衝撃の11着となってしまい、INがゼロという結果になってしまいました。

2頭まで絞り込んだら、それぞれを単勝で買うというパターンもリスク低減になるのかもしれません。(オッズ次第ですが)

まだまだ修行が足りないようです。

2018-03-17

夢を見た

珍しく夢を見た気がする。そして、起きてしばらくしてからふと思い出したので記録。

  • 自分の財布から何かの支払いで小銭を出す
  • 要らないと言われるけどドンドン出す
  • 財布に小銭が入っていると膨らむのが嫌だから出すのは歓迎

見た後は嫌な気分にならなかった気がする。そんな夢でした。

2018-03-15

Linux Mintで仮想通貨のマイニング:Monacoin

ついにLinux Mintでマイニングが動き出しました。非常にゆっくりと。

bitFlyerに口座を持っている都合上、bitFlyerで扱える仮想通貨、かつRadeonで扱える仮想通貨を探していて、Ethereumの次はMonacoinを見つけました。


bitFlyer ビットコインを始めるなら安心・安全な取引所で

相変わらずGPUはRadeon R7 240で、道具はmkxminerのLinux版です。

mkxminerは掘削量の5%を開発者に 持って行かれるそうです。devfeeとのことです。

mkxminerのLinux版は32bitアプリケーションしか用意されていません。Linux Mint 18.3 64bit版を使っていたので動くようになるまでがけっこう大変でした。

32bit環境が正しく用意できていないとエラーが出るよ、と公式サイトに新設にもガイドが用意されており、そのまんまのエラーがでました。

Error: ./mkxminer: error while loading shared libraries: libOpenCL.so.1: cannot open shared object file: No such file or directory
Reason: You don't have 32bit OpenCL installed. If you added 32 bit support (like written above), you may need to reinstall AMD drivers.
この「libOpenCL.so.1:cannot open shared object file」というメッセージは以前にもよくお目にかかりました。

Synapticを使って32bit版のパッケージを適当に見繕って追加インストールしました。AMDGPU-Proのインストーラーを使っても32bit版のパッケージをインストールできるのですが、ビデオドライバーもインストールされてしまうため、この方法は取れませんでした。(ワタシの環境ではAMDGPU-ProのビデオドライバーをインストールするとFirefoxでもChromeでも描画が乱れてしまうのです)

手動で追加インストールしたパッケージは以下の通りです。
  • libopencl1-amdgpu-pro:i386
  • clinfo-amdgpu-pro:i386
  • libdrm-amdgpu-pro-amdgpu1:i386  
  • libdrm2-amdgpu-pro:i386
  • opencl-amdgpu-pro-icd:i386
 全部が必要であったのかは不明ですが、これでようやくLinxu版のmkxminerが動くようになりました。

さて、mkxminerにはコマンドラインオプションが多数用意されており、そのなかに「--asm」 というものがあります。
--asm - Will enable ASM kernels for supported GPUs (Fiji, Ellesmere, Tonga, Hawaii, Tahiti, Oland currently)
    for about 10% extra speed. Note: this may crash your miner, especially on some Ellesmere cards.
    Recommended 16.10.3 driver or latest AMD / beta blockchain driver.
ワタシが使っているR7 240はOlandなので、この--asmオプションにも対応していると思われるので、さっそく--asmオプションを指定して実行してみました。なんとハッシュレートは3.0MH/sでした。

GPUファンの音が爆音になるのかと思いきや、ほぼ音がしません。後から確認したのですが、ワタシが使っているRadeon R7 240はこんなカードでした。TDPが30Wのためか、気休め程度のファンと幅広なヒートシンクという構成でした。

てっきりこんなカードだったかと勝手に想像していましたが、全然違っていました。

GPUの使用率を確認してみようと思い、別なコンソールを開いてradeontopと打つと、まだインストールされていませんでした。インストールしてたはずと思いつつも、その場でapt install radeontopでインストールしました。


確かにGPUはがんばっているようです。こんなに使用率が高い状態はこれまでに見たことがありませんでした。これを見ると、シェーダーが大忙しのようです。Radeon R7 240にはシェーダーが320基搭載されています。RX 560では1,024基、RX Vega 64では4,096基も搭載されています。パワーが無さすぎですね、R7 240は。

ところで、GPUの温度はどれくらいなのでしょう?道具を持っていないようだったので調べてみると、Psensorというアプリケーションがあるようです。さっそくこれをインストールしてみました。

GUI版のPsensorとCUI版のsensorsという2種類がインストールされます。こちらは調整後?のsensorsの結果です。
$ sensors
amdgpu-pci-0100
Adapter: PCI adapter
temp1:        +62.0°C  (crit = +120.0°C, hyst = +90.0°C)
今は62度ですが、--asmを付けてmkxminerを動かすと70度に張り付いてしまいます。--temp-targetで60度を指定したり、--powertuneで80%を指定したり、--engineでGPUの動作周波数を600MHzとかに指定してみたりしましたが、何も効きませんでした。


最終的には--asmオプションを外し、他のオプションも全く指定しない状態で60度くらいに落ち着いてくれています。その代わり、--asmオプションが外れたためにハッシュレートも3.0MH/sから2.5MH/sまで落ちてしまいました。

[23:32:42 - 0 days 02:58:59] Accepted diff 8 share 01411b57 GPU#0 in 285ms                                            
[23:32:51 - 0 days 02:59:08] Accepted diff 8 share 1b1d30cf GPU#0 in 278ms                                            
[23:33:25 - 0 days 02:59:42] Accepted diff 8 share 05db70c6 GPU#0 in 278ms                                            
[23:35:26 - 0 days 03:01:43] Accepted diff 8 share 1aa86a24 GPU#0 in 279ms                                            
[23:35:47 - 0 days 03:02:04] Can't receive server reply - error 301                                                   
[23:35:47 - 0 days 03:02:04] Disconnecting from stratum                                                               
[23:35:47 - 0 days 03:02:04] Devpool: connection interrupted                                                          
[23:35:47 - 0 days 03:02:04] Devpool: restarting...                                                                   
[23:36:08 - 0 days 03:02:25] Accepted diff 8 share 162be70e GPU#0 in 304ms                                            
[23:36:14 - 0 days 03:02:31] Accepted diff 8 share 128264f8 GPU#0 in 279ms                                            
[23:36:44 - 0 days 03:03:01] Accepted diff 8 share 1261e41c GPU#0 in 283ms                                            
[23:36:54 - 0 days 03:03:10] Accepted diff 8 share 18347d96 GPU#0 in 279ms                                            
[23:37:07 - 0 days 03:03:24] Accepted diff 8 share 1477daa0 GPU#0 in 283ms                                            
[23:37:17 - 0 days 03:03:34] Accepted diff 8 share 1248bcdc GPU#0 in 280ms                                            
[23:37:29 - 0 days 03:03:45] Accepted diff 8 share 0b61d511 GPU#0 in 280ms                                            
> 2.5MH/s | Temp(C):                | | Fan: | HW: 1 | Rej: 0.4%


まあ、70度で連続運転してGPUが故障するよりかは60度くらいで安定稼働してくれた方が余計な出費が発生しなくて良いのではないかと思っています。

しかし、そもそもハッシュレートが2.5MH/sでは進みが遅すぎます。1Monacoin貯まるまでに1ヶ月くらいかかりそうです。1Monacoinが500円弱なので、全然稼いだ気になりませんね。

もっとパワフルなGPUが欲しくなりました。最低でもシェーダー数が1,024基のRadeon RX 560くらいじゃないとスピードアップを感じられない気がします。





2018-03-14

Linux Mintで仮想通貨のマイニング:Ethereum

Linux Mintで仮想通貨のマイニングを試してみたくて、Ethereumのマイニングに挑戦してみました。しかし、結論から言うとわが家の機材ではこれは失敗でした。

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
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
 さて、ClaymoreはEthereumと別の仮想通貨を同時にマイニングする機能が備わっていますが、Ethereumだけをマイニングすることもできます。そのサンプルがstart_only_eth.bashとして同梱されています。

シェルの先頭に「export GPU_FORCE_64BIT_PTR=0」という指定がありますが、実はこれでは動かなかったので「export GPU_FORCE_64BIT_PTR=1」と書き換えてあげる必要がありました。

しかし、何度試してみても一向にマイニングが進みません。ログを見ても何がダメなのかがよくわかりません。GPU errorというメッセージで失敗していることしかわかりません。
dbfff700    parse packet: 242
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
しかし、ついに原因を特定しました。「epoch 169(2.32GB)」という部分です。 Ethereumはメモリー上にデータを展開して計算するような仕組みだそうで、現在のサイズが2.32GBということでした。わが家のRadeonのVRAM容量は2GBなので、これを展開できないためにエラーになっているようです。

ゲームをしないのでVRAM 2GBなんて何に使うのかと思っていたら、思わぬところで躓いてしまいました。

WindowsであればビデオカードのVRAMにOSのメモリーを追加して使用できるので、もしかするとWindowsであればこのビデオカードでもEthereumのマイニングができるかもしれません。

しかし、ワタシは普段使っているLinuxでマイニングがしたいのです。ということで、ここからRadeonでVRAM 4GBを搭載しているビデオカード探しが始まっていきました。

2018-03-13

ミートソースが余った時は

スパゲッティ用のミートソース、レトルトパウチに入っているモノは大抵が2人前です。1人分しか使わないと、どうしても半分が余ってしまいます。そんな時はリメイクするしかないですが・・・・。

いつものクックパッドで調べてみると、ミートソースドリアとかタコライスが出てきました。どちらも良いですが、残念ながら材料が足りないのでどうしたものかと。


余り物ミートソースドリア by RYOーHEI 【クックパッド】 簡単おいしいみんなのレシピが285万品
 
こちらはミートソースドリアのレシピです。ミートソースは余っているんですが、ご飯が余っていないので、残念ながら作れません。





ミートソース 残り リメイク♬ by aaan 【クックパッド】 簡単おいしいみんなのレシピが285万品


こちらはタコライスのレシピです。ご飯も足りないのですが、レタスもありません。レタスとかキャベツは高すぎてなかなか買えません。でも、おいしそうです。

余ったミートソースでミートトースト♪ by アユミゴハン 【クックパッド】 簡単おいしいみんなのレシピが285万品
材料的にはこれしかない。パンの上にチーズと共に乗せてしまえ、という簡単レシピですね。明日の朝ごはんにしようかと思います。

2018-03-11

マネー:電力自由化

いま使っているガス会社から「電気の案内」が届いていました。「電気の案内」って通じるもんでしょうか?

ガスと一緒の会社を使うことで、毎月の基本料金(電気の方が)が割り引きになるとのことです。

電気料金シミュレーションができるということなのでさっそく試してみると、年間で500円〜1,700円くらい支払いが減らせるようです。

しかし、年間でそれだけですかぁ。ちょっと電気業者を変えようと気合が入るには額が少なすぎますねぇ。会社の飲み会を1回断ればあっという間に追い越せちゃいますねぇ。

電力自由化、まだ重い腰を上げるような 時期ではないようです。

2018-03-10

Lollypop 0.9.400が起動しないので

先日、PPAのアップデートが配信されたので何気なくアップデートを受け入れて更新したLollypopですが、使えないと困るので少しあがいてみました。

Linux Mintのメニューではなく、コンソールから直接起動してみました。
$ lollypop
No module named 'pylast'
    - Scrobbler disabled
    - Auto cover download disabled
    - Artist information disabled
$ sudo pip3 install pylast
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/lollypop/application.py", line 206, in do_startup
    self.init()
  File "/usr/lib/python3.6/site-packages/lollypop/application.py", line 159, in init
    cssProvider.load_from_file(cssProviderFile)
GLib.Error: gtk-css-provider-error-quark: application.css:135:14'min-height' is not a valid property name (3)
Python 3.6ですか?うちのLinux MintにそんなバージョンのPytonは導入されていましたかね?

$ python
Python 2.7.12 (default, Dec  4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
普通にPythonを呼び出すと、バージョンは2.7.12のようです。確か、Python 3.xxも導入はされていたはずと思い、追加で確認してみます。

$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Python 3.5.2が導入されていました。もしやLollypop 0.9.400 は新しい環境を要求するのではないかと思い、再度公式サイトを確認してみようと思いました。

なんと、選択可能なUbuntuのバージョンが18.04と17.10のみでした。16.04が消えてしまっています。これはあれですね、4月に公開されるUbuntu 18.04 LTSをだいぶ先取りしている感じですね。

Linux Mintの「ソフトウェアの管理」にもFlatpak版のLollypopがあり、こちらはバージョンが0.9.306で正常に動作するものでした。Flatpak版で回避でも良いかと思っていたのですが、timeshiftの週次バックアップがあることを思い出しました。


 timeshiftでバックアップからリストアしたところ、無事にLollypop 0.9.306に戻すことができました。また、apt updateをしてもLollypop 0.9.400は配信されてきませんでした。もしかしたら作者が対応したのかもしれません。

Lollypop 0.9.400の変更点を確認してみましたが、けっこう修正されているようなのでちょっと不安定なのかもしれません。
New responsive design
New fullscreen mode
New default playback behaviour: you can mix albums and tracks!
New search widget
いずれにせよ、timeshiftのバックアップがあるので安心してお試しできることがわかりました。次のアップデートが配信されたらまた試してみたいと思います。

2018-03-09

Lollypopが起動しなくなってしまった

LollypopはLinuxで使えるミュージックプレイヤーです。ワタシはLinux Mintで愛用しています。

そのLollypopですが、先日バージョン0.9.400というアップデートがPPA経由で配信され、サクッとアップデートしてみたところ、なんとLollypopが起動しなくなってしまいました・・・。

$ apt show lollypop
Package: lollypop
Version: 0.9.400-1ppa1ubuntu1.1
Priority: extra
Section: gnome
Maintainer: cedric.bellegarde@adishatz.org
Installed-Size: 1,963 kB
Depends: dconf-gsettings-backend | gsettings-backend, gir1.2-glib-2.0 (>= 1.35.9), gir1.2-gtk-3.0 (>= 3.8), gir1.2-gstreamer-1.0, gir1.2-gst-plugins-base-1.0, gir1.2-notify-0.7, gir1.2-secret-1, gir1.2-totem-plparser-1.0, gnome-settings-daemon, python3, python3-dbus, python3-gi, python3-gi-cairo
Recommends: python3-pylast (>= 1.0.0), youtube-dl (>= 2016.09.19), gir1.2-webkit2-4.0
Download-Size: 335 kB
APT-Manual-Installed: yes
APT-Sources: http://ppa.launchpad.net/gnumdk/lollypop/ubuntu xenial/main amd64 Packages
Description: Lollypop is a GNOME music playing application.
起動しなくなってしまった原因はまだ調べていませんが、公式サイトを確認してみると次のバージョンである0.9.400.1が作成済みのようです。これはまだ配信されていないようですが。

Tags · Cédric Bellegarde / lollypop · GitLab

一時的に古いバージョンをインストールし直そうかと思い、/var/cache/apt/archivesをのぞいてみましたが、残念ながら.debファイルは0.9.400しか残っていませんでした。

 もう少し様子を見てみようと思います。

2018-03-08

Linux MintとWindowsの時計がずれる

Linux Mint18.3とWindows 10をデュアルブートで使っています。メインはLinux Mintですが、たまにWindowsを使います。

そんな時、Windows側の時計がUTCのままでずれてしまうという事象が発生します。これをLinux Mint側で修正する手順です。

まずは現在の設定を確認します。
$ timedatectl status
      Local time: 水 2018-03-07 20:55:15 JST
  Universal time: 水 2018-03-07 11:55:15 UTC
        RTC time: 水 2018-03-07 11:55:15
       Time zone: Asia/Tokyo (JST, +0900)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no
一番下に表示されるRTC in local TZ: noが修正したい項目です。


続いて、修正用のコマンドを発行します。

sudo timedatectl set-local-rtc 1
なんの応答もしてくれない、そっけないコマンドです。


さて、もう一度設定値を確認してみます。
$ timedatectl status
      Local time: 水 2018-03-07 20:55:31 JST
  Universal time: 水 2018-03-07 11:55:31 UTC
        RTC time: 水 2018-03-07 20:55:31
       Time zone: Asia/Tokyo (JST, +0900)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
Local timeとRTC timeが同じ値にセットされました。これでWindowsを起動しても時計がずれることはなくなります。

しかし、RTCをUTCではなく、Localにセットすると長い警告文が追加で表示されるようになります。サマータイムを使っている地域だと致命的なのかもしれませんが、ここは日本でサマータイム制度はないので気にせずこのまま使うことにしました。



2018-03-06

長芋は青森の特産品

長芋って青森県の特産品だったんですね。知りませんでした。

というわけで、たまに実家の青森からドカンと配送される長芋が余っておりまして、毎回「とろろ」だと飽きてしまうので、簡単に作れて新鮮な感じの長芋料理がないものか、いつものクックパッドで調べてみました。



これ、おいしそうなのですが、油で揚げるというのが面倒なので却下となりました。いや、絶対においしいのはわかっているのですが・・・・。



いや、これも絶対においしそうです。しかし、冷蔵庫に豚肉がないようです。今日は残念ですが、今度買い物に行った時に豚肉を買ってきてこれを作ります。




今日はこれにしました。長芋を輪切りにしてフライパンで焼くだけです。味付けは醤油のみというシンプルさが良いですね。海苔とかつお節があれば見た目も豪華になりそうです。



2018-03-05

先輩とのサシ飲みで

ちょっと思い出してニヤッとしてしまいました。

先週の金曜日、とある先輩とサシ飲みしました。なんかの飲み会の二次会で、サシ飲みは初めてに近いはずです。

その先輩が「上司がいついつを境に接する態度が変わったのが気になる」と言っていました。

ちょうど季節的に人事異動の下準備が盛んな時期で、たまたま私も人事異動の波の中の人であったため裏の事情を知っていて、先輩には「冷たくなったわけではなくて、他の課題があってそっちに注力してるんですよ」と伝えたところ、「何々、教えてよ」と言われ、教えるわけには行かないので「今は言えないんですよ」と伝えたら、面白い発言がありました。

「ワタシ君とは信頼関係あると思っているのに」 とか、「Aさんからオレは鉄壁だ、みたいに言われてるのに」とか。

「Aさん」というのはかなり口の軽い先輩のことでして、そんな人に「鉄壁」と言われているのは「信頼性ゼロだな」と思いました。その時のワタシ、顔は真面目な表情をしていましたが、心の中では苦笑いしてました。
 ※ところで、口の軽い人ってなんでかいろんな情報を持ってますよね。

そもそも「言えない」と伝えているのに「オレは口が堅いから安心しろ」と言ってくる時点で「オマエ、信頼性ゼロ」と思われることを認識していないことが可笑しかったです。

ということを今になって思い出し、変わった先輩だなと思ったことを思い出しては一人でニヤニヤしてしまいました。

2018-03-02

LibreOffice Calcでオートフィル

Linux Mint 18.3でLibreOffice 6.0を使用しています。特に問題ありません、快調です。

Microsoft Excelでオートフィルってよく使うと思うのですが、これをLibreOffice Calcでどうやって操作するのか謎でした。使い方を調べる時間があったら手で連番打った方が速いや、という感じです。

しかし、重い腰を上げて調べてみると、同じ機能が備わっていることがわかりました。私はあまりマウスで操作はしないのですが、手っ取り早いのはマウスでセルの右下のポチを下とか右とかにドラッグすると連続データを埋めてくれるそうです。これは初めて試してみましたが、確かに連続データで埋めてくれました。

いやしかし、キーボードでメニューからも操作できるでしょ、ということで一生懸命調べてみたところ、ついに発見しました。

「シート」 ー「セルのフィル」ー「連続データの作成」



いやぁ、だいぶすっきりしました。

今日の夜はぐっすり眠れそうです。

2018-03-01

(Linux)lowlatency カーネルを使ってみた

Kona Linux が日本製のディストリビューションだと初めて知りました。

そんな Kona Linux ですが、音質重視の Jack エディションなるものがあり、そう言えばUbuntu Studio って low-latency カーネル使ってるから音が良いとか言ってたよな、と。

モノは試しに Linux Mint 18.3 に Synaptic から linux-lowlatency-hwe-16.04 というパッケージをインストールしてみました。インストール後はPCを再起動 することでインストールしたカーネルが反映されます。

low-latency カーネルに変えてみるとなんとなくブラウザの動きが軽快になったような気がしました。これはいい傾向です。

肝心な音質の向上ですが、ちょっとわかりません。音系に関しては追加のソフトウェアをインストールしていないので恐らく Jack はインストールされていない状態です。

ヘッドホンで音楽を聴く時は Planex の 3,000円くらいの USB-DAC を通して聴いているのですが、これがまた非常に高音質で良いです。ですので、あんまり low-latency の恩恵がわかりませんでした。
ヘッドホンじゃない時はディスプレイに内蔵されているショボいスピーカー経由なのであんまり音の違いは感じられないのです。

※ちなみに Planex の製品はもう売ってないようで、近いのはこんな製品です。


ちょっと困ったのは、VLC で動画を再生した時に音声が正しく再生されず、泣く泣くgeneric カーネルに戻したのですが、その後に VLC 側の設定か何かで回避できるのではないかと思って low-latency カーネルを再インストールしたらなぜか VLC は元気に動いてくれるようになりました。どうりで VLC と low-latency カーネルの障害事例を探してもほとんど見つからない訳です。

というわけで、Kona Linux から始まった low-latency カーネルによる高音質化ですが、結果的にはブラウザがちょっとキビキビと反応してくれるようになったという良い形に繋がりました。