"""
Valid tcgen05 shapes and cluster sizes for SM100, associated with levels.
These shape and level pairs are defined as dicts, where keys are shapes and values are their
associated levels. If the user input level for that category (tcgen05 shape, cluster
size) is smaller than a shape's associated level, it will be excluded, and otherwise, included.
Higher levels are therefore less likely emitted, but lower levels are more emitted more frequently.
Level 0 is always emitted.
"""
try:
from .library import DynamicClusterShape
except:
from library import DynamicClusterShape
SM100_CLUSTER_SHAPES_1SM = {
tuple(DynamicClusterShape) : 0,
(1, 1, 1): 1,
(1, 2, 1): 2,
(2, 1, 1): 5,
(2, 2, 1): 6,
(1, 4, 1): 3,
(4, 1, 1): 6,
(2, 4, 1): 7,
(4, 2, 1): 7,
(1, 8, 1): 8,
(8, 1, 1): 8,
(4, 4, 1): 4,
}
SM100_CLUSTER_SHAPES_2SM = {
tuple(DynamicClusterShape) : 0,
(2, 1, 1): 1,
(2, 2, 1): 2,
(4, 1, 1): 2,
(2, 4, 1): 3,
(4, 2, 1): 3,
(8, 1, 1): 6,
(4, 4, 1): 4,
}
SM100_MMA_SHAPES_16b_DENSE_1SM = {
(64, 8, 16): 5,
(64, 16, 16): 2,
(64, 24, 16): 5,
(64, 32, 16): 2,
(64, 40, 16): 5,
(64, 48, 16): 5,
(64, 56, 16): 5,
(64, 64, 16): 2,
(64, 72, 16): 5,
(64, 80, 16): 5,
(64, 88, 16): 5,
(64, 96, 16): 5,
(64, 104, 16): 5,
(64, 112, 16): 5,
(64, 120, 16): 5,
(64, 128, 16): 0,
(64, 136, 16): 5,
(64, 144, 16): 5,
(64, 152, 16): 5,
(64, 160, 16): 5,
(64, 168, 16): 5,
(64, 176, 16): 5,
(64, 184, 16): 5,
(64, 192, 16): 3,
(64, 200, 16): 5,
(64, 208, 16): 5,
(64, 216, 16): 5,
(64, 224, 16): 5,
(64, 232, 16): 5,
(64, 240, 16): 5,
(64, 248, 16): 5,
(64, 256, 16): 3,
(128, 16, 16): 2,
(128, 32, 16): 2,
(128, 48, 16): 5,
(128, 64, 16): 2,
(128, 80, 16): 5,
(128, 96, 16): 5,
(128, 112, 16): 5,
(128, 128, 16): 0,
(128, 144, 16): 5,
(128, 160, 16): 5,
(128, 176, 16): 5,
(128, 192, 16): 3,
(128, 208, 16): 5,
(128, 224, 16): 5,
(128, 240, 16): 5,
(128, 256, 16): 0,
}
SM100_MMA_SHAPES_16b_DENSE_2SM = {
(128, 32, 16): 2,
(128, 64, 16): 2,
(128, 96, 16): 5,
(128, 128, 16): 0,
(128, 160, 16): 5,
(128, 192, 16): 5,
(128, 224, 16): 5,
(128, 256, 16): 0,
(256, 32, 16): 2,
(256, 64, 16): 2,
(256, 96, 16): 5,
(256, 128, 16): 0,
(256, 160, 16): 5,
(256, 192, 16): 3,
(256, 224, 16): 5,
(256, 256, 16): 0,
}
SM100_MMA_SHAPES_TF32_DENSE_1SM = {
(64, 8, 8): 5,
(64, 16, 8): 2,
(64, 24, 8): 5,
(64, 32, 8): 2,
(64, 40, 8): 5,
(64, 48, 8): 5,
(64, 56, 8): 5,
(64, 64, 8): 1,
(64, 72, 8): 5,
(64, 80, 8): 5,
(64, 88, 8): 5,
(64, 96, 8): 5,
(64, 104, 8): 5,
(64, 112, 8): 5,
(64, 120, 8): 5,
(64, 128, 8): 0,
(64, 136, 8): 5,
(64, 144, 8): 5,
(64, 152, 8): 5,
(64, 160, 8): 5,
(64, 168, 8): 5,
(64, 176, 8): 5,
(64, 184, 8): 5,
(64, 192, 8): 3,
(64, 200, 8): 5,
(64, 208, 8): 5,
(64, 216, 8): 5,
(64, 224, 8): 5,
(64, 232, 8): 5,
(64, 240, 8): 5,
(64, 248, 8): 5,
(64, 256, 8): 3,
(128, 16, 8): 2,
(128, 32, 8): 2,
(128, 48, 8): 5,
(128, 64, 8): 2,
(128, 80, 8): 5,
(128, 96, 8): 5,
(128, 112, 8): 5,
(128, 128, 8): 0,
(128, 144, 8): 5,
(128, 160, 8): 5,
(128, 176, 8): 5,
(128, 192, 8): 3,
(128, 208, 8): 5,
(128, 224, 8): 5,
(128, 240, 8): 5,
(128, 256, 8): 0,
}
SM100_MMA_SHAPES_TF32_DENSE_2SM = {
(128, 32, 8): 2,
(128, 64, 8): 1,
(128, 96, 8): 5,
(128, 128, 8): 0,
(128, 160, 8): 5,
(128, 192, 8): 5,
(128, 224, 8): 5,
(128, 256, 8): 0,
(256, 32, 8): 2,
(256, 64, 8): 1,
(256, 96, 8): 5,
(256, 128, 8): 0,
(256, 160, 8): 5,
(256, 192, 8): 5,
(256, 224, 8): 5,
(256, 256, 8): 0,
}
SM100_MMA_SHAPES_F8F6F4_DENSE_1SM = {
(64, 8, 32): 4,
(64, 16, 32): 4,
(64, 24, 32): 5,
(64, 32, 32): 3,
(64, 40, 32): 5,
(64, 48, 32): 5,
(64, 56, 32): 5,
(64, 64, 32): 2,
(64, 72, 32): 5,
(64, 80, 32): 5,
(64, 88, 32): 5,
(64, 96, 32): 5,
(64, 104, 32): 5,
(64, 112, 32): 5,
(64, 120, 32): 5,
(64, 128, 32): 0,
(64, 136, 32): 5,
(64, 144, 32): 5,
(64, 152, 32): 5,
(64, 160, 32): 5,
(64, 168, 32): 5,
(64, 176, 32): 5,
(64, 184, 32): 5,
(64, 192, 32): 5,
(64, 200, 32): 5,
(64, 208, 32): 5,
(64, 216, 32): 5,
(64, 224, 32): 5,
(64, 232, 32): 5,
(64, 240, 32): 5,
(64, 248, 32): 5,
(64, 256, 32): 0,
(128, 16, 32): 4,
(128, 32, 32): 3,
(128, 48, 32): 5,
(128, 64, 32): 2,
(128, 80, 32): 5,
(128, 96, 32): 5,
(128, 112, 32): 5,
(128, 128, 32): 0,
(128, 144, 32): 5,
(128, 160, 32): 5,
(128, 176, 32): 5,
(128, 192, 32): 5,
(128, 208, 32): 5,
(128, 224, 32): 5,
(128, 240, 32): 5,
(128, 256, 32): 0,
}
SM100_MMA_SHAPES_F8F6F4_DENSE_2SM = {
(128, 32, 32): 3,
(128, 64, 32): 2,
(128, 96, 32): 5,
(128, 128, 32): 1,
(128, 160, 32): 5,
(128, 192, 32): 5,
(128, 224, 32): 5,
(128, 256, 32): 1,
(256, 32, 32): 2,
(256, 64, 32): 2,
(256, 96, 32): 5,
(256, 128, 32): 0,
(256, 160, 32): 5,
(256, 192, 32): 5,
(256, 224, 32): 5,
(256, 256, 32): 0,
}
SM100_MMA_SHAPES_MXF8F6F4_DENSE_1SM = {
(128, 64, 32): 1,
(128, 128, 32): 0,
(128, 192, 32): 1,
(128, 256, 32): 0,
}
SM100_MMA_SHAPES_MXF8F6F4_SPARSE_1SM = {
(128, 128, 32): 0,
(128, 192, 32): 1,
(128, 256, 32): 0,
}
SM100_MMA_SHAPES_MXF8F6F4_DENSE_2SM = {
(256, 64, 32): 1,
(256, 128, 32): 0,
(256, 192, 32): 1,
(256, 256, 32): 0,
}
SM100_MMA_SHAPES_MXF8F6F4_SPARSE_2SM = {
(256, 128, 32): 0,
(256, 192, 32): 1,
(256, 256, 32): 0,
}
SM100_MMA_SHAPES_MXF4NVF4_DENSE_1SM = {
(128, 64, 64): 1,
(128, 128, 64): 0,
(128, 192, 64): 1,
(128, 256, 64): 0,
}
SM100_MMA_SHAPES_MXF4NVF4_SPARSE_1SM = {
(128, 128, 64): 0,
(128, 256, 64): 0,
}
SM100_MMA_SHAPES_MXF4NVF4_DENSE_2SM = {
(256, 64, 64): 1,
(256, 128, 64): 0,
(256, 192, 64): 1,
(256, 256, 64): 0,
}
SM100_MMA_SHAPES_MXF4NVF4_SPARSE_2SM = {
(256, 128, 64): 0,
(256, 256, 64): 0,
}