MacOS に elmo + やねうら王 + 将棋ぶらうざQ を「clang」で導入

ひさしぶりの将棋ネタ。
Mac を触る時間が長くなってきたので、将棋 AI も刷新したくなったから(過去に「技巧」を入れてます)。

導入方法の基本的な流れ自体は、
Mac にコンピュータ将棋ソフト「elmo」を導入した
MacOS に elmo + やねうら王 + 将棋ぶらうざQ をインストールする
あたりをご参考に。

ただ、やねさんの Makefile を見たら、

# clangでコンパイルしたほうがgccより数%速いっぽい。
#COMPILER = g++
COMPILER = clang++

 

とデフォルト設定で clang になっている。
何もわざわざ gcc に変えなくても良いのでは?
(ただし、llvm は諸々の事情で ver10 を使ってますが、デフォの llvm でも実行ファイルはできてました。gcc とか llvm とかよくわからんという人はこちらなども参照ください)

あとは、標準ライブラリを stdlibc++ ではなく libc++ に変えただけ。

こんだけで、一応、ビルドできましたが。

 

なお、アイキャッチは、藤井(聡太)-渡辺(明)棋聖戦第二局で藤井七段(当時)が△三1銀打と金取りを受けたところ。

 

解析させると AI 的にもここから流れが変わったのがわかりますね。

 

 

air-h-128k-il

 

OpenBSD で GCC が廃止・Clang/LLVM に移行

タイトルの通り、とうとう OpenBSD 6.6 で、GCC が廃止・LLVM/Clang に移行になったようです。

OpenBSD 6.6登場、GCCの廃止とLLVM Clangへの移行進む

はっきりいって地味なネタ。実際、普通にパソコン使っている限りにおいては、何の影響もでないでしょう。

ちょっと関係するとすれば、Mac ユーザー(の中でも開発よりの人)。

ご存知のように OS X (MacOS)は、BSD(というUnix OS)の上に Cocoa というレイヤーを被せたかっこうになっている。
もともとアップルは Clang/LLVM 推しで、Objective-C(++) においては、.m と .mm (++ では拡張子はこちら) コードを Clang →LLVM という流れでビルドする。
なお、Objective-C(++) は C(++) の上位互換とされており、通常の C(++) の文法でコードを書いてもコンパイルはできる。
だから、実務的には、ソースが C(++) だったとしても拡張子を m や mm にしておいた方がいい

Clang がフロントエンドでソースコードの解析を担当し、LLVM(元は Low Level Virtual Machine の略。今は何の略でもないとされていいる)がバックエンドとなり、最終的な機械語コードを吐き出す。
また、LLVM は Virtual Machine から連想されるように Java と同様、特定のマシンから独立した中間コードをまず生成し、次にそれを各々のマシン向けの機械語に変換するという仕組みになっている。

話が逸れた。

世界が Mac だけで完結しているのなら Clnag/LLVM でもいいのだが、デスクトップPCのシェアは MS Windows の方が上で、Windows 向けに書かれた C++プログラムを Mac 上で動かしたいということはよくある。そのような場合、困ったことがおこることがある。
GCC や Windows C コンパイラにはある機能が、実際には Clang/LLVM にないことが度々あるからだ。
そのような場合は、GNU の GCC の使用を余儀なくされるわけだが、今後はその点でさらに使いにくくなるかもってことです。

【参考】Mac で技巧2を使う

air-h-128k-il

openDolphin を MacBook にインストールしてみた

もちろん動く。

だからどうしたって話なんですけどね。

でんも、なんかルック&フォールが洗練されてるんだよなあ(嘆息)。

 

(追記)Mac へのインストール解説記事書きますみたいなこと言ってましたが、先に ANN2bさんが『OpenDolphin-2.7(m) を Mac OSX にインストールする』を書いてくれました。最新環境への対応のため、一部ソースにも手が入ってます。

 

air-h-128k-il

 

Mac で技巧2を使う

また将棋ネタ。
メインで使っている XPS 13 の調子が悪く、ここのところ移動時には MacBook を携えている。困るのは将棋ソフトが充実していない点。

なので elmo (というか YaneuraOu)や技巧2をソースからコンパイルしてみた。

基本的なやり方は、ここここといっしょ。

技巧2の方は、Mac オリジナルの gcc でコンパイルできないので(OpenMP とやらでひっかるみたい)、GCC の gcc49 で置きかえてコンパイル。導入には homebrew より macports の方が簡単のようで、私はそうしました。

 

【Tips!】

$ port search gcc

でインストールできるパッケージを確認。

$ sudo port install gcc49

でインストール。

$  port contents gcc | grep /bin/

でパッケージの実体の path を調べる。私の場合は /opt/local/bin 以下にありました。

$ which gcc

でオリジナルの gcc g++ の path を確認して(私の場合は /usr/bin )

$ sudo ln -sf /opt/local/bin/gcc-mp-4.9 /usr/bin/gcc

$ sudo ln -sf /opt/local/bin/g++-mp-4.9 /usr/bin/g++

で、リンクをはる(※)、という手順。要するに Mac がコンパイルするとき、/usr/bin 以下の gcc を使うので、リンク貼ってそこから gcc-mp-4.9 に飛ばすという理屈。

 

エンジンができたら、将棋ブラウザQ などに登録。無事 Mac 環境下でも強豪将棋ソフトが使えました。

実際の elmo VS 技巧2のバトルは YouTube で。

※‥‥直リンなのでターミナル上で誤操作をするとオリジナルの gcc/g++ が消える可能性もあります。操作は自己責任でお願いします。なお、Mac に不慣れな私もこれをやってしまいましたが、OS X のマイナーアップデートで修復されます。こういうのが嫌な場合は、おとなしく makefile を編集しましょう(コメント欄参照。こっちの方が簡便か)。

? 関連して新しい記事があります。

MacOS に elmo + やねうら王 + 将棋ぶらうざQ を「clang」で導入