BLD: Add more kernels

This commit is contained in:
Rohit Goswami 2024-04-28 04:29:28 +00:00 committed by Mateusz Sokół
parent 5599d73f4a
commit b68012462d
1 changed files with 231 additions and 70 deletions

View File

@ -72,12 +72,13 @@ base_kops = [
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zdot.c'}}}, 'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zdot.c'}}},
}, },
}, },
# TODO(rg): Add dsdotkernel conditionals
# xDOTU xDOTC xxDOT aren't present # xDOTU xDOTC xxDOT aren't present
{ 'base': '?nrm2', { 'base': '?nrm2',
'modes': { 'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'nrm2.c'}}}, 's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'nrm2.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'nrm2.c'}}}, 'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'nrm2.c'}}},
'q': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}}, 'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'nrm2.S'}}},
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}}, 'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}},
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}}, 'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}},
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}}, 'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'znrm2.c'}}},
@ -103,81 +104,241 @@ base_kops = [
'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zamax.c'}}}, 'x': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zamax.c'}}},
}, },
}, },
# TODO: Handle the i*amax style { 'base': '?sum',
'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'sum.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'sum.c'}}},
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zsum.c'}}},
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zsum.c'}}},
},
},
{ 'base': '?amin',
'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'amin.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'amin.c'}}},
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zamin.c'}}},
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zamin.c'}}},
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'iamax.S'}}},
'x': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'izamax.S'}}},
},
},
{ 'base': 'i?amax',
'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'iamax.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'iamax.c'}}},
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'izamax.c'}}},
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'izamax.c'}}},
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'iamax.S'}}},
'x': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'izamax.S'}}},
},
},
{ 'base': 'i?amin',
'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'iamin.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'iamin.c'}}},
'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'izamin.c'}}},
'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'izamin.c'}}},
},
},
{ 'base': 'i?max',
'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'imax.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'imax.c'}}},
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'iamax.S'}}},
},
},
{ 'base': 'i?min',
'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'imin.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'imin.c'}}},
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'iamax.S'}}},
},
},
{ 'base': '?max',
'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'max.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'max.c'}}},
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'amax.S'}}},
},
},
{ 'base': '?min',
'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'min.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'min.c'}}},
'q': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'amax.S'}}},
},
},
{ 'base': '?axpby', { 'base': '?axpby',
'modes': { 'modes': {
's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'axpby.c'}}}, 's': {'exts': {'_k': {'dir': 'arm', 'kernel': 'axpby.c'}}},
'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'axpby.c'}}}, 'd': {'exts': {'_k': {'dir': 'arm', 'kernel': 'axpby.c'}}},
'c': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'zaxpy_sse.S'}}}, 'c': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zaxpby.c'}}},
'z': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'zaxpy_sse2.S'}}}, 'z': {'exts': {'_k': {'dir': 'arm', 'kernel': 'zaxpby.c'}}},
}, },
}, },
# # # Level 2 BLAS # Level 2 BLAS
# # # There are additional sources so now we have srcs # There are additional sources so now we have srcs
# # # Ordered as per KERNEL.generic and Makefile.L2 # Ordered as per KERNEL.generic and Makefile.L2
# # # exts are used to find the flags for each modality # exts are used to find the flags for each modality
# # # ext is attached to base (only useful from Level 2) # ext is attached to base (only useful from Level 2)
# # # i.e. baseext (e.g., gemv_n, gemv_t, cgeru_k, cgerc_k) # i.e. baseext (e.g., gemv_n, gemv_t, cgeru_k, cgerc_k)
# # {'base': 'gemv', # {'base': '?gemv',
# # 'modes': {'s': {'dir': 'arm', 'kernel': 'gemv_n.c', 'exts': ['_n', '_t']}, # 'modes': {
# # 'd': {'dir': 'arm', 'kernel': 'gemv_n.c', # 's': {
# # # TODO: _t should take fmaflag, but then we need a dictionary.. # 'exts': {
# # # From Makefile.L2 # '_n': {'dir': 'arm', 'kernel': 'gemv_n.c'},
# # 'exts': ['_n', '_t']}, # '_t': {'dir': 'arm', 'kernel': 'gemv_n.c'},
# # 'q': {'dir': 'arm', 'kernel': 'gemv_n.c', 'exts': ['_n', '_t']}, # }
# # 'c': {'dir': 'arm', 'kernel': 'zgemv_n.c', # },
# # 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']}, # 'd': {
# # 'z': {'dir': 'arm', 'kernel': 'zgemv_n.c', # 'exts': {
# # 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']}, # '_n': {'dir': 'arm', 'kernel': 'gemv_n.c'},
# # 'x': {'dir': 'arm', 'kernel': 'zgemv_n.c', # '_t': {'dir': 'arm', 'kernel': 'gemv_n.c'},
# # 'exts': ['_n', '_t', '_r', '_c', '_o', '_u', '_s', '_d']}, # }
# # }, # },
# # }, # 'q': {
# # {'base': 'symv', # 'exts': {
# # 'modes': {'s': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']}, # '_n': {'dir': 'arm', 'kernel': 'gemv_n.c'},
# # 'd': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']}, # '_t': {'dir': 'arm', 'kernel': 'gemv_n.c'},
# # 'q': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']}, # }
# # 'c': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']}, # },
# # 'z': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']}, # 'c': {
# # 'x': {'dir': 'generic', 'kernel': 'symv_k.c', 'exts': ['_U', '_L']}, # 'exts': {
# # }, # '_n': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # }, # '_t': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # {'base': 'ger', # '_r': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'modes': {'s': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']}, # '_c': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'd': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']}, # '_o': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'q': {'dir': 'generic', 'kernel': 'ger.c', 'exts': ['_k']} # '_u': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # }, # '_s': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # }, # '_d': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # {'base': 'geru', # }
# # 'modes': {'c': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']}, # },
# # 'z': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']}, # 'z': {
# # 'x': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']} # 'exts': {
# # } # '_n': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # }, # '_t': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # {'base': 'gerc', # '_r': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'modes': {'c': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']}, # '_c': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'z': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']}, # '_o': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'x': {'dir': 'generic', 'kernel': 'zger.c', 'exts': ['_k']}, # '_u': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # }, # '_s': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # }, # '_d': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # {'base': 'hemv', # }
# # 'modes': {'c': {'dir': 'generic', # },
# # 'kernel': 'zhemv_k.c', # 'x': {
# # 'exts': ['_U', '_L', '_V', '_M']}, # 'exts': {
# # 'z': {'dir': 'generic', # '_n': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'kernel': 'zhemv_k.c', # '_t': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'exts': ['_U', '_L', '_V', '_M']}, # '_r': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'x': {'dir': 'generic', # '_c': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'kernel': 'zhemv_k.c', # '_o': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # 'exts': ['_U', '_L', '_V', '_M']}, # '_u': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # }, # '_s': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # }, # '_d': {'dir': 'arm', 'kernel': 'zgemv_n.c'},
# # {'base': 'bgemv', # }
# # 'modes': {'s': {'dir': 'x86_64', # },
# # 'kernel': 'sbgemv_n.c', # },
# # 'exts': ['_n', '_t']} # },
# # }, # {'base': '?symv',
# # }, # 'modes': {
# 's': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'symv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'symv_k.c'},
# }
# },
# 'd': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'symv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'symv_k.c'},
# }
# },
# 'q': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'symv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'symv_k.c'},
# }
# },
# 'c': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'symv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'symv_k.c'},
# }
# },
# 'z': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'symv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'symv_k.c'},
# }
# },
# 'x': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'symv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'symv_k.c'},
# }
# },
# },
# },
# {'base': '?ger',
# 'modes': {
# 's': {'exts': {'_k': {'dir': 'generic', 'kernel': 'ger.c'}}},
# 'd': {'exts': {'_k': {'dir': 'generic', 'kernel': 'ger.c'}}},
# 'q': {'exts': {'_k': {'dir': 'generic', 'kernel': 'ger.c'}}},
# },
# },
# {'base': '?geru',
# 'modes': {
# 'c': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}},
# 'z': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}},
# 'x': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}},
# },
# },
# {'base': '?gerc',
# 'modes': {
# 'c': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}},
# 'z': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}},
# 'x': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}},
# },
# },
# {'base': '?hemv',
# 'modes': {
# 'c': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_V': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_M': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# }
# },
# 'z': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_V': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_M': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# }
# },
# 'x': {
# 'exts': {
# '_U': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_L': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_V': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# '_M': {'dir': 'generic', 'kernel': 'zhemv_k.c'},
# }
# },
# },
# },
# {'base': '?bgemv',
# 'modes': {
# 's': {
# 'exts': {
# '_n': {'dir': 'x86_64', 'kernel': 'sbgemv_n.c'},
# '_t': {'dir': 'x86_64', 'kernel': 'sbgemv_n.c'},
# }
# }
# },
# },
] ]
kernel_confs = [] kernel_confs = []