MAINT: Start working on kernels and driver L2

This commit is contained in:
Rohit Goswami 2024-05-06 01:12:32 +00:00 committed by Mateusz Sokół
parent 321ec276e0
commit 2fe1f31161
5 changed files with 80 additions and 19 deletions

51
driver/level2/meson.build Normal file
View File

@ -0,0 +1,51 @@
# Naming conventions can be read from here:
# https://click.rgoswami.me/intel_blas_names
# Ported in order from the Makefile
driver_kops = [
{ 'base': '?gbmv',
'sources': {
'gbmv_k.c': {'mode': ['s', 'd', 'q'], 'exts': ['_n', '_t']},
'zgbmv_k.c': {'mode': ['c', 'z', 'x'],
'exts': ['_n', '_t', '_r', '_c',
'_o', '_u', '_s', '_d']},
}
},
{ 'base': '?gbmv_thread',
'sources': {
'gbmv_thread.c': {'mode': ['s', 'd', 'q',
'c', 'z', 'x'],
'exts': ['_n', '_t', '_r', '_c',
'_o', '_u', '_s', '_d']},
}
},
{ 'base': '?gemv_thread',
'sources': {
'gemv_thread.c': {'mode': ['s', 'd', 'q',
'c', 'z', 'x'],
'exts': ['_n', '_t', '_r', '_c',
'_o', '_u', '_s', '_d']},
}
},
{ 'base': '?ger_thread',
'sources': {
'ger_thread.c': {'mode': ['s', 'd', 'q'], 'exts': ['']},
'ger_thread.c': {'mode': ['c', 'z', 'x'],
'exts': ['_U', '_C',
'_V', '_D']},
}
},
{ 'base': '?symv_thread',
'sources': {
'symv_thread.c': {'mode': ['s', 'd', 'q',
'c', 'z', 'x'],
'exts': ['_U', '_L']},
}
},
{ 'base': '?hemv_thread',
'sources': {
'symv_thread.c': {'mode': ['c', 'z'],
'exts': ['_U', '_L',
'_V', '_M']},
},
},
]

View File

@ -0,0 +1 @@
# Generic

View File

@ -357,16 +357,16 @@ base_kops = [
},
# Level 3 symbols
# TODO(rg): Handle the if defines set in arch
{ 'base': '?gemm_beta',
'modes': {
's': {'exts': {'': {'dir': 'x86_64', 'kernel': 'gemm_beta.S'}}},
'd': {'exts': {'': {'dir': 'x86_64', 'kernel': 'gemm_beta.S'}}},
'c': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm_beta.S'}}},
'z': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm_beta.S'}}},
# 'q': {'exts': {'': {'dir': 'generic', 'kernel': 'gemm_beta.c'}}},
# 'x': {'exts': {'': {'dir': 'generic', 'kernel': 'zgemm_beta.c'}}},
},
},
# { 'base': '?gemm_beta', # This is a bfloat16 symbol, skipping for now
# 'modes': {
# 's': {'exts': {'': {'dir': 'x86_64', 'kernel': 'gemm_beta.S'}}},
# 'd': {'exts': {'': {'dir': 'x86_64', 'kernel': 'gemm_beta.S'}}},
# 'c': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm_beta.S'}}},
# 'z': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm_beta.S'}}},
# # 'q': {'exts': {'': {'dir': 'generic', 'kernel': 'gemm_beta.c'}}},
# # 'x': {'exts': {'': {'dir': 'generic', 'kernel': 'zgemm_beta.c'}}},
# },
# },
]
kernel_confs = []

View File

View File

@ -253,20 +253,28 @@ precision_mappings = {
}
ext_mappings = {
# TRANSA is only in drivers level2, kernel uses TRANS
# LOWER is not there for only for ?ger_thread_U in drivers level2
# TODO(rg): Does that, i.e. having (un)used symbols (un)defined matter?
'': {}, # special case
'_k': {},
'_U': {'undef': ['LOWER']},
'_U': {'undef': ['LOWER', 'CONJ', 'XCONJ']},
'_C': {'def': ['CONJ'], 'undef': ['XCONJ']},
'_V': {'def': ['XCONJ'], 'undef': ['CONJ']},
'_D': {'def': ['CONJ', 'XCONJ']},
'_L': {'def': ['LOWER']},
'_LN': {'def': ['LEFT'], 'undef': ['TRANSA']},
# Handle HEMV and HEMVREV better
'_V': {'def': ['HEMV', 'HEMVREV'], 'undef': ['LOWER']},
'_M': {'def': ['HEMV', 'HEMVREV', 'LOWER']},
'_n': {'undef': ['TRANS', 'CONJ', 'XCONJ']},
'_t': {'def': ['TRANS'], 'undef': ['CONJ', 'XCONJ']},
'_r': {'def': ['CONJ'], 'undef': ['TRANS', 'XCONJ']},
'_c': {'def': ['TRANS', 'CONJ'], 'undef': ['XCONJ']},
'_o': {'def': ['XCONJ'], 'undef': ['TRANS', 'CONJ']},
'_u': {'def': ['TRANS', 'XCONJ'], 'undef': ['CONJ']},
'_s': {'def': ['CONJ', 'XCONJ'], 'undef': ['TRANS']},
'_d': {'def': ['TRANS', 'CONJ', 'XCONJ']},
'_n': {'undef': ['TRANS', 'TRANSA', 'CONJ', 'XCONJ']},
'_t': {'def': ['TRANS', 'TRANSA'], 'undef': ['CONJ', 'XCONJ']},
'_r': {'def': ['CONJ'], 'undef': ['TRANS', 'TRANSA', 'XCONJ']},
'_c': {'def': ['TRANS', 'TRANSA', 'CONJ'], 'undef': ['XCONJ']},
'_o': {'def': ['XCONJ'], 'undef': ['TRANS', 'TRANSA', 'CONJ']},
'_u': {'def': ['TRANS', 'TRANSA', 'XCONJ'], 'undef': ['CONJ']},
'_s': {'def': ['CONJ', 'XCONJ'], 'undef': ['TRANS', 'TRANSA']},
'_d': {'def': ['TRANS', 'TRANSA', 'CONJ', 'XCONJ']},
}
symb_defs = {
@ -297,6 +305,7 @@ symb_defs = {
_inc = [include_directories('.')]
# subdir('lapack-netlib')
subdir('interface')
subdir('driver/level2')
subdir('kernel')
_openblas = static_library('openblas',