"const double* pb, " "const double* pc);"][0 < prefetch] substitute["MNK_INTERFACE_LIST"] += ( "\nLIBXSMM_API void libxsmm_dmm_" + mnkstr + "(const double* a, const double* b, double* c" + pfsig) if (0 == precision): substitute["MNK_INTERFACE_LIST"] += "\n" if (mnklist and 0 != precision): substitute["MNK_INTERFACE_LIST"] += "\n" print(template.substitute(substitute)) else: version, branch = \ libxsmm_utilities.version_branch() major, minor, update, patch = \ libxsmm_utilities.version_numbers(version) substitute = { "VERSION": version, "BRANCH": branch, "MAJOR": major, "MINOR": minor, "UPDATE": update, "PATCH": patch, "MNK_INTERFACE_LIST": "" } if (mnklist): substitute["MNK_INTERFACE_LIST"] += "\n" for mnk in mnklist: mnkstr = "_".join(map(str, mnk)) if (0 == precision): substitute["MNK_INTERFACE_LIST"] += (
"const double* pb, " "const double* pc);" ][0 < prefetch] substitute["MNK_INTERFACE_LIST"] += ( "\nLIBXSMM_API void libxsmm_dmm_" + mnkstr + "(const double* a, const double* b, double* c" + pfsig) if (0 == precision): substitute["MNK_INTERFACE_LIST"] += "\n" if (mnklist and 0 != precision): substitute["MNK_INTERFACE_LIST"] += "\n" print(template.substitute(substitute)) else: version, branch = \ libxsmm_utilities.version_branch() major, minor, update, patch = \ libxsmm_utilities.version_numbers(version) substitute = { "VERSION": version, "BRANCH": branch, "MAJOR": major, "MINOR": minor, "UPDATE": update, "PATCH": patch, "MNK_INTERFACE_LIST": "" } if (mnklist): substitute["MNK_INTERFACE_LIST"] += "\n" for mnk in mnklist: mnkstr = "_".join(map(str, mnk)) if (0 == precision): substitute["MNK_INTERFACE_LIST"] += (
jit = int(sys.argv[9]) if 10 < argc: flags = int(sys.argv[10]) if 11 < argc: alpha = int(sys.argv[11]) if 12 < argc: beta = int(sys.argv[12]) if 13 < argc: wrap = int(sys.argv[13]) if 14 < argc: malloc = int(sys.argv[14]) if 15 < argc: mnklist = sorted(libxsmm_utilities.load_mnklist(sys.argv[15:], 0)) version, branch, realversion = libxsmm_utilities.version_branch() major, minor, update, patch = libxsmm_utilities.version_numbers( version) if 0 == threshold: threshold = 64 * 64 * 64 maxmnk = libxsmm_utilities.max_mnk(mnklist, threshold) maxdim = int(maxmnk**(1.0 / 3.0) + 0.5) avgdim = int(0.5 * maxdim + 0.5) avgm = libxsmm_utilities.median(list(map(lambda mnk: mnk[0], mnklist)), avgdim, False) avgn = libxsmm_utilities.median(list(map(lambda mnk: mnk[1], mnklist)), avgdim, False) avgk = libxsmm_utilities.median(list(map(lambda mnk: mnk[2], mnklist)), avgdim, False) maxm = libxsmm_utilities.max_mnk(mnklist, avgdim, 0)
template = Template(open(filename, "r").read()) maxmnk = libxsmm_utilities.max_mnk(mnklist, threshold) maxdim = int(maxmnk ** (1.0 / 3.0) + 0.5) avgdim = int(0.5 * maxdim + 0.5) avgm = libxsmm_utilities.median(list(map(lambda mnk: mnk[0], mnklist)), avgdim, False) avgn = libxsmm_utilities.median(list(map(lambda mnk: mnk[1], mnklist)), avgdim, False) avgk = libxsmm_utilities.median(list(map(lambda mnk: mnk[2], mnklist)), avgdim, False) maxm = libxsmm_utilities.max_mnk(mnklist, avgdim, 0) maxn = libxsmm_utilities.max_mnk(mnklist, avgdim, 1) maxk = libxsmm_utilities.max_mnk(mnklist, avgdim, 2) version, branch = libxsmm_utilities.version_branch() major, minor, update, patch = libxsmm_utilities.version_numbers(version) substitute = { \ "VERSION": version, \ "BRANCH": branch, \ "MAJOR": major, \ "MINOR": minor, \ "UPDATE": update, \ "PATCH": patch, \ "ALIGNMENT": alignment, \ "ROW_MAJOR": 1 if (0 != row_major) else 0, \ "COL_MAJOR": 0 if (0 != row_major) else 1, \ "PREFETCH": prefetch, \ "MAX_MNK": maxmnk, \ "MAX_M": maxm if (avgm < maxm) else maxdim, \ "MAX_N": maxn if (avgn < maxn) else maxdim, \