2021年4月23日金曜日

HSPICE の Advanced Server/Client モードでマルチスレッドシミュレーションを行う

以前の記事
HSPICE で Advanced Server/Clientモードを使う
https://kawaiihaseigi.blogspot.com/2016/10/hspice-advanced-serverclient.html
でマルチスレッドもどきを実現したのだけれどその実装を公開してみる.ファイルが連番になっていることが前提です.
  1. #!/bin/sh
  2. NUM_CPU=4
  3. START=0
  4. END=7
  5. PORT=2500
  6. HOST=`hostname`
  7. # wakeup server
  8. for I in `seq 1 $NUM_CPU`; do
  9. COREID=$(($I % $NUM_CPU))
  10. PORTA=$HOST":"$PORT$COREID
  11. echo "hspice -CC -port $PORTA -stop 0.3 & > /dev/null 2>&1"
  12. echo "start hspice $PORTA"
  13. done
  14. wait
  15.  
  16. # run spice
  17. for I in `seq $START $END`; do
  18. NUM_PROC=$(($NUM_PROC + 1))
  19. COREID=$(($I % $NUM_CPU))
  20. PORTA=$HOST":"$PORT$COREID
  21. FILE="input_"$I".sp"
  22. echo "hspice -CC $FILE -port $PORTA & > /dev/null 2>&1"
  23. echo "run hspice $PORTA"
  24. sleep 1
  25. if(($NUM_PROC >= $NUM_CPU)); then
  26. wait
  27. NUM_PROC=0;
  28. fi
  29. done
  30. wait
  31. # kill server
  32. for I in `seq 1 $NUM_CPU`; do
  33. COREID=$(($I % $NUM_CPU))
  34. PORTA=$HOST":"$PORT$COREID
  35. echo "hspice -CC -K -port $PORTA > /dev/null 2>&1"
  36. echo "kill hspice $PORTA"
  37. done
  38. wait

4 つライセンスを取得して,計8回シミュレーション実行し,その後ライセンスを解放します.
追記:バグを修正.実際に動く事を確認.

2021年4月2日金曜日

Cent OS 7 で Calibre のライセンスエラーが出る

Calibre を起動しようとすると
$ calibrewb
(略)
//  ERROR: The following products could not be licensed sufficiently:
//  ERROR: - WORKbench

となってライセンスが取れない.

Calibre はライセンスの取得に Flexera Software の lmstat を使っている.で,lmstat(実態は lmutil )でライセンスを確認してみると,
$ lmstat -f calworkbench
  "calworkbench" v2022.010, vendor: mgcld, expiry: 31-jan-2022
  floating license
(略)

という感じでライセンスは正常に見られている.謎な矛盾状態なのだが,/etc/hosts にマシン名と IP アドレスが正しく設定できていなかったのが原因だった.
$ sudo vim /etc/hosts <- 修正する
$ mgls_ok calworkbench
Checking availability of "calworkbench".
License granted through "calworkbench".
$ calibrewb
(略)
//  calworkbench license acquired.
//  WORKbench running on 64 cores

これで計算機兼 NAT なマシンは解決したのだが,プライベートネットワーク内部のPCでライセンスが取れないのが問題.ポートの開放でもすれば解決するのだろうか….