v4.0 update. (#2371)

This commit is contained in:
Junkai-Wu
2025-06-06 14:39:20 +08:00
committed by GitHub
parent 2e2af190bd
commit 8bdbfca682
254 changed files with 29751 additions and 1980 deletions

View File

@@ -507,7 +507,8 @@ class Manifest:
self.selected_kernels = []
self.ignore_kernel_names = []
self.exclude_kernel_names = []
self.compute_capabilities = [50,]
self.compute_capabilities_baseline = [50,]
self.compute_capabilities_feature_set = ['50',]
self.curr_build_dir = '.'
self.filter_by_cc = True
@@ -518,21 +519,9 @@ class Manifest:
# A common user error is to use commas instead of semicolons.
if ',' in args.architectures:
raise RuntimeError("The list of architectures (CMake option CUTLASS_NVCC_ARCHS) must be semicolon-delimited.\nDon't use commas to separate the architectures; use semicolons.\nYou specified the list as: " + args.architectures)
architectures = args.architectures.split(';') if len(args.architectures) else ['50',]
arch_conditional_cc = [
'90a',
'100a',
'100f',
'101a',
'101f',
'120a',
'120f'
]
architectures = [x if x not in arch_conditional_cc else x.split('a')[0] for x in architectures]
architectures = [x if x not in arch_conditional_cc else x.split('f')[0] for x in architectures]
self.compute_capabilities = [int(x) for x in architectures]
self.compute_capabilities_feature_set = args.architectures.split(';') if len(args.architectures) else ['50',]
self.compute_capabilities_baseline = sorted(set(int(arch.split('a')[0].split('f')[0]) for arch in self.compute_capabilities_feature_set))
if args.filter_by_cc in ['false', 'False', '0']:
self.filter_by_cc = False
@@ -597,7 +586,7 @@ class Manifest:
return default_level
def get_kernel_filters (self, kernelListFile):
def get_kernel_filters(self, kernelListFile):
if os.path.isfile(kernelListFile):
with open(kernelListFile, 'r') as fileReader:
lines = [line.rstrip() for line in fileReader if not line.startswith("#")]
@@ -635,7 +624,7 @@ class Manifest:
# filter based on compute capability
enabled = not (self.filter_by_cc)
for cc in self.compute_capabilities:
for cc in self.compute_capabilities_baseline:
if cc >= operation.tile_description.minimum_compute_capability and \
cc <= operation.tile_description.maximum_compute_capability and \
@@ -789,14 +778,14 @@ class Manifest:
return name.endswith(".cpp")
def get_src_archs_str_given_requested_cuda_archs(archs, source_file):
intersected_archs = archs & set(self.compute_capabilities)
intersected_archs = archs & set(self.compute_capabilities_baseline)
if intersected_archs == set():
raise RuntimeError(
"""
Empty archs set for file {} after taking
the intersection of {} (global requested archs) and
{} (per file requested archs)
""".format(source_file, set(self.compute_capabilities), archs))
""".format(source_file, set(self.compute_capabilities_baseline), archs))
else:
return " ".join(map(str, intersected_archs))