2018/04/14

LinuxはデュアルブートよりUSBブートのほうがいい

Linuxのデュアルブートは難しく、設定を間違えると起動しなくなったり、Windowsが使えないというのはいまだに一大事です。
しかしUSBハードディスクやUSBケースに入れたSSDは、Linuxに手を出しそうな人は持っている人が結構多いでしょう。
USBハードディスクのデータをどっかに移して、インストーラーでそのハードディスクを指定するだけです。
さらにLinuxディストリビューションによってはリロケータブルカーネルとinitrdとGRUB2によって、別のパソコンに移せるので、
たぶん有名なディストリビューションならほとんど対応しているんじゃないかな。別のパソコンでもUSBから起動できます。
起動メニューはBIOSの起動セレクト画面を使えばいいです。HPならF9キー ASUSならESCキーです。
UEFIブートをやろうとするとWindowsにブートローダーを上書きされるので注意!
USBは2.0のほうが確実に起動します。
正しいハードディスクを指定さえすれば、ひやひやする必要はありません。

なお当然ですがWindows側の時計をUTCで管理するレジストリー設定が必要です。
もうひとつ、Windowsの高速スタートアップを無効にする必要があるかもしれません。そうしないとBIOSの起動セレクト画面が出ないことがあります。
スポンサーサイト
2018/03/29

新たな画像拡大方式 DCCI

非常に高速で、人工知能ではないのに非常に図形認識に優れた
方向性キュービック畳み込み補間 Directional Cubic Convolution Interpolation
を試してみましょう。
これは2倍づつ拡大出来ます
ピクセル列の連続、エッジ方向を検出することで、縞模様だってお手の物です。
https://github.com/revent-studio/organa_hqx
このアメリカのウェブデザイナーのpython2実装がおすすめ
opencv2とnumpyも必要
ダウンロード、解凍してから、packages/にenum.pyを入れる必要がある。
https://github.com/OnoArnaldo/PythonEnum
こんなpythonスクリプトで簡単にやってみよう
dcci-2x.py
import cv2
import numpy as np
import packages.dcci as dcci
import img_resources as imr
import sys

N = 1

imgT = cv2.imread(sys.argv[1], cv2.IMREAD_COLOR)
img = dcci.Dcci(imgT,N)
cv2.imwrite(sys.argv[2],img)

$ python2 dcci-2x.py input.jpg output.png


なんと、森の中を走る電車のパンタグラフがちゃんとなめらかな、かつはっきりした線に見えるし、
N = 1 を増やして、N²のサイズに拡大しても、そうおかしくはならないです。わずかにぼやけているだけです。
DCCIのアルゴリズムはまだRGBカラーの統合が決まっていないのですが、 さすが ウェブデザイナーの実装はセンスが光りますね。
元の画像:© 2016 Jee & Rani Nature Photography. Creative Commons Attribution-ShareAlike 4.0 International License. Wikimedia Commons, the free media repository: https://commons.wikimedia.org/wiki/File:Orthetrum_luzonicum-Kadavoor-2016-09-08-001.jpg.
元の写真

2倍に拡大で品質を見比べよう

GIMP標準のlanzcos3
GIMPのlanzcos3で拡大

以前このブログでべた褒めしたAVIRで拡大
AVIRで拡大
なおいわゆるオープンソースではない。

リククーブログ開発(ライフハッカーのパクリ+自動化)のリフレックスリサイズで5倍のバイキュービックで縮小
reflex-resizeで拡大
ボケすぎている。遠目で見たらこんなモノ、そのぐらいの出来。

waifu2xで拡大
waifu2xで拡大

DCCIで拡大
DCCIで拡大

なんと!DCCIはトンボの羽の、あの繊細な細さを、JPEGノイズまでとって表現できている❢
waifu2xに一見匹敵する画質ですが、そうwaifu2xにやらせると全部二次元っぽく絵の具で塗ったみたいになるので、これはDCCIのほうが上手でしょう。
なお二次元画像の品質はDCCIはwaifu2xに負けました。人間が描いた二次元画像は、人間の作った人工知能で十分に学習できるのですが、
自然界の画像は学習しきれないので、従来の手続きプログラミングを進化させて表現するべきです。
数百年展示されるような本物の芸術の画像も人工知能は理解できているとは思えません。

なおAVIRは手に入る画像拡大方式としてコテコテにx86_64に最適化されているので、出力は結構速いです。

これからの4Kディスプレイであんな画像がより綺麗に見えるのだから Windows版の実装もだれかやるべきでしょう。
なお、アセンブラでDCCIを究極に最適化すると、720x512の画像が0.33秒で拡大できるといいます。
計算機アーキテクチャを考慮した高能率画像処理プログラミング Norishige Fukushima, Associate Professor - Nagoya Institute of Technology
DCCIは実はかなり高速だというわけです。
# 実はDCCIは中国の大学で中国人によって発明された。日本では4Kテレビに導入されそうだ。日本はこれから何で世界と勝負するべきか。技ですらない、心ではないのか。
2018/02/21

日本はIT後進国、だが・・・

日本はIT後進国で、ソフトウェア開発はデスマーチに3次4次下請けに納期駆動開発にパッケージでなく特注ソフトに
大企業や行政になるほど動きが遅くなる。まあ色々叫ばれてきました。
なんだかんだ日本初で優秀なソフト、優秀なWebサービスは世界にどれだけ進出できたのでしょうか。

・・・しかし、絶対に忘れてはいけないことはある。
それはゲーム開発では世界の第一線にあると言うこと。

つまり、人生はゲームだという説まであるぐらいだし、だったら仕事もゲーム、業務ソフトの操作もゲーム、
ゲームを作る感覚で業務ソフトを作ってもいいんじゃないの?
ゲームの開発を参考にすればきっと内製で素晴らしいソフトを作れるのが日本だし、
Nintendo Switchの設計もおそらく日本のインテリジェントシステムズあたりが関わっているから、この辺、
組み込みコンピューターもきっと日本には作り方のノウハウがあるはず。

またゲームというのはソフトウェアのありとあらゆる要素が入っている。
だから、ゲームエンジンで業務ソフトを作るのも、不可能ではないし、ゲームエンジンなら特殊なUIもさくっとできてしまうはず。
ゲームエンジンを使えばGUIの悩みは吹き飛ぶと思います。オープンソースのGodot Engineなども使えます。

ゲーム業界のやる気や仕組みを真似して、日本を本当のIT大国にできる。まあアメリカに怒られないように慎重に力を蓄えていこう。
2018/02/13

コンピューターの計算量を減らす?

北朝鮮はついにいろいろな外国からコンピューターの供給が止められているようです。
しかし、というか、昔から、少ない処理能力で大きな計算をやる研究って、なんかあった気がするんです。
あの輝かしいSFの未来がまだきていないなんて怪しいじゃないですか。

だがその前に、まず自閉症の人を雇うことをおすすめします。人間の言葉がわかるが、
結構コンピューターみたいなことができるんですよ。能力はそれぞれ全く違うのですが。
いやそうでなくともLinuxが使えたりして、コンピューターのことが得意な人も結構います。
だから職場のITレベルがいきなり上がるかもしれないというわけです。
ただコンピューターに本当に自信のある人って、金をつまないとこないんです。でも一人で何人分もの働きをします。だから海外に逃げてしまう。


かつて、詐欺を働くような怪しい科学者が言ったんです。自称ロシアの学会にいると。
それで、因数分解で計算量を落とせると言っているんです。
ところが当方が試したところ、二進数がすでに2の累乗で因数分解されているのでこれ以上の符号化は難しい。
だが素因数分解した形なら素数は別として劇的に計算量を減らせるはずです。
素因数分解自体は非常に負荷がかかるが、逆に大きな数は小さな数の幾らかの掛け算だけで作れるので、小さな数をいくつもデータとして手に入れることが肝心。

もうひとつは、暗号ブロック計算を「圧縮ファイル」に適用することだと思われます。
暗号化したまま計算できるのなら、言えるのは圧縮したまま計算できて、計算量が減るという事です。
繰り返しの多いデータにはかなりの効果があるでしょう。

ここまで言っておいてなんだが、実は私は数学ができないので、この妄言の証明ができない。これからはまかせます。
2018/02/10

KPTIによるパフォーマンス低下を取り戻したいが?

更新!本当にシステムコールやファイルシステムのつまりを計測できるベンチマークは configureスクリプトだ!
Arch Linux カーネル 4.15.3-2-ARCHで
gzip-1.9のconfigureスクリプトを noptiで起動 カーネルオプションなし 透過ヒュージページあり 透過ヒュージページ+IOMMU有効+pci_bus_perfで
timeを測定したら、それぞれ
nopti

real 0m17.582s
user 0m10.089s
sys 0m5.486s

Transparent Huge Pages 無効

real0m17.124s
user0m10.393s
sys0m5.690s

特別な起動オプションなし

real0m17.581s
user0m10.556s
sys0m5.681s

カーネルオプションに次を付加 "pci=pcie_bus_perf intel_iommu=strict"

real0m17.040s
user0m10.327s
sys0m5.674s



usrに対してsysが半分もあるのに大した差が出なかったので、

私のArchLinuxがいまカーネル4.15.3.2だから、もうこのバージョンでは徹底的にパフォーマンスの低下が抑えられているとみた。
intelのパッチがクズだといったリーナス氏以下カーネルハッカーの実力は人の事を言える以上に本物だったようです。ぜひ最新のカーネルを導入しよう!

Linuxの「Meltdown」パッチが大きなオーバーヘッドを引き起こす?--Netflixのエンジニアが指摘 ZdNet JapanによるとHuge Pagesは本当に効果があるみたいですね。
Huge Pagesは呼び出さないと使えないしメモリ領域も確保が必要です。
Transparent Huge Pages=透過ヒュージページはちょっと遅いがどのアプリでも使えます。
おそらくデフォルトで有効。有効にするには

# echo madvise > /sys/kernel/mm/transparent_hugepage/enabled


ただし本当にHuge Pagesに対応しているとくにデータベースではおかしなことになる。
#高速化ではなく省エネルギーのための最適化の時代が始まった 今俺が始めた なおSSDも標準的な性能なら大きな省エネにつながる 超高速タイプは必要なところにだけ使おう。