1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AHCのローカルテストをクラウドVM(Spot VM)で高速化

Last updated at Posted at 2025-07-08

概要

AtCoder Heuristic Contest(AHC)をはじめとするマラソン系のプログラミングコンテストでは、ローカルテストによるデバッグや試行錯誤が非常に重要です。
本記事では、Google Cloud Platform(GCP)の仮想マシン(VM)を用いて、できるだけ低コストで高速なテスト環境を構築する方法を紹介します。
特に、Spot VMを用いてコスト削減を狙います。

クラウドVMの利用コスト(筆者の体感)

Google Cloudの料金はマシンタイプや使用時間によって異なりますが:

  • 通常VM:約30円/時間(c2d-highcpu-4)
  • Spot VM:約10円/時間(※変動あり)

Spot VMは余剰リソースを活用することで安価に利用できるVMです。
ただし、リソースが不足すると強制的に停止される可能性があります。

手順 :writing_hand:

動作環境(参考) :earth_asia:

以下は筆者の動作環境ですが、多くの環境でも同様に動作するはずです。

項目 version
OS windows 11 Home
ローカル環境 WSL (Ubuntu 22.04.5 LTS)
クラウドVM Google Compute Engine

VMインスタンスの作成 :robot:

本記事では Google Compute Engine(GCE) を例に説明します。
特に本章ではインスタンス作成時の設定値に重点をおいて解説しますので、VMの作成〜接続までの基本操作は、以下の公式ガイドを参照してください。

マシンの構成

項目 設定例
名前 任意(デフォルトでも可)
リージョン 任意(深夜など空いている時間帯がおすすめ)
ゾーン 指定なし
マシンタイプ コンピューティング最適化 > C2D > c2d-highcpu-4

※下記はマシンタイプの選択手順です。

  • コンピューティング最適化を選択
    image.png
  • C2Dを選択
    image.png
  • ハイCPUc2d-highcpu-4を選択
    image.png
    image.png

OSとストレージ

項目 設定例
オペレーティングシステム Ubuntu
バージョン Ubuntu25.04. Minimal
ブートディスクの種類 標準永続ディスク
サイズ 10GB

データ保護

「バックアップなし」に変更する。
image.png

ネットワーキング~セキュリティ

変更なし

詳細

項目 設定例
自動化 下記のスクリプトを記載する
プロビジョニングモデル Spot
"自動化"の起動スクリプトに書くスクリプト
#!/bin/bash
apt update
apt -y upgrade
apt -y install vim             #念の為のエディタ
apt -y install unzip           #zipを解凍するため
apt -y install build-essential #buildに必要(だったはず)

【VMで操作】Rustのインストール

公式ビジュアライザのビルドにはRustが必要であるため、Rustをインストールします。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

インストール後は、一度VMからログアウトし、再ログインしてください。

公式ビジュアライザをVMにインストール

【ローカルで操作】AHC公式ビジュアライザのリンクを取得

直接クラウドVMにダウンロードするため、ローカル版の「リンクのアドレスをコピー」します。

リンクから?以降の文字列を削除する。

(AHC048の例)
#コピー直後
https://img.atcoder.jp/ahc048/lI5DXOAV.zip?${長い文字列}

#"?"以降は削除する
https://img.atcoder.jp/ahc048/lI5DXOAV.zip #これを次で使う!!

【VMで操作】AHC公式ビジュアライザをダウンロード&展開

$ wget ${上で取得したリンク} #Atcoderから直接ビジュアライザをVMにダウンロード
#$ wget https://img.atcoder.jp/ahc048/lI5DXOAV.zip #AHC048の例

$ unzip ${取得したファイル.zip} #ダウンロードしたzipを解凍
#$ unzip lI5DXOAV.zip #AHC048の例 

【VMで操作】テスタを入手(筆者のGithub)

筆者のgithubからテスタを取得
$ curl https://raw.githubusercontent.com/g1ac3/ahc-param-tuner/refs/heads/main/test.py test.py

ikomaさんのソースコードを参考に作成していますので詳しい利用方法は下記を参照:

ソースコード(自身の解答)をVMへ転送

【ローカルで操作】VMへデータをアップロード

VMへのファイル転送方法は以下を参照:

WSLを使っている場合、以下でエクスプローラを開き、パスをコピーすると便利。

$ explorer.exe .

【VMで操作】ソースコード(自身の解答)をコンパイル

いつも通りコンパイルしてください。ただし、実行ファイル名は「a.out」にしてください。

現状確認

この段階で手元のファイルは下記のようになるはずです。

AHC048の例
$ ls
a.out lI5DXOAV.zip  source.cpp  test.py  tools #lI5DXOAVの名前はコンテストによる

テスタの実行

テスタを実行する
$ python3 test.py
期待する出力
#1.ビジュアライザのコンパイルログ
Updating crates.io index
...
Compiling tools v1.0.0 (/home/${googleのID}/tools)
Finished `release` profile [optimized] target(s) in 11.83s
#2.ローカルテストの実行ログ
  0  score:   1,247,802  2907 ms
...
 99  score:     644,416  2884 ms
#3.結果まとめ
total   time: 21.1 s
average time: 2917 ms
sum score   : 86,386,379 pt
average(log): 5.9246

VMの使用が完了したら、"VMインスタンスの削除"を忘れずにしましょう。
VMを"停止"しただけではストレージの料金を払い続けることになります。

あとがき

ローカル(私用PC)でテストするのが嫌な場合も、Spot VMを活用すれば低コストかつ高速に反復可能です。
また、他のクラウドサービス(AWS, Azure)でも同様の構成が可能なので、用途や予算に応じて使い分けるのもアリです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?