FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

GitHub ActionsでSPEC CPU2006の実行を自動化する (7. GitHub Actionsを並列実行)

SIFT生成処理は順次実行していたのだが、SIFT生成の問題点が改善したので、並列実行に戻したいと思う。

SIFT生成オプションに合わせて、設定を変更していく。特に、 response_files は使用しない。

# 変更前
"${QEMU}" ${QEMU_FLAGS} -plugin "${QEMU_FRONTEND_PLUGIN}",verbose=on,response_files=on,fast_forward_target=${fast_forward_target},detailed_target=${detailed_target},output_file="${output_base}" ${cmd_suffix_noL}

# 変更後
"${QEMU}" ${QEMU_FLAGS} -plugin "${QEMU_FRONTEND_PLUGIN}",verbose=on,response_files=off,fast_forward_target=${fast_forward_target},detailed_target=${detailed_target},output_file="${output_base}" ${cmd_suffix_noL}

run_sift_benchmark.shでは、各SimPointのSIFT生成スクリプトを生成し、parallelコマンドを使用して並列実行する。

# Execute all generated script files in parallel
if [ -f "$all_script_list_file" ] && [ -s "$all_script_list_file" ]; then
  num_scripts=$(wc -l < "$all_script_list_file")
  echo "=== Executing $num_scripts scripts in parallel ==="
  cat "$all_script_list_file" | \
  SHELL=/bin/bash parallel --line-buffer -j ${PARALLEL_JOBS} bash '{}' 2>&1 || {
    echo "Warning: Some scripts failed. Check logs in ${sift_dir_abs}" >&2;
  };
  rm -f "$all_script_list_file"
fi

並列ジョブ数は環境変数PARALLEL_JOBSで制御され、デフォルトはCPU数である。ファイルハンドル制限を考慮し、最大8ジョブに制限されている。