metadata

package
v0.42.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2026 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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

View Source
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

View Source
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

View Source
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

View Source
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

View Source
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

View Source
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

View Source
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

func GetFamiliesByNetworkSpeed(minGbps int) []string

GetFamiliesByNetworkSpeed returns families that support at least the specified bandwidth

func GetFamiliesByVendor

func GetFamiliesByVendor(vendor string) []string

GetFamiliesByVendor returns all instance families for a given vendor

func GetSizesForCategory

func GetSizesForCategory(category string) []string

GetSizesForCategory returns the instance size suffixes for a category

func IsEFASupported

func IsEFASupported(family string) bool

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

func GetGPUsByUseCase(useCase string) []GPUInfo

GetGPUsByUseCase returns all GPUs for a given use case

func GetGPUsByVendor

func GetGPUsByVendor(vendor string) []GPUInfo

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

type NetworkFeature struct {
	Name        string
	Description string
	Families    []string
}

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

type SizeCategory struct {
	Name  string
	Sizes []string // Instance size suffixes
}

SizeCategory represents a category of instance sizes

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL