Last Update: October 11, 2023
A key advantage of running EDA workloads on the cloud is the ability to match the compute to specific job requirements. The key job attributes to consider are:
-
Purchase option (spot or on demand)
-
Number of cores
-
Max memory used
-
CPU architecture (arm or x86)
-
Performance
-
Cost
The first consideration is whether the job can run on spot instances. Spot instances are excess EC2 capacity that are much less expensive than on-demand instances with the caveat that the instance can be reclaimed with a two minute warning. If the job is fault tolerant or can tolerate being rerun then it is a good candidate for spot. Examples are short running simulation jobs or regression jobs that aren’t latency critical. Bad candidates are long-running jobs where job interruptions would be very costly.
AWS instance families are mainly grouped by the amount of memory per core so the job’s memory to core ratio helps narrow down the best instance families for the job. Your candidates will be the smallest instance types in the families that satisfy the memory and core requirements of the job. For example, if the job is a simulation job that only requires one core and 2 GB of memory, then the compute optimized ( C ) instances, with 2 GB per vCpu, are probably your best option. The general purpose ( M ) instances have 4 GB per vCPU, the memory optimized ( R ) instances have 8 GB per vCPU, and the memory optimized ( X ) instances have 16 or 32 GB per vCPU. For jobs that require more than 4 TB of memory, AWS has the high memory ( U ) family of instances with from 3 TB up to 24 TB of memory. Be aware that the U instances use a slow 2.1 GHz Intel Sky Lake processor so you might consider an instance type with a faster processor, less memory, and a large virtual memory; the performance impact of memory paging may be offset by the faster processor.
The CPU architectures supported by the application narrow down the choices further. All EDA applications support x86 and many now also support the ARM architecture used by the AWS Graviton instances. The low cost and high performance of Graviton instances should make them a preferred choice when supported by the application. If your application supports the ARM architecture then you should consider them for your job. AWS offers x86 instances that use the latest Intel and AMD processors. The latest AMD instance are competitive in performance with Intel instances and are typically less expensive. You should benchmark your applications on Graviton, AMD, and Intel instances so that you can select the best architecture to optimize for performance and/or price. A final note is that x86 processors support symmetric multi-threading (SMT) and have 2 vCPUs per core. However, most EDA applications are memory limited, not core limited, and run significantly faster with SMT disabled. Because of this, the table below lists the number of cores, not the number of vCPUs, which is half the number of vCPUs for x86 instances.
The final selection criteria helps you optimize for job cost or performance and sometimes allows you to optimize for both. In some cases, running on the fastest, most expensive instance type may also minimize the job cost. This is because the cost of running a job includes the following costs:
-
EDA license(s)
-
Compute
License cost is usually 4 to 20 times more expensive than the compute cost. You can reduce the license cost attributed to the job by running on a more expensive, higher performance instance type, such as the high frequency instances, because the job will finish faster. If the license cost reduction is greater than the increase in compute cost then the job cost will be lower and will finish faster. If performance and the shortest job duration is more critical than cost, then you should choose the highest performance instance type. The AWS high frequency instances such as the m5zn, z1d, x2iezn, and the soon to be available r7iz run at frequencies up to 4.5 GHz and provide the highest performance available on AWS.
An AWS optimized scheduler can automatically select the best instance type to use based on the job attributes. For example, you could use the AWS ParallelCluster to create a Slurm cluster to run your jobs. A job submission would look like:
sbatch -c 1 --mem 5 GB -C 'hifreq&(spot|ondemand)' -l my-eda-license my-eda-job
This would result in your job running on the lowest cost high frequency instance that has one core and 5 GB of memory using either spot or on-demand pricing.
The following table lists instance families recommended to run Electronic Design Automation (EDA) workloads. With the exception of the HPC instance families, instance families consist of a range of instance types with from 1 core to the maximum number of cores in the family. The HPC instances come in only one size and do not support spot pricing, but their on-demand pricing is significantly lower than comparable non-HPC instances. They are also only available in certain AZs in a limited number of regions. The dollar per core is for relative price comparison between families and is based on On-Demand pricing in the us-east-2 region where HPC instances are available. Pricing can per region and over time.
Instance Family | Max Cores | Max Memory (GB) | GB/Core | Max Freq (GHz) | Max SSD | $/Core* | CPU Type |
---|---|---|---|---|---|---|---|
High Frequency - preferred for EDA to reduce license costs |
|||||||
m5zn |
24 |
192 |
8 |
4.5 |
0 |
0.1652 |
Intel Xeon Platinum 8252 (Cascade Lake) |
r7iz |
64 |
1024 |
16 |
3.9 |
0 |
0.1860 |
Intel Xeon 6455B (Sapphire Rapids) (us-east-1) |
z1d |
24 |
384 |
16 |
4.5 |
2x900 |
0.1860 |
Intel Xeon Platinum 8151 (Sky Lake) |
x2iezn |
24 |
1536 |
64 |
4.5 |
0 |
0.4170 |
Intel Xeon Platinum 8252 (Cascade Lake) |
Memory Optimized - for memory limited applications |
|||||||
r7g |
64 |
512 |
8 |
2.6 |
0 |
0.0536 |
AWS Graviton 3 |
r7gd |
64 |
512 |
8 |
2.6 |
2x1900 |
0.0680 |
AWS Graviton 3 |
x2gd |
64 |
1024 |
16 |
2.5 |
2x1900 |
0.0835 |
AWS Graviton 2 |
r7a |
96 |
1536 |
16 |
3.7 |
0 |
0.15215 |
AMD EPYC 9R14 (Genoa) |
r6i |
64 |
1024 |
16 |
3.5 |
0 |
0.1260 |
Intel Xeon 8375C (Ice Lake) |
r6id |
64 |
1024 |
16 |
3.5 |
4x1900 |
0.1512 |
Intel Xeon 8375C (Ice Lake) |
r6in |
64 |
1024 |
16 |
3.5 |
0 |
0.17433 |
Intel Xeon 8375C (Ice Lake) |
x2idn |
64 |
2048 |
32 |
3.5 |
2x1900 |
0.20841 |
Intel Xeon 8375C (Ice Lake) |
x2iedn |
64 |
4096 |
64 |
3.5 |
2x1900 |
0.41681 |
Intel Xeon 8375C (Ice Lake) |
u-6tb1 |
112 |
6144 |
55 |
2.1 |
0 |
0.41432 |
Intel Xeon Scalable (Sky Lake) |
u-9tb1 |
224 |
9216 |
41 |
2.1 |
0 |
0.36562 |
Intel Xeon Scalable (Sky Lake) (us-east-1) |
u-12tb1 |
224 |
12,288 |
55 |
2.1 |
0 |
0.4875 |
Intel Xeon Scalable (Sky Lake) |
u-18tb1 |
224 |
18,432 |
82 |
2.1 |
0 |
0.73125 |
Intel Xeon Scalable (Sky Lake) (us-east-1) |
u-24tb1 |
224 |
24,576 |
110 |
2.1 |
0 |
0.9750 |
Intel Xeon Scalable (Sky Lake) (us-east-1) |
Compute Optimized |
|||||||
c7g |
64 |
128 |
2 |
2.6 |
0 |
0.0361 |
AWS Graviton 3 |
c7gd |
64 |
128 |
2 |
2.6 |
2x1900 |
0.0454 |
AWS Graviton 3 |
c7gn |
64 |
128 |
2 |
2.6 |
0 |
0.0624 |
AWS Graviton 3 |
c7a |
96 |
384 |
4 |
3.7 |
0 |
0.10264 |
AMD EPYC 9R14 (Genoa) |
c7i |
96 |
384 |
4 |
3.2 |
0 |
0.08925 |
Intel Xeon 8488 (Sapphire Rapids) |
General Purpose |
|||||||
m7g |
64 |
256 |
4 |
2.6 |
0 |
0.0408 |
AWS Graviton 3 |
m7gd |
64 |
256 |
4 |
2.6 |
2x1900 |
0.0534 |
AWS Graviton 3 |
m7a |
96 |
768 |
8 |
3.7 |
0 |
0.11592 |
AMD EPYC 9R14 (Genoa) |
m7i |
96 |
512 |
8 |
3.2 |
0 |
0.1008 |
Intel Xeon 8488 (Sapphire Rapids) |
HPC Optimized |
|||||||
hpc7g |
64 |
128 |
2 |
2.6 |
0 |
AWS Graviton 3E |
|
hpc7a |
96 |
768 |
8 |
3.6 |
0 |
0.0750 |
AMD EPYC 9R14 (Genoa) |
hpc6id |
32 |
1024 |
32 |
3.5 |
4x3800 |
0.1781 |
Intel Xeon Scalable (Ice Lake) |
Burstable - for VDI and Interactive Work |
|||||||
t4g |
8 |
32 |
4 |
2.5 |
0 |
0.0336 |
AWS Graviton 2 |
t3a |
4 |
32 |
8 |
2.5 |
0 |
0.0752 |
AMD EPYC 7571 |
t3 |
4 |
32 |
8 |
3.1 |
0 |
0.0832 |
Intel Skylake 8175M or Cascade Lake 8259CL |
These are older generation instance types that might be used to get additional capacity if the latest instance types have insufficient capacity.
Instance Family | Max Cores | Max Memory (GB) | GB/Core | Max Freq (GHz) | Max SSD | $/Core* | CPU Type |
---|---|---|---|---|---|---|---|
Memory Optimized - for memory limited applications |
|||||||
r6g |
64 |
512 |
8 |
2.5 |
0 |
0.0504 |
AWS Graviton 2 |
r6gd |
64 |
512 |
8 |
2.5 |
2x1900 |
0.0576 |
AWS Graviton 2 |
r6a |
64 |
1024 |
16 |
3.6 |
0 |
0.1134 |
AMD EPYC 7R13 (Milan) |
Compute Optimized |
|||||||
c6g |
64 |
128 |
2 |
2.5 |
0 |
0.0340 |
AWS Graviton 2 |
c6a |
96 |
384 |
4 |
3.6 |
0 |
0.0765 |
AMD EPYC 7R13 (Milan) |
c6i |
64 |
256 |
4 |
3.5 |
0 |
0.0850 |
Intel Xeon 8375C Ice Lake |
c6id |
64 |
256 |
4 |
3.5 |
4x1900 |
0.1008 |
Intel Xeon 8375C Ice Lake |
General Purpose |
|||||||
m6g |
64 |
256 |
4 |
2.5 |
0 |
0.0385 |
AWS Graviton 2 |
m6gd |
64 |
256 |
4 |
2.5 |
2x1900 |
0.0452 |
AWS Graviton 2 |
m6a |
96 |
768 |
8 |
3.6 |
0 |
0.0864 |
AMD EPYC 7R13 (Milan) |
m6i |
64 |
512 |
8 |
3.5 |
0 |
0.0960 |
Intel Xeon 8375C Ice Lake |
m6id |
64 |
512 |
8 |
3.5 |
4x1900 |
0.11865 |
Intel Xeon 8375C Ice Lake |
HPC Optimized |
|||||||
hpc6a |
48 |
384 |
8 |
3.6 |
0 |
0.0600 |
AMD EPYC 7R13 (Milan) |