Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 83 additions & 93 deletions op_tests/test_gemm_a4w4.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,120 +155,110 @@ def test_gemm(dtype, M, N, K):
return ret


l_dtype = ["bf16"]
l_mnk = [
# pure_compute
(256, 2048, 8192),
(2048, 8192, 8192),
(16384, 16384, 16384),
(32768, 106496, 16384),
(32768, 16384, 53248),
(32768, 18432, 16384),
(32768, 16384, 16384),
(128, 106496, 16384),
(128, 16384, 53248),
(128, 18432, 16384),
(128, 16384, 16384),
(64, 106496, 16384),
(64, 16384, 53248),
(64, 18432, 16384),
(64, 16384, 16384),
(64, 106496, 16384),
(32, 106496, 16384),
(32, 16384, 53248),
(32, 18432, 16384),
(32, 16384, 16384),
# qkv_proj
(1, 1280, 8192),
(64, 1280, 8192),
(127, 1280, 8192),
(129, 1280, 8192),
(65, 1280, 8192),
(32, 1280, 8192),
(64, 1280, 8192),
(128, 1280, 8192),
(192, 1280, 8192),
(256, 1280, 8192),
(320, 1280, 8192),
(512, 1280, 8192),
(1024, 1280, 8192),
(2048, 1280, 8192),
(4096, 1280, 8192),
(8192, 1280, 8192),
# attn_out
(1, 8192, 1024),
(32, 8192, 1024),
(64, 8192, 1024),
(128, 8192, 1024),
(192, 8192, 1024),
(256, 8192, 1024),
(320, 8192, 1024),
(512, 8192, 1024),
(1024, 8192, 1024),
(2048, 8192, 1024),
(4096, 8192, 1024),
(8192, 8192, 1024),
(16384, 8192, 1024),
# tune
(1552, 8192, 8192),
(1664, 8192, 8192),
(1792, 8192, 8192),
(1920, 8192, 8192),
(3072, 8192, 8192),
(1552, 10240, 8192),
(1664, 10240, 8192),
(1792, 10240, 8192),
(1920, 10240, 8192),
(3072, 10240, 8192),
(1552, 57344, 8192),
(1664, 57344, 8192),
(1792, 57344, 8192),
(1920, 57344, 8192),
(3072, 57344, 8192),
(1552, 8192, 28672),
(1664, 8192, 28672),
(1792, 8192, 28672),
(1920, 8192, 28672),
(3072, 8192, 28672),
]

parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHelpFormatter,
description="config input of test",
)
parser.add_argument(
"-d",
"--dtype",
type=str,
choices=l_dtype,
nargs="?",
const=None,
default=None,
type=dtypes.str2Dtype,
nargs="*",
choices=[dtypes.d_dtypes["bf16"]],
metavar="{bf16}",
default=[dtypes.d_dtypes["bf16"]],
help="""Data type.
e.g.: -d bf16""",
)
parser.add_argument(
"-mnk",
"--shape",
type=dtypes.str2tuple,
nargs="?",
const=None,
default=None,
nargs="*",
default=[
# pure_compute
(256, 2048, 8192),
(2048, 8192, 8192),
(16384, 16384, 16384),
(32768, 106496, 16384),
(32768, 16384, 53248),
(32768, 18432, 16384),
(32768, 16384, 16384),
(128, 106496, 16384),
(128, 16384, 53248),
(128, 18432, 16384),
(128, 16384, 16384),
(64, 106496, 16384),
(64, 16384, 53248),
(64, 18432, 16384),
(64, 16384, 16384),
(64, 106496, 16384),
(32, 106496, 16384),
(32, 16384, 53248),
(32, 18432, 16384),
(32, 16384, 16384),
# qkv_proj
(1, 1280, 8192),
(64, 1280, 8192),
(127, 1280, 8192),
(129, 1280, 8192),
(65, 1280, 8192),
(32, 1280, 8192),
(64, 1280, 8192),
(128, 1280, 8192),
(192, 1280, 8192),
(256, 1280, 8192),
(320, 1280, 8192),
(512, 1280, 8192),
(1024, 1280, 8192),
(2048, 1280, 8192),
(4096, 1280, 8192),
(8192, 1280, 8192),
# attn_out
(1, 8192, 1024),
(32, 8192, 1024),
(64, 8192, 1024),
(128, 8192, 1024),
(192, 8192, 1024),
(256, 8192, 1024),
(320, 8192, 1024),
(512, 8192, 1024),
(1024, 8192, 1024),
(2048, 8192, 1024),
(4096, 8192, 1024),
(8192, 8192, 1024),
(16384, 8192, 1024),
# tune
(1552, 8192, 8192),
(1664, 8192, 8192),
(1792, 8192, 8192),
(1920, 8192, 8192),
(3072, 8192, 8192),
(1552, 10240, 8192),
(1664, 10240, 8192),
(1792, 10240, 8192),
(1920, 10240, 8192),
(3072, 10240, 8192),
(1552, 57344, 8192),
(1664, 57344, 8192),
(1792, 57344, 8192),
(1920, 57344, 8192),
(3072, 57344, 8192),
(1552, 8192, 28672),
(1664, 8192, 28672),
(1792, 8192, 28672),
(1920, 8192, 28672),
(3072, 8192, 28672),
],
help="""Shape of mnk.
e.g. -mnk 1280,8192,1024""",
)

args = parser.parse_args()
if args.dtype is None:
l_dtype = [dtypes.d_dtypes[key] for key in l_dtype]
else:
l_dtype = [dtypes.d_dtypes[args.dtype]]
if args.shape is not None:
l_mnk = [args.shape]

df = []
for dtype in l_dtype:
for m, n, k in l_mnk:
for dtype in args.dtype:
for m, n, k in args.shape:
ret = test_gemm(dtype, m, n, k)
df.append(ret)
df = pd.DataFrame(df)
Expand Down
131 changes: 80 additions & 51 deletions op_tests/test_gemm_a8w8_blockscale.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,54 +138,19 @@ def run_asm(x, weight, x_scale, w_scale, dtype=dtypes.bf16, kernel_name=None):
parser.add_argument(
"-d",
"--dtype",
type=str,
choices=["bf16"],
nargs="?",
const=None,
default=None,
type=dtypes.str2Dtype,
choices=[dtypes.d_dtypes["bf16"]],
nargs="*",
default=[dtypes.d_dtypes["bf16"]],
metavar="{bf16}",
help="""Data type.
e.g.: -d bf16""",
)
parser.add_argument(
"-m",
type=int,
nargs="?",
const=None,
default=None,
help="""M of mnk.
e.g.: -m 32""",
)
parser.add_argument(
"-nk",
type=dtypes.str2tuple,
nargs="?",
const=None,
default=None,
help="""N&K of mnk.
e.g.: -nk 4096,512""",
)
parser.add_argument(
"--ck_preshuffle",
nargs="?",
default=[True, False],
help="weight ck_preshuffle or not",
)

args = parser.parse_args()
if args.dtype is None:
l_dtype = [dtypes.d_dtypes[key] for key in ["bf16"]]
else:
l_dtype = [dtypes.d_dtypes[args.dtype]]
if args.m is not None:
l_m = [args.m]
if args.nk is not None:
l_nk = [args.nk]
l_preshuffle: List[bool] = args.ck_preshuffle

df = []
for dtype in [dtypes.bf16]:
# deepseek-r1
for m in [
nargs="*",
choices=[
1,
2,
4,
Expand Down Expand Up @@ -213,15 +178,79 @@ def run_asm(x, weight, x_scale, w_scale, dtype=dtypes.bf16, kernel_name=None):
6144,
8192,
10240,
]:
for n, k in [
(24576, 1536),
# (32768, 512),
# (7168, 16384),
# (36864, 7168),
]:
ret = test_gemm(dtype, m, n, k, ck_preshuffle=False)
df.append(ret)
],
default=[
1,
2,
4,
8,
16,
32,
64,
96,
128,
160,
192,
224,
256,
288,
320,
352,
384,
416,
448,
480,
512,
1024,
2048,
4096,
6144,
8192,
10240,
],
help="""M of mnk.
e.g.: -m 32""",
)
parser.add_argument(
"-nk",
type=dtypes.str2tuple,
nargs="*",
choices=[
(24576, 1536),
# (32768, 512),
# (7168, 16384),
# (36864, 7168),
],
Comment thread
amd-ruitang3 marked this conversation as resolved.
default=[
(24576, 1536),
# (32768, 512),
# (7168, 16384),
# (36864, 7168),
],
help="""N&K of mnk.
e.g.: -nk 24576,1536""",
)
parser.add_argument(
"--ck_preshuffle",
type=dtypes.str2bool,
nargs="*",
default=[True, False],
help="""weight ck_preshuffle or not.
e.g.: --ck_preshuffle True
or --ck_preshuffle False
""",
)

args = parser.parse_args()

df = []
for dtype in args.dtype:
# deepseek-r1
for m in args.m:
for n, k in args.nk:
for ck_p in args.ck_preshuffle:
ret = test_gemm(dtype, m, n, k, ck_preshuffle=ck_p)
df.append(ret)
df = pd.DataFrame(df)

# Configure pandas to show all columns without truncation
Expand Down
Loading
Loading