Documentation
¶
Index ¶
- Variables
- func GetFamiliesByEFA() []string
- func GetFamiliesByNetworkSpeed(minGbps int) []string
- func GetFamiliesByVendor(vendor string) []string
- func GetSizesForCategory(category string) []string
- func IsEFASupported(family string) bool
- type GPUInfo
- type NetworkCapability
- type NetworkFeature
- type ProcessorInfo
- type SizeCategory
Constants ¶
This section is empty.
Variables ¶
var EFACapableFamilies = []string{
"c5n", "c6a", "c6gn", "c6i", "c6id", "c6in", "c7a", "c7g", "c7gd", "c7gn", "c7i",
"m5dn", "m5n", "m5zn", "m6a", "m6i", "m6id", "m6idn", "m6in", "m7a", "m7g", "m7gd", "m7i", "m7i-flex",
"r5dn", "r5n", "r6a", "r6i", "r6id", "r6idn", "r6in", "r7a", "r7g", "r7gd", "r7i", "r7iz", "r8g",
"x2idn", "x2iedn", "x2iezn",
"i3en", "i4g", "i4i", "im4gn", "is4gen",
"p3dn", "p4d", "p4de", "p5",
"hpc6a", "hpc6id", "hpc7a", "hpc7g",
}
EFACapableFamilies lists all instance families that support EFA
var GPUAliases = map[string]string{
"nvidia": "nvidia",
"inf": "inferentia",
"inf1": "inferentia",
"inf2": "inferentia2",
"trn": "trainium",
"trn1": "trainium",
"a10": "a10g",
"radeon": "radeon pro v520",
"v520": "radeon pro v520",
"neuron": "inferentia",
"inferent": "inferentia",
"h200": "h200",
"l40": "l40s",
"rtx": "rtx pro server 6000",
"rtx6000": "rtx pro server 6000",
"b200": "b200",
"b300": "b300",
"gb200": "b200",
}
GPUAliases maps common GPU names to canonical forms
var GPUDatabase = map[string]GPUInfo{ "h200": { Name: "H200", Vendor: "nvidia", MemoryGB: 141, UseCase: "training", Families: []string{"p5e"}, InstanceTypes: []string{"p5e.48xlarge"}, }, "h100": { Name: "H100", Vendor: "nvidia", MemoryGB: 80, UseCase: "training", Families: []string{"p5"}, InstanceTypes: []string{"p5.48xlarge"}, }, "a100": { Name: "A100", Vendor: "nvidia", MemoryGB: 40, UseCase: "training", Families: []string{"p4d", "p4de"}, InstanceTypes: []string{"p4d.24xlarge", "p4de.24xlarge"}, }, "v100": { Name: "V100", Vendor: "nvidia", MemoryGB: 16, UseCase: "training", Families: []string{"p3"}, InstanceTypes: []string{ "p3.2xlarge", "p3.8xlarge", "p3.16xlarge", "p3dn.24xlarge", }, }, "k80": { Name: "K80", Vendor: "nvidia", MemoryGB: 12, UseCase: "legacy", Families: []string{"p2"}, InstanceTypes: []string{"p2.xlarge", "p2.8xlarge", "p2.16xlarge"}, }, "m60": { Name: "M60", Vendor: "nvidia", MemoryGB: 8, UseCase: "graphics", Families: []string{"g3"}, InstanceTypes: []string{ "g3s.xlarge", "g3.4xlarge", "g3.8xlarge", "g3.16xlarge", }, }, "a10g": { Name: "A10G", Vendor: "nvidia", MemoryGB: 22, UseCase: "inference", Families: []string{"g5"}, InstanceTypes: []string{ "g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", "g5.12xlarge", "g5.16xlarge", "g5.24xlarge", "g5.48xlarge", }, }, "t4": { Name: "T4", Vendor: "nvidia", MemoryGB: 16, UseCase: "inference", Families: []string{"g4dn"}, InstanceTypes: []string{ "g4dn.xlarge", "g4dn.2xlarge", "g4dn.4xlarge", "g4dn.8xlarge", "g4dn.12xlarge", "g4dn.16xlarge", "g4dn.metal", }, }, "l4": { Name: "L4", Vendor: "nvidia", MemoryGB: 22, UseCase: "inference", Families: []string{"g6"}, InstanceTypes: []string{ "g6.xlarge", "g6.2xlarge", "g6.4xlarge", "g6.8xlarge", "g6.12xlarge", "g6.16xlarge", "g6.24xlarge", "g6.48xlarge", }, }, "l40s": { Name: "L40S", Vendor: "nvidia", MemoryGB: 44, UseCase: "inference", Families: []string{"g6e"}, InstanceTypes: []string{ "g6e.xlarge", "g6e.2xlarge", "g6e.4xlarge", "g6e.8xlarge", "g6e.12xlarge", "g6e.16xlarge", "g6e.24xlarge", "g6e.48xlarge", }, }, "rtx pro server 6000": { Name: "RTX PRO Server 6000", Vendor: "nvidia", MemoryGB: 96, UseCase: "graphics", Families: []string{"g7e"}, InstanceTypes: []string{ "g7e.2xlarge", "g7e.4xlarge", "g7e.8xlarge", "g7e.12xlarge", "g7e.24xlarge", "g7e.48xlarge", }, }, "b200": { Name: "B200", Vendor: "nvidia", MemoryGB: 179, UseCase: "training", Families: []string{"p6"}, InstanceTypes: []string{"p6-b200.48xlarge", "p6e-gb200.36xlarge"}, }, "b300": { Name: "B300", Vendor: "nvidia", MemoryGB: 268, UseCase: "training", Families: []string{"p6"}, InstanceTypes: []string{"p6-b300.48xlarge"}, }, "nvidia": { Name: "NVIDIA (all)", Vendor: "nvidia", MemoryGB: 0, UseCase: "any", Families: []string{"p5e", "p5", "p4d", "p4de", "p3", "p2", "g3", "g5", "g4dn", "g6", "g6e", "g7e", "p6"}, }, "radeon pro v520": { Name: "Radeon Pro V520", Vendor: "amd", MemoryGB: 8, UseCase: "graphics", Families: []string{"g4ad"}, InstanceTypes: []string{"g4ad.xlarge", "g4ad.2xlarge", "g4ad.4xlarge", "g4ad.8xlarge", "g4ad.16xlarge"}, }, "inferentia": { Name: "Inferentia", Vendor: "aws", MemoryGB: 8, UseCase: "inference", Families: []string{"inf1"}, InstanceTypes: []string{ "inf1.xlarge", "inf1.2xlarge", "inf1.6xlarge", "inf1.24xlarge", }, }, "inferentia2": { Name: "Inferentia2", Vendor: "aws", MemoryGB: 32, UseCase: "inference", Families: []string{"inf2"}, InstanceTypes: []string{ "inf2.xlarge", "inf2.8xlarge", "inf2.24xlarge", "inf2.48xlarge", }, }, "trainium": { Name: "Trainium", Vendor: "aws", MemoryGB: 32, UseCase: "training", Families: []string{"trn1", "trn1n"}, InstanceTypes: []string{ "trn1.2xlarge", "trn1.32xlarge", "trn1n.32xlarge", }, }, }
GPUDatabase maps GPU names to their information
var NetworkAliases = map[string]string{
"efa": "efa",
"ena": "ena",
"10g": "10gbps",
"25g": "25gbps",
"50g": "50gbps",
"100g": "100gbps",
"200g": "200gbps",
"400g": "400gbps",
"highnet": "50gbps",
"ultranet": "100gbps",
"lowlatency": "efa",
}
NetworkAliases maps common network terms to canonical forms
var NetworkBandwidthTiers = map[string]NetworkCapability{ "10gbps": { MaxBandwidthGbps: 10, Families: []string{ "m5", "m5a", "m5ad", "m5d", "c5", "c5a", "c5ad", "c5d", "r5", "r5a", "r5ad", "r5d", "t3", "t3a", }, }, "25gbps": { MaxBandwidthGbps: 25, Families: []string{ "m5n", "m5dn", "m6i", "m6id", "m6a", "m6g", "m6gd", "c5n", "c6i", "c6id", "c6a", "c6g", "c6gd", "r5n", "r5dn", "r6i", "r6id", "r6a", "r6g", "r6gd", "p3", "p3dn", "g4dn", "g5", }, }, "50gbps": { MaxBandwidthGbps: 50, Families: []string{ "m5zn", "m6idn", "m6in", "m7i", "m7i-flex", "m7a", "m7g", "m7gd", "c6in", "c6gn", "c7i", "c7a", "c7g", "c7gd", "c7gn", "r6idn", "r6in", "r7i", "r7iz", "r7a", "r7g", "r7gd", "r8g", "p4d", "p4de", }, }, "100gbps": { MaxBandwidthGbps: 100, Families: []string{ "m6idn", "m6in", "m7i", "m7a", "m7g", "c6in", "c6gn", "c7i", "c7a", "c7g", "c7gn", "r6idn", "r6in", "r7i", "r7iz", "r7a", "r7g", "r8g", "x2idn", "x2iedn", "x2iezn", "i4i", "i4g", "im4gn", "is4gen", "p4d", "p4de", "p5", "hpc6a", "hpc6id", "hpc7a", "hpc7g", }, }, "200gbps": { MaxBandwidthGbps: 200, Families: []string{ "p4d", "p4de", "p5", "hpc7g", }, }, "400gbps": { MaxBandwidthGbps: 400, Families: []string{ "p5", }, }, }
NetworkBandwidthTiers maps bandwidth requirements to instance families
var ProcessorDatabase = map[string]ProcessorInfo{ "emerald rapids": { CodeName: "Emerald Rapids", Vendor: "intel", Architecture: "x86_64", Generation: "5th gen", Families: []string{"m8i", "c8i", "r8i"}, }, "sapphire rapids": { CodeName: "Sapphire Rapids", Vendor: "intel", Architecture: "x86_64", Generation: "4th gen", Families: []string{"m7i", "c7i", "r7i", "r7iz", "m7i-flex"}, }, "ice lake": { CodeName: "Ice Lake", Vendor: "intel", Architecture: "x86_64", Generation: "3rd gen", Families: []string{"m6i", "c6i", "r6i", "r6id", "r6idn", "m6id", "m6idn", "c6id", "c6in"}, }, "cascade lake": { CodeName: "Cascade Lake", Vendor: "intel", Architecture: "x86_64", Generation: "2nd gen", Families: []string{"m5", "c5", "r5", "m5n", "m5dn", "c5n", "r5n", "r5dn", "m5d", "c5d", "r5d"}, }, "skylake": { CodeName: "Skylake", Vendor: "intel", Architecture: "x86_64", Generation: "1st gen", Families: []string{"m5", "c5", "r5", "z1d"}, }, "haswell": { CodeName: "Haswell", Vendor: "intel", Architecture: "x86_64", Generation: "legacy", Families: []string{"m4", "c4", "r4", "t2", "d2", "i2"}, }, "broadwell": { CodeName: "Broadwell", Vendor: "intel", Architecture: "x86_64", Generation: "legacy", Families: []string{"m4", "c4", "t2", "d2"}, }, "ivy bridge": { CodeName: "Ivy Bridge", Vendor: "intel", Architecture: "x86_64", Generation: "legacy", Families: []string{"m3", "c3", "r3", "i2"}, }, "sandy bridge": { CodeName: "Sandy Bridge", Vendor: "intel", Architecture: "x86_64", Generation: "legacy", Families: []string{"m1", "c1", "m2", "t1"}, }, "milan": { CodeName: "Milan", Vendor: "amd", Architecture: "x86_64", Generation: "3rd gen", Families: []string{"m6a", "c6a", "r6a", "r6id", "hpc6a"}, }, "rome": { CodeName: "Rome", Vendor: "amd", Architecture: "x86_64", Generation: "2nd gen", Families: []string{"m5a", "c5a", "r5a", "m5ad", "r5ad"}, }, "genoa": { CodeName: "Genoa", Vendor: "amd", Architecture: "x86_64", Generation: "4th gen", Families: []string{"m7a", "c7a", "r7a", "hpc7a"}, }, "bergamo": { CodeName: "Bergamo", Vendor: "amd", Architecture: "x86_64", Generation: "4th gen", Families: []string{"m7a", "c7a"}, }, "turin": { CodeName: "Turin", Vendor: "amd", Architecture: "x86_64", Generation: "5th gen", Families: []string{"m8a", "c8a", "r8a"}, }, "zen 3": { CodeName: "Zen 3", Vendor: "amd", Architecture: "x86_64", Generation: "3rd gen", Families: []string{"m6a", "c6a", "r6a", "hpc6a"}, }, "zen 4": { CodeName: "Zen 4", Vendor: "amd", Architecture: "x86_64", Generation: "4th gen", Families: []string{"m7a", "c7a", "r7a", "hpc7a"}, }, "zen 5": { CodeName: "Zen 5", Vendor: "amd", Architecture: "x86_64", Generation: "5th gen", Families: []string{"m8a", "c8a", "r8a"}, }, "graviton": { CodeName: "Graviton", Vendor: "aws", Architecture: "arm64", Generation: "1st gen", Families: []string{"a1"}, }, "graviton2": { CodeName: "Graviton2", Vendor: "aws", Architecture: "arm64", Generation: "2nd gen", Families: []string{"m6g", "c6g", "r6g", "t4g", "m6gd", "c6gd", "r6gd", "c6gn", "im4gn", "is4gen", "x2gd"}, }, "graviton3": { CodeName: "Graviton3", Vendor: "aws", Architecture: "arm64", Generation: "3rd gen", Families: []string{"m7g", "c7g", "r7g", "c7gn", "hpc7g", "c7gd", "m7gd", "r7gd"}, }, "graviton3e": { CodeName: "Graviton3E", Vendor: "aws", Architecture: "arm64", Generation: "3rd gen", Families: []string{"c7gn", "hpc7g"}, }, "graviton4": { CodeName: "Graviton4", Vendor: "aws", Architecture: "arm64", Generation: "4th gen", Families: []string{"r8g"}, }, }
ProcessorDatabase maps processor code names to their information
var SizeCategories = map[string]SizeCategory{ "tiny": { Name: "tiny", Sizes: []string{"nano", "micro"}, }, "small": { Name: "small", Sizes: []string{"small", "medium"}, }, "medium": { Name: "medium", Sizes: []string{"large", "xlarge"}, }, "large": { Name: "large", Sizes: []string{"2xlarge", "4xlarge"}, }, "huge": { Name: "huge", Sizes: []string{"8xlarge", "12xlarge", "16xlarge", "24xlarge", "32xlarge", "48xlarge", "56xlarge", "112xlarge", "metal"}, }, }
SizeCategories maps size category names to their suffixes
var VendorAliases = map[string]string{
"intel": "intel",
"amd": "amd",
"aws": "aws",
"graviton": "aws",
"arm": "aws",
"amazon": "aws",
}
VendorAliases maps common vendor names to canonical forms
Functions ¶
func GetFamiliesByEFA ¶
func GetFamiliesByEFA() []string
GetFamiliesByEFA returns families that support EFA
func GetFamiliesByNetworkSpeed ¶
GetFamiliesByNetworkSpeed returns families that support at least the specified bandwidth
func GetFamiliesByVendor ¶
GetFamiliesByVendor returns all instance families for a given vendor
func GetSizesForCategory ¶
GetSizesForCategory returns the instance size suffixes for a category
func IsEFASupported ¶
IsEFASupported checks if a family supports EFA
Types ¶
type GPUInfo ¶
type GPUInfo struct {
Name string // "A100", "V100", "H100"
Vendor string // "nvidia", "amd", "aws"
MemoryGB int // GPU memory per GPU
UseCase string // "training", "inference", "graphics"
Families []string // Instance families (for fuzzy matching)
InstanceTypes []string // Exact instance types (for precise matching)
}
GPUInfo contains information about a GPU accelerator used in EC2 instances
func GetGPUsByUseCase ¶
GetGPUsByUseCase returns all GPUs for a given use case
func GetGPUsByVendor ¶
GetGPUsByVendor returns all GPUs for a given vendor
type NetworkCapability ¶
type NetworkCapability struct {
EFASupported bool // Elastic Fabric Adapter support
MaxBandwidthGbps int // Maximum network bandwidth in Gbps
Families []string // Instance families with this capability
}
NetworkCapability represents networking features of instance families
type NetworkFeature ¶
NetworkFeature represents network feature requirements
type ProcessorInfo ¶
type ProcessorInfo struct {
CodeName string // "ice lake", "milan", "sapphire rapids"
Vendor string // "intel", "amd", "aws"
Architecture string // "x86_64", "arm64"
Generation string // "3rd gen", "4th gen"
Families []string // ["m6i", "c6i", "r6i"]
}
ProcessorInfo contains information about a CPU processor used in EC2 instances
func GetProcessorsByVendor ¶
func GetProcessorsByVendor(vendor string) []ProcessorInfo
GetProcessorsByVendor returns all processors for a given vendor
type SizeCategory ¶
SizeCategory represents a category of instance sizes