この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
re:Invent 2021 でアナウンスされていたハイパフォーマンスコンピューティング(HPC)向けインスタンスタイプの HPC6a インスタンスが一部リージョンで利用可能になりました。 HPC向けなので AWS Batch 、AWS ParallelCluster で利用する機会がありそうです。
re: Invent 2021 速報記事
本記事は AWS ParallelCluster で HPC6a インスタンスの起動検証を目的としています。計算処理は行ったり、ベンチマークは実施しません。
新インスタンスタイプの動作確認用クラスターの設定方法、注意事項を紹介します。
AWS ParallelCluster の検証結果
2022/1/12 現在の情報です。
- us-east-2(オハイオ)の1AZのみで起動できます。
- コンピュートノードを起動するサブネットの選択に注意してください。
- ap-northeat-1(東京)ではまだ利用できません。
- スポットインスタンスの起動は非対応です。
- クラスターの設定でEFA有効化推奨です。
HPC6a インスタンスの特徴
HPC6a シリーズは現在 hpc6a.48xlarge 一種類のみ提供されています。同等の x86 ベースのコンピューティング最適化インスタンスに比べて最大 65% 優れたコストパフォーマンスに優れているようです。
物理96コアが特徴的ですね。AMD Ryzen/EPIC の SMT(Simultaneous Multi-Threading)は無効化されています。SMT は Intel Xeon の HT(Hyper Threading)と同じような仕組みです。
項目 | 値 | 備考 |
---|---|---|
CPU | 96(物理コア数) | AMD EPYC 7003シリーズプロセッサ |
RAM | 384 GB | DDR4 |
ネットワーク帯域幅 | 500 Mbps | VPC、S3 以外への帯域幅 |
ネットワーク帯域幅 | 25 Gbps | VPC、S3 への帯域幅 |
EFAネットワーク帯域幅 | 100 Gbps | ノード間の帯域幅 |
Elastic Fabric Adapter | デフォルト有効化 | Elastic Fabric Adapter - Amazon Elastic Compute Cloud |
同じ時期に発表された C7g シリーズが DDR5 積んでいたので HPC6a もかと思ったのですが DDR4 でした。
検証環境
HPC6a 提供リージョンはus-east-2
と、GovCloud
のみです。(2022/1/12現在)
項目 | 値 |
---|---|
AWS ParallelCluster | 3.0.2 |
Job Scheduler | Slurm |
OS | Ubuntu 20.04 LTS |
CPU | AMD |
Head Node | t3a.micro |
Compute Node | hpc6a.48xlarge |
クラスター作成準備
us-east-2
リージョンにクラスターを作成します。
サンプルコンフィグ
気をつけるポイントを以下にまとめました。
- HPC6a が提供されているリージョンを選択
- ヘッドノードはAMDのCPUのインスタンスタイプなら起動テストする分には問題ありません
- コンピュートノードの起動サブネットID(AZ)の選択
- オンデマンドインスタンスを指定
- コンピュートノードのEFA有効化
hpc-cluster.yml
Region: us-east-2
Image:
Os: ubuntu2004
HeadNode:
InstanceType: t3a.micro
Networking:
ElasticIp: false
SubnetId: subnet-0fdc64a83ef8b3b59
Ssh:
KeyName: sandbox-key-useast2
LocalStorage:
RootVolume:
Size: 50
Encrypted: false
VolumeType: gp3
Iops: 3000
Throughput: 125
Iam:
S3Access:
- BucketName: blog-parallelcluster-postinstall
EnableWriteAccess: False
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
Scheduling:
Scheduler: slurm
SlurmQueues:
- Name: hpc-instances
ComputeResources:
- Name: hpc6a48xlarge
InstanceType: hpc6a.48xlarge
MinCount: 0
MaxCount: 10
Efa:
Enabled: true
ComputeSettings:
LocalStorage:
RootVolume:
Size: 35
Encrypted: false
VolumeType: gp3
Iops: 3000
Throughput: 125
CapacityType: ONDEMAND
Networking:
SubnetIds:
- subnet-0fdc64a83ef8b3b59 # Specific AZ only
PlacementGroup:
Enabled: true
Iam:
S3Access:
- BucketName: blog-parallelcluster-postinstall
KeyName: read_only/
EnableWriteAccess: False
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
つまづき
個人的にはいい感じに作ったコンフィグからクラスターを作成してみたところ以下のエラーが出力されました。
- コンピュートノードのEFA有効化推奨
- スポットインスタンスは非対応
us-east-2
リージョンの1AZのみで起動できる
{
"configurationValidationErrors": [
{
"level": "WARNING",
"type": "EfaValidator",
"message": "Instance type 'hpc6a.48xlarge' supports EFA, but it is not enabled."
},
{
"level": "ERROR",
"type": "CapacityTypeValidator",
"message": "Usage type 'spot' not supported with instance type 'hpc6a.48xlarge'"
},
{
"level": "ERROR",
"type": "ComputeResourceLaunchTemplateValidator",
"message": "Your requested instance type (hpc6a.48xlarge) is not supported in the Availability Zone (us-east-2a) of your requested subnet (subnet-06bef5c18e9a5f4c6). Please retry your request by choosing a subnet in ('us-east-2b',). "
}
],
"message": "Invalid cluster configuration."
}
EFA確認
EFAに対応しているインスタンスタイプなので有効化した方が良いのはごもっともです。以下のドキュメント参考に有効化します。
ComputeResources:
Efa:
Enabled: true
スポットインスタンス確認
試しにマネージメントコンソールからスポットインスタンスを作成しようとしても無理でした。単純に空きキャパシティがないだけの可能性もあります。
Spot Instance advisorを確認してみましたが HPC6a インスタンスは載っていませんでした。
クラスター作成時に仮にスポットインスタンスの空きキャパシティがなかったとしてもクラスターの作成はできます。今回のエラーメッセージから本当にスポットインスタンスに対応していないものと思われます。
2022/1/15追記正しい確認方法がわかりました。ご興味があれば以下のリンクもご参照ください。
AZ確認
us-east-2
で hpc6a.48xlarge が使えるAZを調べました。1AZしか対応していないことがわかりました。
$ aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=instance-type,Values=hpc6a.48xlarge --region us-east-2 --output table
---------------------------------------------------------
| DescribeInstanceTypeOfferings |
+-------------------------------------------------------+
|| InstanceTypeOfferings ||
|+----------------+--------------+---------------------+|
|| InstanceType | Location | LocationType ||
|+----------------+--------------+---------------------+|
|| hpc6a.48xlarge| us-east-2b | availability-zone ||
|+----------------+--------------+---------------------+|
私のアカウントではus-east-2b
でした。アカウントによって異なると思いますので同じコマンドでお確かめください。
※ マネージメントコンソールからのスポットインスタンスの起動確認もus-east-2b
で試しています。
クラスター作成と起動
サンプルコンフィグを用いてクラスターを作成します。
pcluster create-cluster --cluster-name hpc-cluster --cluster-configuration hpc-cluster.yml
クラスター完成まで10分少々待ちます。
実行結果
{
"cluster": {
"clusterName": "hpc-cluster",
"cloudformationStackStatus": "CREATE_IN_PROGRESS",
"cloudformationStackArn": "arn:aws:cloudformation:us-east-2:123456789012:stack/hpc-cluster/d50226c0-7362-11ec-a557-020a4e309172",
"region": "us-east-2",
"version": "3.0.2",
"clusterStatus": "CREATE_IN_PROGRESS"
}
}
クラスター作成の結果を確認します。
pcluster describe-cluster --cluster-name hpc-cluster
作成完了しました。
{
"creationTime": "2022-01-12T04:48:06.105Z",
"headNode": {
"launchTime": "2022-01-13T01:20:22.000Z",
"instanceId": "i-0716ef8911dd75f6b",
"publicIpAddress": "3.140.252.172",
"instanceType": "t3a.micro",
"state": "running",
"privateIpAddress": "10.0.2.175"
},
"version": "3.0.2",
"clusterConfiguration": {
"url": "https://parallelcluster-7567a8c3e5e4252c-v1-do-not-delete.s3.us-east-2.amazonaws.com/parallelcluster/3.0.2/clusters/hpc-cluster-cwdhcxoohu4im36b/configs/cluster-config.yaml?hoge"
},
"tags": [
{
"value": "3.0.2",
"key": "parallelcluster:version"
}
],
"cloudFormationStackStatus": "CREATE_COMPLETE",
"clusterName": "hpc-cluster",
"computeFleetStatus": "RUNNING",
"cloudformationStackArn": "arn:aws:cloudformation:us-east-2:123456789012:stack/hpc-cluster/d50226c0-7362-11ec-a557-020a4e309172",
"lastUpdatedTime": "2022-01-12T04:48:06.105Z",
"region": "us-east-2",
"clusterStatus": "CREATE_COMPLETE"
}
ヘッドノードが起動しています。
ヘッドノードにログインします。2ノード指定でテストジョブを投げて hpc6a インスタンスが起動できるか確認します。
sbatch -N2 test.sh
hpc6a.48xlarge 2台がコンピュートノードで起動しました。
ParallelCluster のクラスター作成と動作確認は以上です。
ハードウェアを調べてみる
コンピュートノードで起動してきた hpc6a.48xlarge インスタンスにログインしてスペックを確認します。
CPU確認
AMD EPYC 7R13 Processorなので M6a シリーズと同型です。
「M6a」第3世代 AMD EPYC プロセッサーを搭載したEC2インスタンスがリリースされました | DevelopersIO
/proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 25
model : 1
model name : AMD EPYC 7R13 Processor
stepping : 1
microcode : 0xa001143
cpu MHz : 3023.499
cache size : 512 KB
physical id : 0
siblings : 48
core id : 0
cpu cores : 48
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 16
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni p
clmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext perfctr_core invpcid_single ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1
avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr rdpru wbnoinvd arat npt nrip_save vaes vpclmulqdq rdpid
bugs : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips : 5299.98
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 48 bits physical, 48 bits virtual
power management:
...snip...
メモリ確認
96 GB * 4 = 384 GB の構成でした。ここで DDR4 のメモリと確認できました。ドキュメントや公式アカウントでは触れられていませんでした。
$ sudo dmidecode -t memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
Handle 0x000C, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Unknown
Maximum Capacity: 384 GB
Error Information Handle: Not Provided
Number Of Devices: 1
Handle 0x000D, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x000C
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 96 GB
Form Factor: DIMM
Set: None
Locator: Not Specified
Bank Locator: Not Specified
Type: DDR4
Type Detail: Static Column Pseudo-static Synchronous Window DRAM
Speed: 2933 MT/s
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Memory Speed: Unknown
Handle 0x0010, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x000C
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 96 GB
Form Factor: DIMM
Set: None
Locator: Not Specified
Bank Locator: Not Specified
Type: DDR4
Type Detail: Static Column Pseudo-static Synchronous Window DRAM
Speed: 2933 MT/s
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Memory Speed: Unknown
Handle 0x0013, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x000C
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 96 GB
Form Factor: DIMM
Set: None
Locator: Not Specified
Bank Locator: Not Specified
Type: DDR4
Type Detail: Static Column Pseudo-static Synchronous Window DRAM
Speed: 2933 MT/s
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Memory Speed: Unknown
Handle 0x0016, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x000C
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 96 GB
Form Factor: DIMM
Set: None
Locator: Not Specified
Bank Locator: Not Specified
Type: DDR4
Type Detail: Static Column Pseudo-static Synchronous Window DRAM
Speed: 2933 MT/s
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Memory Speed: Unknown
ネットワーク確認
イーサネットコントローラーからEFAの名前を確認できました。
$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:03.0 VGA compatible controller: Amazon.com, Inc. Device 1111
00:04.0 Non-Volatile memory controller: Amazon.com, Inc. Device 8061
00:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)
00:06.0 Ethernet controller: Amazon.com, Inc. Device efa1
まとめ
- us-east-2(オハイオ)の1AZのみで起動できます。
- 事前に起動できるAZを確認してからコンピュートノードのサブネットを指定しましょう。
- スポットインスタンスの起動は非対応につき、クラスターの設定は
ONDEMAND
指定のみ有効です。 - クラスター設定でEFA有効化推奨です。
終わりに
SMTがデフォルトで無効化されておりHPCの名を冠するだけあってHPC仕様でした。物理96コアのCPU持つインスタンスなので1台の利用でも効率的に計算できるケースはありそうです。ParallelCluster で利用するならスポットインスタンス対応が望まれますね。東京リージョンへは上陸していませんので気長に待ちましょう。使えるようになりましたら今回のサンプルコンフィグをベースに動作確認できると思いますので参考にしていただければと思います。今後は FSx for Lustre との連携など他サービスとの組み合わせの検証したいと思います。パワフルなマシンなのでパワフルなストレージを活用したいですよね。