投稿

10月, 2022の投稿を表示しています

OpenMythosのサンプルプログラムを動かしました

1.概要 前回、OpenMythosの環境構築まで実現したので、GitHubにあるサンプルプログラム(Usage)を動かしてみました。一部エラーが発生しましたが、結果出力部分なので修正をしました。その内容を記述します。 2.詳細 Usageに記載されているPythonプログラムをopenmythos_usage.pyとして作成します。 $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py 下記エラーとなります [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) Traceback (most recent call last):   File "/home/nakasima/openmythos/openmythos_usage.py", line 48, in <module>     rho = torch.linalg.eigvals(A).abs().max().item()           ^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: linalg.eig: The input tensor A must have at least 2 dimensions. コードの下記部分を修正します #rho = torch.linalg.eigvals(A).abs().max().item() rho = A.abs().max().item() $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) [MLA] Spectral radius ρ(A) = 0.3679 (mus...

PCクラスタを利用したHPCの試験構築

 1.概要 PCクラスタを利用したHPC(high-performance computing)がどのようなものであるかを調べているとOpen MPIを見つけました。Open MPIはHPCのライブラリで具体的な構築方法を探していると大学のWebサイトでMPIを利用し、Ubuntu Serverをベースとした環境構築資料を見つけました。 試験的な構築をするため、Ubuntu DesktopのKVMを利用して、VMのUbuntu serverでhpcの仕組みを調べてみました。その内容を記述します。 2.詳細 (1) 導入手順 (a) kvm install (b) ubuntu-20.04 server install (c) ip-address変更(vmは192.168.122.10, 192.168.122.20に設定) (d) ubuntu update (e) vm clone(vm ubuntu serverを2台構築) (f) hostname変更 (g) master node(ubuntu desktop)にnfs-server構築 (h) worker node(vm ubuntu server)にnfs-client構築 (i) open MPIをmaster node, worker nodeに導入 (j) sshの追加設定 (k) sample programのmaster nodeでbuild (l) maser nodeでsample program実行 (m) worker nodeでsample program実行 (2) 詳細 (a)〜(f)までは、本ブログのkubernates in kvm(2022-09-02を参照願います) (g) master node(ubuntu desktop)にnfs-server構築 $ sudo apt install nfs-kernel-server nfs server設定 $ mkdir /home/username/share /etc/exportsに下記1行を追加 /home/username/share 192.168.122.0/24(rw,async,no_root_squash) (h) worker node(vm ubuntu server)にnfs-clien...

各国割当IPアドレス範囲を様々な形式のIPv4表記変換の検討

1.概要 IPアドレスがどの国に割り当てられているかを調べるためには、まず、各国のドメイン名を調べて、次に、その国に割り当てられたIPアドレスセグメントを調べます。PythonによるIP変換処理のプログラムルーチンができているので、調査方法を記載します。 2.詳細 JPNICのドメイン名の種類でccTLDを調べます。日本はjpですね。次に、jpに割り当てられているIPセグメントをfetusで調べます。これで必要な情報を収集できたので、処理を記述するだけになります。今回は手順のみを記述します。 本ブログのIPアドレス変換処理のcodeを参照の上、活用してください。 (1) 手順 日本に割り当てられているIPアドレスセグメント表記をIPアドレス範囲表記に修正後、数値形式にします。 (a) 日本に割り当てられたIPセグメント一覧を入手します (b) セグメント記述(1.0.16.0/20)をIPアドレス範囲に修正します。 (c) IPアドレスを数値形式に変換します。 (d) 不明なIPを数値形式に変換後、日本に割り当てられたIPか否かを調べることが容易にできます。 調査するIPが大量となる場合は、照合処理が必要ですが、容易にpythonで作成できます。 参考 [外部サイト参照] ・ ドメイン名の種類 ・ 日本に割り当てられたIPセグメント

IPv4アドレス範囲をサブネット方式からネットマスク方式へ変換(python版)

1.概要 IP addressの範囲指定方法は、192.168.0.0/24などのセグメント記述方法と192.168.0.0-192.168.0.255とIPアドレスの範囲を指定する方法があります。今回は、セグメント記述方法をアドレス範囲記述方法へpython3のプログラムで変換します。 2.詳細 (1) 変換方法 以下のような変換ができることを目標にします。 "192.168.0.0/24"  =>  ['192.168.0.0','192.168.0.255'] "172.16.0.0/16"   =>  ['172.16.0.0','172.16.255.255'] "10.0.0.0/8"      =>  ['10.0.0.0','10.255.255.255'] (2) python3の関数(ipseg.py) すこし、考えて処理を記述しました。 def seg2rng(segment):     seg  = segment.split("/")     ips  = seg[0].split(".")     ipe  = seg[0].split(".")     mask = int(seg[1])     wk0  = mask//8     wk1  = 2 ** ((wk0 + 1) * 8 - mask) - 1     wk2  = int(ips[wk0]) + wk1     ipe[wk0] = str(wk2)     for i in range(3,wk0,-1):         ipe[i] = "255"     return ['.'.join(ips),'.'.join(ipe)] if  __name__ == "__main__":     print(seg2rng("192.16...

一般的なIPv4アドレスと数値IPv4アドレスの相互変換(python版)

1.概要 前回、shellを利用してIPアドレスを変換する処理を記述しました。しかし、国レベルに配布されているIPアドレスセグメントを変換するにはshellでは処理に時間を必要とします。 そこで、bash shellで記述した処理をpython3で書き直しました。本ブログのIP address convert using shellを参照してください。大量に変換処理をすると、bash shellよりもpython3の方が非常に高速です。今回は、この内容を記述します。 2.詳細 (1) 作成したapp(ipconvert.py) def ip2dec(ip):     ip = ip.split(".")     result = 0     for i in range(0,4):         result = int(ip[i]) * 256 ** (3 - i) + result     return result def dec2ip(dec):     result = ""     for i in range(0,4):         item = dec // 256 ** (3 - i)         result = result + str(item)         if  i != 3:             result = result + "."             dec  = dec - item * 256 ** (3 - i)     return result if  __name__ == "__main__":     print(ip2dec("192.168.10.1"))     print(dec2ip(323223808...

一般的なIPv4アドレスと数値IPv4アドレスの相互変換(shell版)

 1.概要 セキュリティが話題となる中で、フィルタリングされたIPアドレスを調べたいと思うことがあります。whoisやcmanを利用することで調べることができるIPアドレスがありますが、調査が難しい場合もあります。国単位に配布されたIPアドレスは公開されているので、どこの国のIPアドレスであるかを調べることはできます。 2.詳細 IPアドレスの配布はセグメント単位です。IPアドレスがIPアドレスセグメントに含まれているかを調べる必要がありますが、IPv4のIPアドレスはドットで分割されたアドレスです。例えば、192.168.10.1などです。しかし、この表記の場合、あるIPアドレスがIPアドレスの範囲(192.168.9.0 - 192.168.10.255)に含まれていることを調べるには不便です。そこで、IPアドレスを10進数に変換してから調べます。 192.168.9.0     =>  3232237824 192.168.10.1    =>  3232238081 192.168.10.255  =>  3232238335 上記結果から数値化することで、大小比較が容易できます。そこで、IPアドレスを10進数に変換する処理をshellで作成しました。今回はその内容を記述します。 (1) 作成したshell(bash) (a) ipから10進数(ip2dec.sh) #!/bin/bash ip2dec(){ echo $(($1 * 16777216 + $2 * 65536 + $3 * 256 + $4)) } IP1=$(echo $1 | tr "." " ") ip2dec $IP1 (b) 10進数からip(dec2ip.sh) #!/bin/bash dec2ip(){ a=$(($1 / 16777216)) x=$(($a * 16777216)) b=$((($1 - $x) / 65536 )) y=$(($b * 65536)) c=$((($1 - $x - $y) / 256)) z=$(($c * 256)) d=$(($1 - $x - $y - $z)) echo "$a.$b.$c.$d" } dec2ip...