inamasujpのブログ

#例のグラボ

概要

ツイッター界隈で #例のグラボ が盛り上がっています。

とあるIT企業がマイニング事業として立ち上げた大規模マイニングサーバーが、仮想通貨ブームの終了により解体され、そこで使われていた全国のパソコン工房に中古のRadeon RX470が大量に出回り始めたのが事の始まりでした。

年内からすでに出回っていたようですが、グラボといってもマイニング用のため、HDMIやDisplay Portといった映像出力端子が何も搭載されておらず、普通のRX470よりは安い(6500円)とは言ってもなかなか手を出しづらいものでした。




そこからあるツイートにて

なんと、(自己責任にはなりますが)半田付けすればHDMIを復活できることが判明しました。

これによりハッシュタグ #例のグラボ として瞬く間に解析が進められ、チップ抵抗とチップコンデンサの半田付けで安定してHDMIを復活できることが判明しました。

参考URL media.dmm-make.com




そして、私もRadeon GPUが欲しかったので

f:id:inamasujp:20190123204530j:plain
二枚買いました。

無改造状態でも、CPU内蔵グラフィックスから映像出力をしてWindows10の機能でゲームにだけRX470を使う、という状態(いわゆるeGPU状態)でも使えましたが、せっかくなので自分で半田付けしてみることにしました。

半田付け

4箇所のネジを取り外し、ファン部分を取るとHDMI端子付近に結線されていない箇所が見えると思います。

ここに1005サイズの5.1Ωのチップ抵抗と0.1μFのチップコンデンサを半田付けします。

大阪日本橋のシリコンハウスにコンデンサは売ってました。なお店員さんによると他のチップ抵抗なども用意したいとのことでした。(店員さんに部品の在庫を聞いた際に「例のグラボですか?」って聞かれたの本当に面白かったです。)

f:id:inamasujp:20190123205948j:plain

合計16箇所の半田付けでHDMI端子が復活します!

とは言っても、1005サイズとはつまり1mm × 0.5mmのチップということなので、かなり難しいです。

私は0.6mmの細いハンダと、チップ部品向けの先の細い半田コテを用意して挑みました。

f:id:inamasujp:20190123205822j:plain
なんとか成功

あまり綺麗にはできませんでしたが、なんとか半田付けできました。

ブラケットに穴あけ

HDMI端子そのものは最初から搭載されていますが、端子はブラケットでふさがっています。

そこでブラケットに穴をあけて、HDMI端子を使えるようにします。




ドリルで穴をあけて、

f:id:inamasujp:20190123211539j:plain

金切ばさみで切って、

f:id:inamasujp:20190123211618j:plain

ペンチで何度か折曲げて、金属疲労で切れたのをやすりで丸くして完成です。

f:id:inamasujp:20190123211800j:plain
完成

動作確認

f:id:inamasujp:20190123212032j:plain

AMDのグラボは同一世代のものを二枚挿すと同時使用して性能向上できるCrossFireという機能があります。今回HDMI端子を復活させたことにより、CrossFireでの動作が可能になりました。

とはいってもCrossFireはどのゲームでも使えるというわけでは無く、ごく一部のゲームで、さらにフルスクリーンモードのみ。という制約があります。

私が好きなForza Horizon 4は残念ながら非対応でした。

有名なタイトルだとFF14が対応しているようなので、FF14ベンチマークを動かしてみました。

f:id:inamasujp:20190123212808j:plain

何度か動かしてみましたが、約14000くらいのスコアでした。これはNVIDIAだとGTX1070TiやGTX1080くらいの性能です。6500円×2でこのスコアはかなりアツい。

RX470一枚だと9500前後だったので、CrossFireで約1.5倍の性能が出ていることがわかります。CrossFireいい感じ。




ちなみに、ベンチマークソフトである3DMarksのFireStrikeのスコアが、

CrossFireで17298でした。

GTX1070Tiが15354なのでゲームのCrossFireの対応次第では1070Tiを超えるということです。激アツですね。

まとめ

約6500円でこれだけの性能のグラボが手に入るのは本当に最高です。もし普通に買うならどうしても安定のNVIDIAを選んでしまうので、今回のような機会がなければAMDグラボを使うことはなかったと思います。

今回の記事では触れませんでしたが、AMDのグラボには24fps、30fpsの動画を60fpsにフレーム補完するFluid Motionという機能があって、これがアニメを見る際に最高です。(なかなか再生できるようになるまで手順が面倒でしたが)

他にも、AMDグラボはNVIDIAとは違ってLinuxドライバがオープンなので、いろいろとメリットがあるようです。これについては今後試そうと思います。

PowerMac G5 Case Mod

概要

今メインで使っているPCのケースについて紹介しようと思います。

大学受験が無事終わった頃に、まとまった時間があったので自作PCを組んでみようと考えました。

ですが自作といっても部品を選定して、ねじ止めしてケーブル繋ぐだけだなぁと思っていたので、せっかくならちょっと変わったことをしてみようと考えました。

僕が前から好きな動画で、ゲーム機であるドリームキャストをPCに改造する、というものがあります。

www.nicovideo.jp

当時は意味もわからず、ただ面白いなぁと思っていたのですが、この動画の影響もあり、PCケースをユニークなものにしようと考えました。

ですが、さすがにゲーム機サイズのPCはハードルが高く、拡張性も欲しいしミドル程度のグラボを搭載したいとも考えていたので、巨大なサイズの箱を探していました。




https://cdn.cultofmac.com/wp-content/uploads/2016/06/powermacg5_profile-100043321-orig-780x565.png

そこで思いついたのがPowerMac G5です。中高生の頃はApple好きだったこともあり、Mac Proのデザインには憧れていました。

そしてPowerPC時代のMacということでPCとしての価値がほぼなくなっており、当時大阪の日本橋で5000円くらいで買えました。

これを改造し、ATXマザーの自作PCを搭載することにしました。

改造

PowerMacG5はHDDと光学ドライブ以外、自作PCと全く異なります。

マザーボードの形状、本体後ろ側の端子類、電源ユニット、ファンの端子....。何もかも合わないです。

そこで、本体後ろ部分を端子類の穴含め全部ノコギリで切り取ってしまい、適当なWindows PCのケースの後ろ部分を貼り付けることにしました。

金属加工は初めてだったのでそれはそれは苦労しました。

f:id:inamasujp:20190122181308j:plain

上の写真の赤で囲った部分が他のWindowsPCからひっぺがしてきた部分で、これによりATXマザーが完璧に搭載できるようになりました。

f:id:inamasujp:20190122182046j:plain
後ろから見た画像

まとめ

f:id:inamasujp:20190122183623j:plain
現在の姿

この自作PCは1年間くらいインターネット検索しながら実現可能かどうか確かめ続けて、実際に部品が完璧に収まるようになるまで1ヶ月間くらい作業していました。

そこからもM.2 SSD化によりHDDの置き場所が不要になり、それによって空いたスペースに電源ユニットを移動させたり、GTX670からGTX1070Tiへの変更時にグラボサイズ拡大に合わせて微調整を行ったりと、かれこれもう3年くらいずっといじり続けています。

この自作PCのおかげでPCについて本当に詳しくなれました。ドリルで穴を開けたりノコギリで金属を切る経験をすることができました。感謝しています。










ちなみに

このブログを書くために写真を探していたところ、こんな写真が出てきました。

f:id:inamasujp:20190122183951j:plain

f:id:inamasujp:20190122184021j:plain
ディスプレイ左:MacMini 右:自作WindowsPC

光学ドライブを入れる場所が空いていたので、そこにMac Miniを入れてMacWindowsデュアルブート....なんてこともやっていました。

AzureのWebAppsを使ってみる

概要

Azure for StudentsではAzure App Service(WebApps)が10個まで無料で作成できます。

azure.microsoft.com

Web AppsとはJavaRuby、Note.js、PHPPythonといったサーバーサイドフレームワークを使ったWeb アプリケーションをサーバーの設定無しで公開できるサービスです。いわゆるSaaSです。

今回はこれを使ってPHPのプログラムを公開してみようと思います。

Web Appsの登録

今回はPHPプログラムをデプロイするので、まずWeb Appsを選択します。

f:id:inamasujp:20190122135456p:plain

次に、アプリ名やPHPバージョン等を設定します。

f:id:inamasujp:20190122135629p:plain

作成が完了したら、サイドバーの[ダッシュボード]や[リソースグループ]から作成したWebAppsの画面に移動し、[デプロイセンター]をクリックします。

f:id:inamasujp:20190122140013p:plain

デプロイするコードのアップロード方法はいくつかありますが、今回はGitHubのコードをデプロイする方法を使います。

GitHubをクリックすると、GitHubの認証画面に移動し、そこでAzureからのアクセスを許可すればOKです。

f:id:inamasujp:20190122140255p:plain

最後にGitHubリポジトリを選択し、[続行]を押せばデプロイできます。

結果

以下のURLが今回デプロイしてみた結果です。(無料試用は19年7月までらしいのでそれ以降については今後考えます。)

https://nicocommentsgraph.azurewebsites.net

f:id:inamasujp:20190122145451p:plain

(すごく重いです。これはAzureのサーバーがUSになっていることもありますが、そもそも作成したPHPプログラムそのものが重いです。)





正直な感想として、公開までの手順が簡単すぎて本当に驚きました。

何もしなくてもHTTPSになってるし、ファイアウォールやポート解放などのすべての作業が省略されていて、話では聞いていましたが実際にやってみると今更ながらWeb界隈の動きの速さを実感しました。

ちなみに

今回試しに公開してみるために、初めてウェブアプリケーションを書いてみました。

PHPを書くのも今回が初めてなので、JavaScriptとのデータのやりとりなど悩みました。(JavaScript内に<php?でPHPコードを動かすとかわけわからん。他のやり方絶対ありそう)

HTMLとJavaScriptPHPという三つの言語をうまく書き分けることができず、ぐちゃぐちゃに書いてしまったので読みにくいプログラムになってしまいました。今後コーディングスキルを上げて、リファクタリングしたいです。

最後に、作成したプログラムについて説明しておきます。

プログラムの概要

ニコニコ動画には技術部とよばれる技術的な内容の動画が存在しますが、技術を説明するという特性上どうしても説明が長く、なにがすごいのか知る前に動画を閉じてしまうことが個人的には多いです。そこで、コメントが多くついているタイミングから再生を始めることが出来れば、その動画のポイントをつかむことができ、ニコニコ技術部タグの動画が見易くなると考えました。

プログラムの内容

ニコニコ動画の技術部タグのランキングにアクセスし、各動画のコメント数の推移をグラフで表示します。

グラフをクリックすると、ウインドウ右下にクリックした位置にシークされた動画が表示されるので、そこから再生を開始できます。

これにより、例えばコメント数が他の地点に比べて多い、つまり盛り上がっている地点から動画を再生することができます。

プログラムの実装方法

PHPによる処理

ニコニコ動画のランキング情報のxmlを取得します。

そのxmlから取得したランキングの動画URLにアクセスし、動画ページ内に存在する動画コメントサーバー用ID(Thread id)を取得します。

この動画コメントサーバー用IDを使ってコメントサーバーから動画のコメントの最近1000件をjson形式で取得します。

このjsonデータからコメントの動画内の地点(vpos)をまとめてCanvasJSに表示できるよう整形します。

Java Scriptによる処理

PHPで整形したグラフのデータをCanvasJSでグラフ描画します。

グラフがクリックされた際にはその位置にシークされた動画再生画面を右下のiframeに呼び出します。

ニコニコ動画は同時再生が5件程度までしか許可されていないようなので、5件ごとの表示とし、その表示範囲の選択のHTMLフォームの処理(変更の取得、Cookieの処理など)を行います。

AzureのData Science Virtual Machineを使ってみる

今回は前回登録したAzure for Studentsを使って、学生の無料クレジットの100ドルを使ってメモリを多く使う数値解析プログラムを動かすためのVMを借りてみます。

前回 inamasujp.hatenablog.jp

VMの作成

Azure画面のVirtual MachinesからVMを作成することはできますが、今回Python、Jupyter環境を使用したいので、[+ リソースの作成]から「Data Science Virtual Machine」を検索し選択します。

f:id:inamasujp:20190122015305p:plain
Data Science VM 初期画面

これにより、JupyterHubやAnaconda Python 3.5 等が最初からインストールされた状態でVMを作成できます。

VMのタイプについてですが、どうやら学生アカウントでは選択できるタイプに制限がかかっているようです。

巨大なメモリを搭載しているVMを選択しようとすると、クォータが足りないというエラーがでます。Azureではサービスの使用制限をクォータという値で管理しているようです。

参考URL : https://docs.microsoft.com/ja-jp/azure/azure-subscription-service-limits

いろいろ試した結果、学生アカウントで使える最もメモリの大きいVM東南アジアリージョンなどで使える「Standard G2」(CPU4coreメモリ56GB)のようです。

f:id:inamasujp:20190122020910p:plain
AzureDC設定画面

このように設定し、このVMで使うユーザー名やSSHキーなどを入力すれば作成できます。JupyterHubのポートなどが最初から解放されているので本当に楽です。

f:id:inamasujp:20190122021054p:plain
AzureDC検証画面

使用料金は1時間約150円とのことです。使用していない間はちゃんと停止しましょう。

JupyterHubの利用

VMの作成が終わると同時に環境構築はほぼ終わりです。

設定したSSHキーを使ってSSHでログインし、

  • ユーザーのパスワードを設定
  • JupyterHubのSSLの設定

をすればブラウザから[VMIPアドレス:8000]でJupyterが使えるようになります。

f:id:inamasujp:20190122021831p:plain
メモリ容量

わーい56GBメモリ環境だ〜!!数値解析プログラムを実行するぞー

f:id:inamasujp:20190122022030p:plain

おや??

f:id:inamasujp:20190122022114p:plain

????????









足りませんでした。

Azure for Studentsを使ってみる

概要

大学の数値解析の講義で、好きなデータで主成分分析を行えという自由課題が出されました。ちょっと面白そうだと思って自分の選んだデータが少々巨大で、自宅PC環境ではPythonのMatplotlibがどうしてもメモリリークを起こしてしまいました。

そこでクラウドサービスを探し始めたのですが、学習用途だしどうせなら学生向けに無償で提供されているサービスが良いなぁと考え、Azure for Studentsに登録してみました。

Microsoftの学生向けサービスはDreamSparkだとかImagineだとか名称や内容がいろいろあって本当にややこしいですが、ひとまず現在(2019年1月)時点で、学生向けクラウドサービスはAzure for Studentsと呼ぶようです。

登録にクレジットカードが不要で、1年間有効な100ドル分の無料枠が使えるようです。 また、毎月、B1SインスタンスLinux VMWindows VMをそれぞれ750時間、無料で使えるようです。MicrosoftなだけあってWindowsVMも無料枠に用意されていますね(Windows Serverってどういう時に使うんだろう)

Web Appsも制限付きで使えるようですね。今度何かPHPで動くものでも公開してみます。

具体的な無料枠の日本語の説明は以下のURLです。 https://azure.microsoft.com/ja-jp/free/free-account-students-faq/

登録

登録するとこんな画面になりました。

私の大学は学生アカウントがOffice 365になってるので、ログインしたらその他登録無しで開始できました。もしそうでない方はac.jpのメアドなどの登録が必要だと思います。

f:id:inamasujp:20190121160658p:plain
Azure 初期画面

ここからAzureが提供している機械学習用のクラウドサービスで数値解析してやろうと考えていたのですが....

Microsoft Azure Notebooks

https://notebooks.azure.com

はJupyter Notebookと全く同じ操作方法で使えるので便利そうだと思いましたが、ここで提供される計算資源はなんとメモリ4GBまでらしく...

今回、メモリ16GBの自宅PCでメモリリークを起こしたプログラムは当然ながら動きませんでした。

なのでVMを借りてそこでJupyterを動かすしかなさそうです。

PYNQ-Z1でカスタムオーバーレイを試す

概要

Digilent社製のFPGA 「PYNQ-Z1」を手に入れました。

このFPGAは基板上にARMプロセッサも搭載しており、このARMにてLinux環境が動作します。そして、これがこのFPGAの最大の特徴ですが、デフォルトでJupyterが立ち上がっており、PythonプログラムでFPGAに回路を書き込むことができます。

そのため、PCで設計した回路をSCP等でARM上のLinuxに送り、そこからJupyterでFPGAに回路書き込み、動作確認まで行えます。とっても便利です。

このARM上のLinuxからFPGAに回路を書き込むことをオーバーレイといい、自分のPCで設計した回路を書き込む、カスタムオーバーレイを試してみます。

PC上にVivadoのインストール

開発環境はWindows 10で行いました。 まず、Vivado 2018.2 WebPackをインストールします。

github.com

ここからpynq-z1フォルダをダウンロードし、C:\Xilinx\Vivado\2018.2\data\boards\board_filesにコピーします。

Vivado 2018.2 と Vivado HLS 2018.2のふたつのアプリケーションがインストールされますが、今回はHLSが付いていない方(Vivado 2018.2)を起動します。

New Projectを選択し、ファイルを追加したりはせずにNextを押していき「Default Part」画面まで進めます。

ここで、SelectでBoardsに切り替えるとPYNQ-Z1が項目に出てきます。ない場合はpynq-z1フォルダのコピーが正しくできているかを再確認してください。

Finishを押すとメイン画面が立ちあがります。

Lチカ回路を作成

qiita.com

この記事がすごくまとまっているので、これ通りに進めました。

FPGAへの書き込み

ここからPYNQの特徴を活かし、Jupyterからビットストリームを読み込みます。

Vivado の「File」から「Export」を選択し「ExportHardware」でビットストリームをエクスポートし、「led.bit」といったファイル名で保存します。

次に、ブロックデザインを表示した状態で「File」>「Export」>「Block Design」を選択し、ブロックデザインを「led.tcl」といったファイル名で保存します。

この二つのファイルをPYNQ-Z1にsambaやSCPコマンドで転送します。

Jupyterでノートブックを立ち上げ、

from pynq import Overlay
 OL = Overlay("led.bit")

と入力すればLEDが高速点滅するのが確認できます。すごい。

ちなみに、

from pynq.overlays.base import BaseOverlay
base = BaseOverlay("base.bit")

とすればベースビットストリームを書き込み、PYNQのFPGAをデフォルトに戻すことができます。

参考ブログ

http://todotani.cocolog-nifty.com/blog/2017/01/pynq-z1overlayp.html

Lチカを低レベルな処理で実装しています。勉強になりそう。 ちなみに、ここにOverlayの再読み込み時にはNoteBookをshutdownすべきとなっています。要調査。

http://todotani.cocolog-nifty.com/blog/2017/02/pynq-z1overlayp.html

上のLチカをクラスを用いるプログラムの例が載っています。

http://bekan.hatenablog.com/entry/2017/12/06/195156 にて足し算回路をJupyterから呼び出す例が載っています。

iMac 外部ディスプレイ化

iMacが壊れました。













iMac 27inch 2011年モデルを使っていました。長く使っており気に入っていましたが、写真のように映像に乱れが見え始め、とうとう起動に失敗するようになりました。

f:id:inamasujp:20190122161806j:plain

実はこのiMacGPUのクラックが問題となっており、一時期リコール対象となっていました。

残念ながら壊れたのがリコールが終了した後で、さらには壊れた前の月にちょうどビンテージ製品扱いになり、Appleは有償でも修理を受け付けないとのことでした。

非正規修理に頼むのもなかなかにお金がかかるらしいし、eBayなどで交換部品も探しましたがこれもなかなかの金額で、2011年モデルのスペックにその金額の価値はないと思い、最終的に修理は諦めました。




しかしながら処分してしまうのはあまりにもったいないので再利用の方法を考えました。

メモリ、CPU、HDDは当然他のPCで再利用できます。ですが、それだけではもったいないです。

このiMacの一番の目玉は27インチ2560x1440ピクセル液晶ディスプレイです。

この解像度、サイズの液晶ディスプレイは普通に買うとそこそこ値段します。

どうにかこのディスプレイを外部ディスプレイにできないかを調べました。













f:id:inamasujp:20190122163303j:plain

eBayにありました。




iMacに搭載されている27インチLG製液晶パネルをDisplay Port端子入力で表示できるようにするコントローラ基板です。

送料込みで45.6USDもかかり、しかも中国の個人の方(?)からの発送ということで心配でしたが、勢いで購入したら無事届きました。




それではiMacに取り付けていきます。

まずiMacのカバーガラスを取り外します。これは磁石でくっついているだけなので吸盤などを使って引っ張れば取れます。

カバーガラスに隠されていたネジを外せば、液晶パネルも取り外せるようになります。ここでケーブルをちぎらないように注意します。

f:id:inamasujp:20190122164252j:plain

取り外すとこんな感じになります。27インチモデルということで密集度がそれほどあるわけではないですが、 マザーボードGPU、ディスプレイやPCの電源ユニットがきれいに収まっていて、そしてエアフローも考えられていて、とても綺麗ですね。

ここから各部品を取り外します。

f:id:inamasujp:20190122164611j:plain

マザーボードにUSBやイーサネット端子がそのままくっついていて面白いです。

なお、CPUは普通のi5-2400でした。これは同じSandy Bridge世代のWindowsPCに載せ替えて使おうと思います。

f:id:inamasujp:20190122164915j:plain

これが故障したGPUです。オーブンで焼いたら一時的には直るかもしれませんが、今回はやめておきます。

f:id:inamasujp:20190122165126j:plain

すっからかんになりました。



それではここに中国から届いたディスプレイコントローラ基板と液晶パネルを入れていきます。

f:id:inamasujp:20190122165528j:plain

残ったネジ穴を使って基板をぶら下げる形で収めました。










f:id:inamasujp:20190122170127j:plain

Windows PCとDisplay Portで接続し、無事に外部ディスプレイ化できました!!