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
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
gfx,b,m,n,k,libtype,kernelId,splitK,us,kernelName,tflops,bw,errRatio
gfx950,2,1,1024,4096,opus,311,1,7.8,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,2.2,1076.95,0.0015
gfx950,2,4,1024,4096,opus,311,1,7.84,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,8.6,1075.87,0.0015
gfx950,2,8,1024,4096,opus,311,1,8.08,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,16.6,1050.11,0.0015
gfx950,2,16,1024,4096,opus,311,1,8.37,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,32.1,1025.7,0.0015
gfx950,2,32,1024,4096,opus,311,1,8.4,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,63.9,1045.26,0.0015
gfx950,2,64,1024,4096,opus,311,1,8.53,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,125.9,1075.6,0.0015
gfx950,2,128,1024,4096,opus,321,1,10.76,opus_bmm_a8w8_mxscale_flatmm_splitk_256x32x32x256_2x1_16x16x128_1x128x128_wgpcu2_scaleprefetch,199.5,925.53,0.0015
gfx950,2,256,1024,4096,opus,324,1,11.9082,opus_bmm_a8w8_mxscale_flatmm_splitk_256x64x32x256_2x1_16x16x128_1x128x128_wgpcu2_sfpreload,360.7,968.6,0.0002
gfx950,2,512,1024,4096,opus,324,1,18.3635,opus_bmm_a8w8_mxscale_flatmm_splitk_256x64x32x256_2x1_16x16x128_1x128x128_wgpcu2_sfpreload,467.8,799.42,0.0003
gfx950,2,1024,1024,4096,opus,326,1,20.9909,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x64x256_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,818.4,999.08,0.0
gfx950,2,1536,1024,4096,opus,325,1,36.81,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x128x128_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,700.1,740.68,0.0015
gfx950,2,2048,1024,4096,opus,325,1,39.05,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x128x128_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,879.9,859.29,0.0015
gfx950,2,2560,1024,4096,opus,158,1,56.53,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,759.7,704.83,0.0015
gfx950,2,3072,1024,4096,opus,158,1,57.16,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,901.6,807.13,0.0015
gfx950,2,3584,1024,4096,opus,158,1,58.34,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1030.7,898.72,0.0015
gfx950,2,4096,1024,4096,opus,158,1,69.04,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,995.3,850.51,0.0015
gfx950,2,8192,1024,4096,opus,158,1,85.01,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1616.8,1282.88,0.0015
gfx950,2,16384,1024,4096,opus,158,1,145.45,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1889.8,1441.83,0.0015
gfx950,2,32768,1024,4096,opus,158,1,261.61,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2101.4,1571.21,0.0015
gfx950,4,1,1024,4096,opus,311,1,7.74,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,4.3,2169.4,0.0015
gfx950,4,4,1024,4096,opus,311,1,7.89,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,17.0,2138.74,0.0015
gfx950,4,8,1024,4096,opus,311,1,7.85,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,34.2,2161.65,0.0015
gfx950,4,16,1024,4096,opus,311,1,8.39,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,64.0,2045.46,0.0015
gfx950,4,32,1024,4096,opus,321,1,10.34,opus_bmm_a8w8_mxscale_flatmm_splitk_256x32x32x256_2x1_16x16x128_1x128x128_wgpcu2_scaleprefetch,103.8,1698.12,0.0015
gfx950,4,64,1024,4096,opus,321,1,11.87,opus_bmm_a8w8_mxscale_flatmm_splitk_256x32x32x256_2x1_16x16x128_1x128x128_wgpcu2_scaleprefetch,180.9,1546.14,0.0015
gfx950,4,128,1024,4096,opus,324,1,13.801,opus_bmm_a8w8_mxscale_flatmm_splitk_256x64x32x256_2x1_16x16x128_1x128x128_wgpcu2_sfpreload,311.2,1443.59,0.0001
gfx950,4,256,1024,4096,opus,324,1,17.6019,opus_bmm_a8w8_mxscale_flatmm_splitk_256x64x32x256_2x1_16x16x128_1x128x128_wgpcu2_sfpreload,488.0,1310.58,0.0003
gfx950,4,512,1024,4096,opus,326,1,25.2556,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x64x256_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,680.2,1162.52,0.0
gfx950,4,1024,1024,4096,opus,325,1,39.32,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x128x128_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,873.9,1066.79,0.0015
gfx950,4,1536,1024,4096,opus,158,1,57.68,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,893.5,945.32,0.0015
gfx950,4,2048,1024,4096,opus,158,1,62.04,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1107.7,1081.75,0.0015
gfx950,4,2560,1024,4096,opus,158,1,65.06,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1320.3,1224.92,0.0015
gfx950,4,3072,1024,4096,opus,158,1,66.57,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1548.4,1386.08,0.0015
gfx950,4,3584,1024,4096,opus,158,1,78.52,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1531.5,1335.4,0.0015
gfx950,4,4096,1024,4096,opus,158,1,76.9,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1787.2,1527.13,0.0015
gfx950,4,8192,1024,4096,opus,158,1,135.76,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2024.7,1606.55,0.0015
gfx950,4,16384,1024,4096,opus,158,1,268.67,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2046.2,1561.11,0.0015
gfx950,4,32768,1024,4096,opus,158,1,516.35,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2129.4,1592.12,0.0015
gfx950,8,1,1024,4096,opus,311,1,9.62,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,7.0,3493.57,0.0015
gfx950,8,4,1024,4096,opus,311,1,9.74,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,27.6,3465.75,0.0015
gfx950,8,8,1024,4096,opus,311,1,9.83,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,54.6,3452.88,0.0015
gfx950,8,16,1024,4096,opus,311,1,10.13,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x32x512_1x2_16x16x128_1x128x128_wgpcu2_scaleprefetch,106.0,3388.57,0.0015
gfx950,8,32,1024,4096,opus,321,1,11.56,opus_bmm_a8w8_mxscale_flatmm_splitk_256x32x32x256_2x1_16x16x128_1x128x128_wgpcu2_scaleprefetch,185.8,3038.69,0.0015
gfx950,8,64,1024,4096,opus,324,1,15.76,opus_bmm_a8w8_mxscale_flatmm_splitk_256x64x32x256_2x1_16x16x128_1x128x128_wgpcu2_sfpreload,272.5,2328.22,0.0015
gfx950,8,128,1024,4096,opus,653,1,20.76,opus_bmm_a8w8_mxscale_flatmm_splitk_256x64x64x128_2x1_16x16x128_1x128x128_wgpcu2_scaleprefetch,413.7,1918.99,0.0015
gfx950,8,256,1024,4096,opus,326,1,27.81,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x64x256_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,617.7,1658.86,0.0015
gfx950,8,512,1024,4096,opus,325,1,38.33,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x128x128_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,896.4,1531.97,0.0015
gfx950,8,1024,1024,4096,opus,158,1,60.87,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1129.0,1378.22,0.0015
gfx950,8,1536,1024,4096,opus,158,1,78.73,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1309.3,1385.18,0.0015
gfx950,8,2048,1024,4096,opus,158,1,80.06,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1716.7,1676.46,0.0015
gfx950,8,2560,1024,4096,opus,158,1,139.21,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1234.1,1144.93,0.0015
gfx950,8,3072,1024,4096,opus,158,1,125.44,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1643.5,1471.24,0.0015
gfx950,8,3584,1024,4096,opus,158,1,147.82,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1627.1,1418.74,0.0015
gfx950,8,4096,1024,4096,opus,158,1,140.65,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1954.4,1670.0,0.0015
gfx950,8,8192,1024,4096,opus,158,1,260.59,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2109.6,1673.91,0.0015
gfx950,8,16384,1024,4096,opus,158,1,519.59,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2116.1,1614.48,0.0015
gfx950,8,32768,1024,4096,opus,158,1,1010.34,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2176.5,1627.34,0.0015
gfx950,16,1,1024,4096,opus,313,1,15.7137,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x64x256_1x2_16x16x128_1x128x128_wgpcu2,8.5,4276.98,0.0002
gfx950,16,4,1024,4096,opus,313,1,15.955,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x64x256_1x2_16x16x128_1x128x128_wgpcu2,33.6,4230.78,0.0001
gfx950,16,8,1024,4096,opus,313,1,16.9,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x64x256_1x2_16x16x128_1x128x128_wgpcu2,63.5,4017.02,0.0014
gfx950,16,16,1024,4096,opus,313,1,17.81,opus_bmm_a8w8_mxscale_flatmm_splitk_256x16x64x256_1x2_16x16x128_1x128x128_wgpcu2,120.6,3856.31,0.0014
gfx950,16,32,1024,4096,opus,321,1,19.47,opus_bmm_a8w8_mxscale_flatmm_splitk_256x32x32x256_2x1_16x16x128_1x128x128_wgpcu2_scaleprefetch,220.6,3608.38,0.0015
gfx950,16,48,1024,4096,opus,324,1,20.0475,opus_bmm_a8w8_mxscale_flatmm_splitk_256x64x32x256_2x1_16x16x128_1x128x128_wgpcu2_sfpreload,321.4,3582.86,0.0002
gfx950,16,64,1024,4096,opus,326,1,21.5703,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x64x256_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,398.2,3402.84,0.0
gfx950,16,128,1024,4096,opus,326,1,30.66,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x64x256_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,560.4,2599.37,0.0015
gfx950,16,256,1024,4096,opus,325,1,40.86,opus_bmm_a8w8_mxscale_flatmm_splitk_256x128x128x128_2x1_16x16x128_1x128x128_wgpcu1_sfpreload,840.9,2258.39,0.0015
gfx950,16,512,1024,4096,opus,158,1,68.25,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1006.9,1720.69,0.0015
gfx950,16,1024,1024,4096,opus,158,1,92.61,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1484.1,1811.68,0.0015
gfx950,16,1536,1024,4096,opus,158,1,155.88,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1322.5,1399.14,0.0015
gfx950,16,2048,1024,4096,opus,158,1,152.51,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1802.3,1760.06,0.0015
gfx950,16,2560,1024,4096,opus,158,1,227.19,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1512.4,1403.1,0.0015
gfx950,16,3072,1024,4096,opus,158,1,215.94,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1909.4,1709.28,0.0015
gfx950,16,3584,1024,4096,opus,158,1,288.43,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1667.8,1454.19,0.0015
gfx950,16,4096,1024,4096,opus,158,1,265.33,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2071.9,1770.46,0.0015
gfx950,16,8192,1024,4096,opus,158,1,510.07,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2155.6,1710.37,0.0015
gfx950,16,16384,1024,4096,opus,158,1,1107.72,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,1985.2,1514.58,0.0015
gfx950,16,32768,1024,4096,opus,158,1,2088.03,opus_bmm_a8w8_mxscale_pipeline_512x256x256x128_2x1_16x16x128_1x128x128_preload_sf,2106.3,1574.85,0.0015
36 changes: 30 additions & 6 deletions aiter/jit/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def mp_lock(
return ret
# Could not acquire: another process holds the lock. Wait for it.
# wait() returns True if the holder released normally (work done),
# or False if it broke a stale lock left by a dead/abandoned holder
# or False if it broke a stale lock left by a dead/abandoned holder --
# in which case we loop and try to acquire + build ourselves.
if baton.wait():
if WaitFunc is not None:
Expand Down Expand Up @@ -133,6 +133,18 @@ def mp_lock(
f"{AITER_ROOT_DIR}/aiter/configs/bf16_tuned_batched_gemm.csv",
)

# fp8 e8m0 mxscale (block-scale) batched-GEMM tuned config. Its own family
# (scale type baked into the filename, matching the a8w8_/bf16_ split) so a
# future fp32 rowwise-scale variant lands in a separate CSV and never collides
# on key. The scale type is identified by the filename alone. The
# per-model tuned data currently lives under model_configs/ (e.g.
# dsv4_batched_gemm_a8w8_blockscale_mxscale_tuned.csv), merged in at runtime by
# get_config_file; this canonical path may not exist on disk.
AITER_CONFIG_BATCHED_GEMM_A8W8_BLOCKSCALE_MXSCALE = os.getenv(
"AITER_CONFIG_BATCHED_GEMM_A8W8_BLOCKSCALE_MXSCALE",
f"{AITER_ROOT_DIR}/aiter/configs/batched_gemm_a8w8_blockscale_mxscale_tuned.csv",
)

AITER_CONFIG_GEMM_BF16 = os.getenv(
"AITER_CONFIG_GEMM_BF16",
f"{AITER_ROOT_DIR}/aiter/configs/bf16_tuned_gemm.csv",
Expand Down Expand Up @@ -214,6 +226,14 @@ def AITER_CONFIG_GEMM_BF16_FILE(self):
"AITER_CONFIG_GEMM_BF16", AITER_CONFIG_GEMM_BF16, "bf16_tuned_gemm"
)

@property
def AITER_CONFIG_BATCHED_GEMM_A8W8_BLOCKSCALE_MXSCALE_FILE(self):
return self.get_config_file(
"AITER_CONFIG_BATCHED_GEMM_A8W8_BLOCKSCALE_MXSCALE",
AITER_CONFIG_BATCHED_GEMM_A8W8_BLOCKSCALE_MXSCALE,
"batched_gemm_a8w8_blockscale_mxscale_tuned",
)

def update_config_files(self, file_path: str, merge_name: str):
path_list = file_path.split(os.pathsep) if file_path else []
if len(path_list) <= 1:
Expand Down Expand Up @@ -269,11 +289,10 @@ def update_config_files(self, file_path: str, merge_name: str):
merge_df["_tag"] = merge_df["_tag"].fillna("")

## get keys from untuned file to drop_duplicates
untuned_name = (
re.sub(r"(?:_)?tuned$", r"\1untuned", merge_name)
if re.search(r"(?:_)?tuned$", merge_name)
else merge_name.replace("tuned", "untuned")
)
# Turn the tuned-file base name into its untuned sibling by rewriting the
# LAST "tuned" token (handles both mid-string names like
# "a8w8_tuned_gemm" and trailing ones like "..._mxscale_tuned").
untuned_name = "untuned".join(merge_name.rsplit("tuned", 1))
untuned_path = f"{AITER_ROOT_DIR}/aiter/configs/{untuned_name}.csv"
if os.path.exists(untuned_path):
untunedf = pd.read_csv(untuned_path)
Expand All @@ -283,6 +302,11 @@ def update_config_files(self, file_path: str, merge_name: str):
if "gfx" in merge_df.columns and "gfx" not in keys:
keys.append("gfx")
dedup_keys = keys + ["_tag"] if has_tag else keys
# Only key on columns actually present in the merged frame. Most
# families carry cu_num, but some (e.g. the mxscale batched-GEMM
# table) key on gfx and never carry cu_num; keeping a missing column
# in the subset would raise inside pandas' duplicated().
dedup_keys = [k for k in dedup_keys if k in merge_df.columns]
duplicated_mask = merge_df.duplicated(subset=dedup_keys, keep=False)
if duplicated_mask.any():
dup_count = int(duplicated_mask.sum())
Expand Down
3 changes: 2 additions & 1 deletion aiter/jit/optCompilerConfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,8 @@
"module_deepgemm_opus": {
"srcs": [
"f'{AITER_CSRC_DIR}/pybind/opus_gemm_pybind.cu'",
"f'{AITER_CSRC_DIR}/opus_gemm/opus_gemm.cu'"
"f'{AITER_CSRC_DIR}/opus_gemm/opus_gemm.cu'",
"f'{AITER_CSRC_DIR}/opus_gemm/opus_bmm.cu'"
],
"flags_extra_cc": [],
"flags_extra_hip": [
Expand Down
Loading
Loading