ナカナカピエロ おきらくごくらく

写真付きで日記や趣味を書くならgooブログ

JavaがHPC分野で使われない理由

2020-09-18 15:34:31 | 日記
JavaがHPC分野で使われない理由

JavaがHPC分野で使われない理由は多次元配列のメモリ構造にある。

ここでは簡単に2次元配列を考えてみよう。

Javaの場合、指定行の要素分の配列が列数分あり、それぞれの行配列のアドレスを指す配列がさらに別にあり、

要素にたどり着くのに、二段階のアドレス参照の手続きを踏む。

C言語であれば、指定行の要素分の配列の後に連続して次の列の行の配列が、と連続的にメモリを確保するため、

要素にたどり着くために、一発のアドレス参照(i*N+j)*sizeof(type)で簡単にアクセスできる。

C++もCに同じ。Fortranは列と行の並び方がC/C++と逆だが、やはり連続的にメモリを確保するため要素のアクセス

は一発のアドレス参照で済む。

Pythonは配列(行列)の扱いをNumpyに任せて、Cで実装しているからJavaよりマシである。

Juliaはどうだか調べていない。

他にも理由はあるが、これはかなり痛い仕様である。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Linux番外編 逆アセンブルしてみよう

2020-09-18 13:38:00 | 日記
Linux番外編 逆アセンブルしてみよう

プログラムというものは最終的にはアセンブルコードまたは疑似アセンブルコード(バイトコード)で動作する。

よりプログラムの挙動を正確に捉えようとするならば、逆アセンブルして調べるのが一番確実である。

ここではLinux番外編として、逆アセンブルツールについて書いてみようと思う。

●Linuxのロードモジュール(or オブジェクトファイル or 共用ライブラリ)

  $ objdump -d <該当モジュール>

  gdbで見たい時にはサブコマンド"disas"で見れる。

●Javaのバイトコードを観たい

  $ javap -c <クラスファイル>

●Pythonの疑似コード

  >>> import dis
  >>> dis.dis(<関数名>)

●Julia

  julia> @code_native 関数名(実引数値,・・・)

とりあえず、これだけ知っておけばいいのかな。。。皆、低レベルのコードを毛嫌いする傾向があるけど、

ここまで読めると楽しくなるんだけどな。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Linux小話 ulimitコマンド

2020-09-18 12:17:24 | 日記
Linux小話 ulimitコマンド

随分前の話である。

某大学に収めたスパコンを各大学にリモート課金で貸し出していた。

そのスパコンはもちろん自社製でハードからOS、C/C++/Fortranコンパイラも自社で提供していた。

で、九州の某大学でリモート課金で使用していたC++プログラムがを異常終了するという

クレームが入って調査した。

某大学からは調査のためとお断りをして全ソースコードをもらい、こちらでビルドして動作確認したが

再現しなかった。ということで上長(当時主任)とペーペーの私とで現地入り。

まず大学の研究室の一画を借りて、デバッグ用の端末の配線から始まり、再現確認。

確かに再現した。何度か試しているうちに上司がはっと頭を項垂れて気が付いた。

stack overflowを起こしていたのだ。

某大学ではリモート課金で貸し出しているマシンリソースとして、stack sizeは1KBytesしか与えて

いなかったのだ。ユーザ毎のリソースは、"ulimit -a"コマンドで調べられるし、サイズも変えられる。

詳しくは、manコマンドにて見てほしい。

しかし某大学のマシン設定では、ulimitコマンドでstack sizeを変更するにはroot(スーパーユーザ)権限

が必要だった。

仕様がなかったので、私はsetrlimitシステムコールでstack sizeを十分なサイズに変更してから、

fork-execして顧客のプログラムを起動するlauncherプログラムをC言語で書いた。

見事に顧客のプログラムは異常終了することなく、プログラムが動作したのである。

まあ、今から思うとOSのセキュリティホールだと思うのだが、蓋を開けてみれば単純な問題であった。

リモート課金を提供している某大学には秘密でlauncherプログラムの使用をお願いしますと釘を打った。

その後、九州の某大学からは、個別にスパコンのコンパクトモデルを購入して頂いた。

まあ、親身に対応すると売り上げに貢献できるときもあるのだなと思った。

九州土産を週末、実家に帰って、父と母に上げた。父が亡くなったのはその一週間後だった。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする