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回シミュレーション実行し,その後ライセンスを解放します.
追記:バグを修正.実際に動く事を確認.

0 件のコメント:

コメントを投稿