0
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?

oneAPIを使う環境を、AWSのEC2に構築

Posted at

はじめに

今回は、IntelのoneAPIを実行する環境を、EC2に作ってみました。Intel製なので、プロセッサがIntelのEC2を使います。

概要

構成図は以下になります。

image.png

  • PCからSSHで接続して操作する想定
  • インストールするためにパブリックサブネットで実行します
    • インバウンドは自PCからのSSHのみ許可とします
  • 保守用として、Session Managerを使えるようにしておきます

リソース構築

IAM Roleの作成

EC2インスタンスをコンソールから操作する、Session Managerの権限を持つIAM Roleを作成します。後ほどEC2インスタンスに割り当てます。

ここで作成した権限をEC2にアタッチして、Session Managerを使えるようにします。メンテ用に設けておくだけであり、本記事の内容では任意になります。
以下、参考の公式ページです。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#start-ec2-console

IAMで検索して、IAMの画面に遷移します。
image.png

ここではリージョンはグローバルでOKです。

IAMロールの画面で、ロールを作成をクリックします。
image.png
image.png

信頼されたエンティティタイプは AWSのサービスを選択。
image.png

ユースケースは、EC2 Role for AWS Systems Manager を選びます。
image.png

許可ポリシーが AmazonSSMManagedInstanceCore であることを確認。
image.png

名前は適当につけて作成します。
image.png
image.png

ネットワークリソース群の作成

次は、サーバであるEC2を実行するネットワークリソース群を作成します。

VPCを検索して、画面遷移します。
image.png

画面右上にて使いたいリージョンになっていることを確認して、VPC作成に移ります。
image.png
image.png

VPCなど を選択して、一緒に色々作ってもらいます。
image.png

名前は適当につけて、IPやテナンシーは特別な理由がなければデフォルトにします。
image.png

ネットワークは、今回はAZを2つでパブリックサブネットを2つで作りました。
image.png

本記事では使いませんが大容量データをS3とやり取りすることを想定し、S3とのVPCエンドポイントは作っておきます。
image.png

DNSオプションは両方とも有効にして作成します。
image.png

EC2

サーバを起動させます。EC2と検索して画面遷移します。
image.png

インスタンスを起動 から作成します。
image.png
image.png

名前は適当で。
image.png

OSはUbuntuにしました
image.png

アーキテクチャはx86に。
image.png

インスタンスタイプはintel入ってるタイプを選ぶ必要があります。iがついている中で最小のm6i.largeを選びました。メモリが欲しい場合はrなどから選んでもよいかもしれません。
image.png

SSHでアクセスするため、キーペアは作っておきます。既に作ってありファイルをお持ちなら、それを選択してもOKです。
image.png
image.png
ダウンロードを促されるので、.pemファイルを保存します。
image.png
作成したキーペアが設定されていることを確認。
image.png

ネットワークは、先ほど作成したものを指定するため、編集ボタンで指定します。
image.png

VPCに、先ほど作成したものを指定。
image.png

サブネットはどちらでもOKです。
image.png

外部と接続するため、パブリックIPは割り当てします。
image.png

外部との接続を制限するため、セキュリティグループを作成します。
image.png

インバウンドセキュリティグループを指定します。今回はソースタイプに 自分のIP を指定して、自PCからSSH飲みできるようにします。
アウトパウンドはデフォルトで無制限です。
image.png

ストレージは、インストールにそこそこ容量を使うので、50GBとしました。
image.png

高度な設定を展開し、最初に作成したIAM Roleをつけておきます。
image.png

インスタンスを起動、で作成します。
image.png
正常に起動した場合、その旨画面表示されます。
image.png

接続

作成したEC2に、今回はVSCodeのRemote-SSHを使って接続します。

pemファイルの権限編集

ダウンロードしたpemキーの権限を変更する必要があります。以下のページを参考に編集してください。

参考までに、自分は以下のようにしました。
image.png

SSHで接続

まず接続するための、サーバのパブリックDNSの情報です。

EC2のコンソールから、対象のEC2を選択して接続をクリックします。
image.png
image.png

SSHクライアントタブで、パブリックDNSを控えておきます。
image.png

今回のEC2の作成方法では、パブリックIPアドレスとDNSは、起動停止ごとに変更されます。固定化する方法は以下ページなどを参考にしてください。

https://qiita.com/ayumun_jp/items/5cefa7951679c0f771b0

PCから接続するためVScodeで、Remote-SSHを使います。

image.png

インストール後、+ボタンで追加します。
image.png

設定の名前を指定します。わかりやすい名前にしておきます。
image.png

SSH構成ファイルのパスを選びます。
image.png

先の操作では、SSH構成ファイルにはHostとHostNameのみセットされていますので、歯車マークから設定を変更します。

config
Host ec2ForOneApi
  HostName <先ほどのパブリックDNS:変更都度修正>
  User ubuntu
  IdentityFile <先ほどのpemファイルのパス>

EC2を停止起動する都度パブリックDNS名は変わりますので、固定化していない場合はHostNameを都度変更ください。

保存すると、左ペインに出てきます。右側のアイコンで接続します。
image.png

Ubuntuなので、Linuxを選択します。
image.png
続行と問われる場合は、続行とします。
image.png

下のような画面になります。フォルダを開くをクリックすると、パス指定を促されます。
image.png
フォルダーを信頼して続行 で続けます。
image.png

左ペインに出てきます。
image.png

ターミナルは Ctrl+@ で表示できます。
image.png

インストール

oneAPIをEC2にインストールします。下記サイトから Intel oneAPI Base ToolkitのDownloadをクリックします。

設定はLinuxでAPTでインストールするよう指定します。
image.png

右ペインにコマンドが出てくるのですが、アコーディオンが展開されないので、以下のURLに直接飛んでもらうのが良いかと思います。

以下がコマンドになります。

# 2. To add APT repository access, enter the command for the installation prerequisites:
sudo apt update
sudo apt install -y gpg-agent wget

# 3. To set up the repository, download the key to the system keyring:
# download the key to system keyring
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null

# add signed entry to apt sources and configure the APT client to use Intel repository:
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list

# 4. Update the packages list and repository index:
sudo apt update

# Install with APT
# Y の入力後、4,5分くらいかかります
sudo apt install intel-oneapi-base-toolkit

# APT Linux | Configure the System After Installation
sudo apt update
sudo apt -y install cmake pkg-config build-essential
which cmake pkg-config make gcc g++

#  Run Sample Code to Verify Installation
# <toolkit-version> の部分は、自分の環境のフォルダ名に合わせて書き換えてください
. /opt/intel/oneapi/<toolkit-version>/oneapi-vars.sh
# 例: 2025.3 の場合
# . /opt/intel/oneapi/2025.3/oneapi-vars.sh
# テスト
icpx --version

# ./bashrcに登録
echo ". /opt/intel/oneapi/<toolkit-version>/oneapi-vars.sh" >> ~/.bashrc
# 例: 2025.3 の場合
# echo ". /opt/intel/oneapi/2025.3/oneapi-vars.sh" >> ~/.bashrc

試しに実行

先のサイトの続きにある、確認のための実行を行います。

oneapi-cli

ユーティリティが出てきますので、Create a projectcpp-Base: Vector Addを選択していきます。
image.png
image.png
image.png
Tabで Create を選択しEnterで決定します。
image.png
image.png
プロジェクトディレクトリが作成されます。
image.png

続けて、試しに動かしてみます。以下のページを参考にします。

作成したディレクトリに移動して、以下のコマンドを動かしてみます。

cd vector-add/
mkdir build
cd build
cmake ..

# プログラムのビルド
make cpu-gpu
./vector-add-buffers

実行結果は以下になりました。
image.png

クリーンアップしておきます。

# プログラムのクリーンアップ
make clean

サーバ停止

停止しておくことで、EC2自体の従量課金を抑えます。ただしストレージの従量課金は停止中でも発生します。
コンソールからEC2を選択し、インスタンスの状態 から、インスタンスを停止 を選択します。誤って終了しないよう、注意ください。
image.png

再度起動したい場合は、インスタンスを開始 を選択します。
image.png

リソース削除

以下の順序で削除していきます。AWS Portalから簡単に削除できるので手順は省きます。

  1. EC2
    1. ストレージも一緒に消すように設定
    2. Remote-SSHの設定もここで消しておく
  2. キーペア
  3. VPC
  4. IAM Role

EC2だけ消せば料金がかかりませんので、再度使うことを想定するのであればEC2のみ消しておき、都度EC2を作成、キーペアは流用すれば良いかと思います。

おわりに

今回は特異な環境をAWS上に構築しました。
昨今メモリが高騰しているため、従量課金制のクラウドリソースを使うことを想定した記事を作成してみました。
この記事がどなたかのお役に立てれば幸いです。

0
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
0
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?