type t (* void *)

関数型言語や英語学習の事とか。

OCaml: RWOを読み進めるためのOCaml設定

20150426加筆 RWOの説明を書いた
20150422加筆 より細かく書いた

20150909加筆 以下の内容はDebian 7向けに書かれており古いです! Debian 8ではより簡単にopamをインストール出来るようになっています! 下の記事では重複する部分は書きませんでしたが、インストール方法については下の記事が最新です。

no-maddojp.hatenablog.com

なんかちょっとだけOCaml環境構築が面倒みたいな話があったので、構築手順を書く。
大体確かめられた手順なのでよいはず。

Emacsのインストールまで解説しますが、RWOを読み始めるにあたりエディタの設定は必ずしも必要ではありません。
楽しんで下さい。

続きを読む

Jetson TX2: CUDA_sampleが動作するまで

こんなオタクデバイスを買ったのだけど、サンプルを動かすまで割とハマったのでメモしておく。
何一つ新しい情報はないけどまぁ他の人の時間が節約されて欲しい。。。。

Jetpackのインストー

Jetson TX2は買った状態で何かしらのUbuntuがはいっているけども、これを上書きしてALL in OneのパッケージであるJetpackを入れるのが正規の手段らしい。

developer.nvidia.com

最初困ったのはこのWEBページを見てもドキュメントがどこにあるのかわからないこと。
じつは「Release Noteはここだよ!」って書いてあるリンクの先がドキュメントになっている(???????????

基本的にインストールのガイダンスに従うだけでOKなのだけど、en設定のUbuntuをホストにして書き込みを行わないといけなかった。
JP設定のUbuntuでは中途半端な状態でインストールが終了してしまい、必要なツールが入っていない状態で異常終了してしまいます。

CUDAのサンプル実行

cuda-install-samples-8.0.shを実行するとサンプルプログラムが展開される。
なんとCUDAサンプルはそのままでは動かない(???????
霊感でエイヤと修正が必要。

commonの設定

下のリンクに書いてあるパッチを当てる。

https://devtalk.nvidia.com/default/topic/999381/jetpack-compiling-oceanfft-on-tx2/

libGL.soがなんか変

5_simulatorとかのサンプルを動かそうとするとリンクエラーでビルドできない。
主にlibGL周りの関数への未定義参照。

おそらく/usr/lib/aarchi64-linux-gnu/などにあるlibGL.soが腐っており、-L /usr/lib/aarch64-linux-gnu/tegraが必要。

おまけ:性能

nbody --benchmark --numbodies=256000で色々なGPUで性能を測った記事があったので同じサンプルプログラムを動作させてみた。

nvidia@tegra-ubuntu:~/sample/NVIDIA_CUDA-8.0_Samples/5_Simulations/nbody$ ./nbody --benchmark --numbodies=256000 --device=0
Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
        -fullscreen       (run n-body simulation in fullscreen mode)
        -fp64             (use double precision floating point values for simulation)
        -hostmem          (stores simulation data in host memory)
        -benchmark        (run benchmark to measure performance)
        -numbodies=<N>    (number of bodies (>= 1) to run in simulation)
        -device=<d>       (where d=0,1,2.... for the CUDA device to use)
        -numdevices=<i>   (where i=(number of CUDA devices > 0) to use for simulation)
        -compare          (compares simulation results running once on the default GPU and once on the CPU)
        -cpu              (run n-body simulation on the CPU)
        -tipsy=<file.bin> (load a tipsy model file for simulation)

NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

> Windowed mode
> Simulation data stored in video memory
> Single precision floating point simulation
> 1 Devices used for simulation
gpuDeviceInit() CUDA Device [0]: "GP10B
> Compute 6.2 CUDA device: [GP10B]
number of bodies = 256000
256000 bodies, total time for 10 iterations: 36523.914 ms
= 17.943 billion interactions per second
= 358.866 single-precision GFLOP/s at 20 flops per interaction
nvidia@tegra-ubuntu:~/sample/NVIDIA_CUDA-8.0_Samples/5_Simulations/nbody$

qiita.com

まとめ

サンプル動作をテストしてから出荷してくれ。

ARM: Cortex-A53の実験

計算機がわからない。
ので実験を2つほど。

追記:
ろんだくん@fetburnerから「fadddとaddは同時に実行されているだろう」という指摘をうけました。
確かにALUとFPUは独立している回路なのでやってできないことはない筈です。
分岐命令の実行時間が無視できなくなっているのではないかということです。
解釈が間違っている可能性がありますので近日中に見直します。

ちなみに分岐命令のクロックを図りました。多分分岐予測に成功するときで3クロックです。

gist.github.com

続きを読む

ARM: Rasberry pi 3でinstruction per cycleを測ってみたが……?

更新:
全部の実験で命令の総数を揃えました。
分かりにくくてすみません……

計算機が全くわからない。
俺たちは勘で計算している。 どなたかこの解釈について教えてほしいです。。。。。

続きを読む

C: マクロ定義の中にプラグマを書きたい

残の業。

続きを読む

OCaml: hello world!が実行されるまで

前一度調べたので記事をまとめておく。
OCamlプログラムの初期化は複雑だなぁ思った次第です。

続きを読む

一般の話: sshdに不正アクセスを試みたユーザ名を雑に調べた

ウェブコワイ。
sshdをDynamic DNSを使って自宅鯖に立てているのだけど、/var/log/auth.logをみるたび肝を冷やすので 不正アクセスを試みているユーザ名を雑に調べた。

ユーザ名を見ているとOSSのソフトウエアをインストールするとデフォで作られるユーザ名を狙った物が多くて、 次になんかありがちっぽい名前を狙っている感がある。

続きを読む