diff --git a/driver/others/meson.build b/driver/others/meson.build index 00c28ce9e..667b2facb 100644 --- a/driver/others/meson.build +++ b/driver/others/meson.build @@ -44,7 +44,7 @@ foreach op : others_ops endif # Default compilation arguments - c_args = _cargs + ckop_args + addl + c_args = _cargs + ckop_args + addl + '-DMAX_PARALLEL_NUMBER=1' # Generate the symbol name sym_name = base diff --git a/kernel/meson.build b/kernel/meson.build index c812c8e84..07ee85c4b 100644 --- a/kernel/meson.build +++ b/kernel/meson.build @@ -307,7 +307,66 @@ base_kops = [ 'q': {'exts': {'': {'dir': 'generic', 'kernel': 'cabs.c'}}}, }, }, - # TODO(rg): There's CGEMM3MKERNEL, ZGEMM3MKERNEL in kernel.generic + { 'base': '?gemm3m', + 'modes': { + 'c': {'exts': { + '_kernel': {'dir': 'x86_64', 'kernel': 'zgemm3m_kernel_4x8_nehalem.S', + 'addl': ['-DICOPY', '-UUSE_ALPHA']}, + '_oncopyb': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_4.c', + 'addl': ['-DUSE_ALPHA']}, + '_otcopyb': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_4.c', + 'addl': ['-DUSE_ALPHA']}, + '_itcopyb': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA']}, + '_itcopyr': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA', '-DREAL_ONLY']}, + '_itcopyi': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA', '-DIMAGE_ONLY']}, + '_incopyb': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA']}, + '_incopyr': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA', '-DREAL_ONLY']}, + '_oncopyr': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_4.c', + 'addl': ['-DUSE_ALPHA', '-DREAL_ONLY']}, + '_otcopyr': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_4.c', + 'addl': ['-DUSE_ALPHA', '-DREAL_ONLY']}, + '_incopyi': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA', '-DIMAGE_ONLY']}, + '_oncopyi': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_4.c', + 'addl': ['-DUSE_ALPHA', '-DIMAGE_ONLY']}, + '_otcopyi': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_4.c', + 'addl': ['-DUSE_ALPHA', '-DREAL_ONLY']}, + }}, + 'z': {'exts': { + '_kernel': {'dir': 'x86_64', 'kernel': 'zgemm3m_kernel_4x8_nehalem.S', + 'addl': ['-DICOPY', '-UUSE_ALPHA']}, + '_oncopyb': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_4.c', + 'addl': ['-DUSE_ALPHA']}, + '_otcopyb': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_4.c', + 'addl': ['-DUSE_ALPHA']}, + '_itcopyb': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA']}, + '_itcopyr': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA', '-DREAL_ONLY']}, + '_itcopyi': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA', '-DIMAGE_ONLY']}, + '_incopyb': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA']}, + '_incopyr': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA', '-DREAL_ONLY']}, + '_oncopyr': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_4.c', + 'addl': ['-DUSE_ALPHA', '-DREAL_ONLY']}, + '_otcopyr': {'dir': 'generic', 'kernel': 'zgemm3m_tcopy_4.c', + 'addl': ['-DUSE_ALPHA', '-DREAL_ONLY']}, + '_incopyi': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_8.c', + 'addl': ['-DICOPY', '-UUSE_ALPHA', '-DIMAGE_ONLY']}, + '_oncopyi': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_4.c', + 'addl': ['-DUSE_ALPHA', '-DIMAGE_ONLY']}, + '_otcopyi': {'dir': 'generic', 'kernel': 'zgemm3m_ncopy_4.c', + 'addl': ['-DUSE_ALPHA', '-DREAL_ONLY']}, + }}, + }, + }, { 'base': '?ger', 'modes': { 's': {'exts': {'_k': {'dir': 'generic', 'kernel': 'ger.c'}}}, @@ -499,14 +558,26 @@ base_kops = [ 'addl': ['-DRT', '-UUPPER', '-DCONJ']}, }, }, - }, - }, - { 'base': '?gemm3m_kernel', - 'modes': { - 'c': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm3m_kernel_8x4_sse3.S', - 'addl': ['-DNN']}}}, - 'z': {'exts': {'': {'dir': 'x86_64', 'kernel': 'zgemm3m_kernel_8x4_sse3.S', - 'addl': ['-DNN']}}}, + 'z': { + 'exts': { + '_LN': {'dir': 'generic', 'kernel': 'trsm_kernel_LN.c', + 'addl': ['-DLN', '-DUPPER', '-UCONJ']}, + '_LT': {'dir': 'generic', 'kernel': 'trsm_kernel_LT.c', + 'addl': ['-DLT', '-UUPPER', '-UCONJ']}, + '_LR': {'dir': 'generic', 'kernel': 'trsm_kernel_LN.c', + 'addl': ['-DLN', '-DUPPER', '-DCONJ']}, + '_LC': {'dir': 'generic', 'kernel': 'trsm_kernel_LT.c', + 'addl': ['-DLT', '-UUPPER', '-DCONJ']}, + '_RN': {'dir': 'generic', 'kernel': 'trsm_kernel_RN.c', + 'addl': ['-DRN', '-DUPPER', '-UCONJ']}, + '_RT': {'dir': 'generic', 'kernel': 'trsm_kernel_RT.c', + 'addl': ['-DRT', '-UUPPER', '-UCONJ']}, + '_RR': {'dir': 'generic', 'kernel': 'trsm_kernel_RN.c', + 'addl': ['-DRN', '-DUPPER', '-DCONJ']}, + '_RC': {'dir': 'generic', 'kernel': 'trsm_kernel_RT.c', + 'addl': ['-DRT', '-UUPPER', '-DCONJ']}, + }, + }, }, }, { 'base': '?gemm', @@ -629,6 +700,146 @@ base_kops = [ '_oltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, }}, + 'd': {'exts': { + # TODO(rg): These actually use $(SGEMM_UNROLL_M) to choose the size + '_iunucopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + '_iunncopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + '_ilnucopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + '_ilnncopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + '_iutucopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + '_iutncopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + '_iltucopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + '_iltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + '_ounucopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + '_ounncopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + '_olnucopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + '_olnncopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + '_outucopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + '_outncopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + '_oltucopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + '_oltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + }}, + 'q': {'exts': { + # TODO(rg): These actually use $(SGEMM_UNROLL_M) to choose the size + '_iunucopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + '_iunncopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + '_ilnucopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + '_ilnncopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + '_iutucopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + '_iutncopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + '_iltucopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + '_iltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + '_ounucopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + '_ounncopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + '_olnucopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + '_olnncopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + '_outucopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + '_outncopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + '_oltucopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + '_oltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + }}, + 'c': {'exts': { + # TODO(rg): These actually use $(SGEMM_UNROLL_M) to choose the size + '_iunucopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + '_iunncopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + '_ilnucopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + '_ilnncopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + '_iutucopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + '_iutncopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + '_iltucopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + '_iltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + '_ounucopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + '_ounncopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + '_olnucopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + '_olnncopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + '_outucopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + '_outncopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + '_oltucopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + '_oltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + }}, + 'z': {'exts': { + # TODO(rg): These actually use $(SGEMM_UNROLL_M) to choose the size + '_iunucopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + '_iunncopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + '_ilnucopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + '_ilnncopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + '_iutucopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + '_iutncopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_8.c', + 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + '_iltucopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + '_iltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_8.c', + 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + '_ounucopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + '_ounncopy': {'dir': 'generic', 'kernel': 'trsm_uncopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + '_olnucopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + '_olnncopy': {'dir': 'generic', 'kernel': 'trsm_lncopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + '_outucopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + '_outncopy': {'dir': 'generic', 'kernel': 'trsm_utcopy_4.c', + 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + '_oltucopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + '_oltncopy': {'dir': 'generic', 'kernel': 'trsm_ltcopy_4.c', + 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + }}, }, }, { 'base': '?symm',