Well working as in has enough symbols for the import, currently is failing NumPy tests, including dot matrix multiplications...pull/4832/head
| @@ -0,0 +1,86 @@ | |||
| # Define the operations and their sources | |||
| others_ops = [ | |||
| { 'base': 'memory', 'source': 'memory.c' }, | |||
| { 'base': 'xerbla', 'source': 'xerbla.c' }, | |||
| { 'base': 'openblas_set_num_threads', 'source': 'openblas_set_num_threads.c' }, | |||
| { 'base': 'openblas_get_num_threads', 'source': 'openblas_get_num_threads.c', 'addl': [ | |||
| '-O2', '-DSMALL_MATRIX_OPT', '-DMAX_PARALLEL_NUMBER=1', '-DMAX_STACK_ALLOC=2048', '-Wall', '-DF_OTHERS_GFORT', | |||
| '-fPIC', '-DSMP_SERVER', '-DNO_WARMUP', '-DMAX_CPU_NUMBER=12', '-DVERSION="0.3.26.dev"', '-msse3', '-mssse3', | |||
| '-msse4.1', '-mavx', '-mavx2' | |||
| ]}, | |||
| { 'base': 'openblas_get_num_procs', 'source': 'openblas_get_num_procs.c' }, | |||
| { 'base': 'openblas_get_parallel', 'source': 'openblas_get_parallel.c' }, | |||
| { 'base': 'openblas_error_handle', 'source': 'openblas_error_handle.c' }, | |||
| { 'base': 'openblas_env', 'source': 'openblas_env.c' }, | |||
| { 'base': 'blas_server', 'source': 'blas_server.c' }, | |||
| { 'base': 'divtable', 'source': 'divtable.c', 'addl': ['-UDOUBLE'] }, | |||
| { 'base': 'blasL1thread', 'source': 'blas_l1_thread.c' }, | |||
| { 'base': 'parameter', 'source': 'parameter.c' } | |||
| ] | |||
| # Initialize configurations list | |||
| others_confs = [] | |||
| # Iterate through each operation | |||
| foreach op : others_ops | |||
| base = op['base'] | |||
| source = op['source'] | |||
| addl = op.get('addl', []) | |||
| # Generate the symbol flags | |||
| ckop_args = [] | |||
| if symb_defs.has_key(base) | |||
| symb_base = symb_defs[base] | |||
| if symb_base.has_key('def') | |||
| foreach d : symb_base['def'] | |||
| ckop_args += ['-D' + d] | |||
| endforeach | |||
| endif | |||
| if symb_base.has_key('undef') | |||
| foreach u : symb_base['undef'] | |||
| ckop_args += ['-U' + u] | |||
| endforeach | |||
| endif | |||
| endif | |||
| # Default compilation arguments | |||
| c_args = _cargs + ckop_args + addl | |||
| # Generate the symbol name | |||
| sym_name = base | |||
| sym_underscored = '@0@_'.format(sym_name) | |||
| # Add standard flags for naming conventions | |||
| c_args += [ | |||
| '-DASMNAME=@0@'.format(sym_name), | |||
| '-DASMFNAME=@0@_'.format(sym_name), | |||
| '-DNAME=@0@_'.format(sym_name), | |||
| '-DCNAME=@0@'.format(sym_name), | |||
| '-DCHAR_NAME="@0@_"'.format(sym_name), | |||
| '-DCHAR_CNAME="@0@"'.format(sym_name) | |||
| ] | |||
| # Append the current configuration | |||
| current_def = { | |||
| 'c_args': c_args, | |||
| 'name': sym_name, | |||
| 'src': [source] | |||
| } | |||
| others_confs += [current_def] | |||
| endforeach | |||
| # Create the static libraries from the configurations | |||
| others_libs = [] | |||
| foreach conf : others_confs | |||
| message(conf['name']) | |||
| message(conf) | |||
| others_libs += [static_library( | |||
| conf['name'], | |||
| conf['src'], | |||
| include_directories: _inc, | |||
| c_args: conf['c_args'] | |||
| )] | |||
| endforeach | |||
| # Create the final interface library | |||
| _others = static_library('_interface', link_whole: others_libs) | |||
| @@ -72,6 +72,18 @@ base_kops = [ | |||
| 'x': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'zdot.S'}}}, | |||
| }, | |||
| }, | |||
| { 'base': '?dotc', | |||
| 'modes': { | |||
| 'c': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'cdot.c'}}}, | |||
| 'z': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'zdot.c'}}}, | |||
| }, | |||
| }, | |||
| { 'base': '?dotu', | |||
| 'modes': { | |||
| 'c': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'cdot.c'}}}, | |||
| 'z': {'exts': {'_k': {'dir': 'x86_64', 'kernel': 'zdot.c'}}}, | |||
| }, | |||
| }, | |||
| # TODO(rg): Add dsdotkernel conditionals | |||
| # xDOTU xDOTC xxDOT aren't present | |||
| { 'base': '?nrm2', | |||
| @@ -501,6 +513,8 @@ base_kops = [ | |||
| 'modes': { | |||
| 's': {'exts': { | |||
| '_beta': {'dir': 'generic', 'kernel': 'gemm_beta.c'}, | |||
| '_small_matrix_permit': {'dir': 'generic', | |||
| 'kernel': 'gemm_small_matrix_permit.c'}, | |||
| # TODO(rg): the _NUM prefixes are arch dependent | |||
| '_incopy': {'dir': 'generic', 'kernel': 'gemm_ncopy_8.c'}, | |||
| '_itcopy': {'dir': 'generic', 'kernel': 'gemm_tcopy_8.c'}, | |||
| @@ -512,6 +526,8 @@ base_kops = [ | |||
| }}, | |||
| 'd': {'exts': { | |||
| '_beta': {'dir': 'generic', 'kernel': 'gemm_beta.c'}, | |||
| '_small_matrix_permit': {'dir': 'generic', | |||
| 'kernel': 'gemm_small_matrix_permit.c'}, | |||
| '_incopy': {'dir': 'generic', 'kernel': 'gemm_ncopy_8.c'}, | |||
| '_itcopy': {'dir': 'generic', 'kernel': 'gemm_tcopy_8.c'}, | |||
| '_oncopy': {'dir': 'generic', 'kernel': 'gemm_ncopy_2.c'}, | |||
| @@ -519,6 +535,8 @@ base_kops = [ | |||
| }}, | |||
| 'c': {'exts': { | |||
| '_beta': {'dir': 'generic', 'kernel': 'zgemm_beta.c'}, | |||
| '_small_matrix_permit': {'dir': 'generic', | |||
| 'kernel': 'zgemm_small_matrix_permit.c'}, | |||
| '_incopy': {'dir': 'generic', 'kernel': 'zgemm_ncopy_8.c'}, | |||
| '_itcopy': {'dir': 'generic', 'kernel': 'zgemm_tcopy_8.c'}, | |||
| '_oncopy': {'dir': 'generic', 'kernel': 'zgemm_ncopy_2.c'}, | |||
| @@ -526,6 +544,8 @@ base_kops = [ | |||
| }}, | |||
| 'z': {'exts': { | |||
| '_beta': {'dir': 'generic', 'kernel': 'zgemm_beta.c'}, | |||
| '_small_matrix_permit': {'dir': 'generic', | |||
| 'kernel': 'zgemm_small_matrix_permit.c'}, | |||
| '_incopy': {'dir': 'generic', 'kernel': 'zgemm_ncopy_8.c'}, | |||
| '_itcopy': {'dir': 'generic', 'kernel': 'zgemm_tcopy_8.c'}, | |||
| '_oncopy': {'dir': 'generic', 'kernel': 'zgemm_ncopy_2.c'}, | |||
| @@ -1003,8 +1023,8 @@ endforeach | |||
| _kern_libs = [] | |||
| foreach conf: kernel_confs | |||
| message(conf['name']) | |||
| message(conf) | |||
| # message(conf['name']) | |||
| # message(conf) | |||
| _kern_libs += static_library( | |||
| conf['name'], | |||
| conf['src'], | |||
| @@ -26,7 +26,7 @@ fc_id = fc.get_id() | |||
| # Common args | |||
| _args = [] | |||
| _cargs = [] | |||
| _cargs = ['-DMAX_PARALLEL_NUMBER=1'] | |||
| _fargs = [] | |||
| # System configuration | |||
| @@ -442,9 +442,9 @@ _inc = [include_directories('.')] | |||
| subdir('interface') | |||
| subdir('driver/level2') | |||
| subdir('driver/level3') | |||
| # subdir('driver/others') | |||
| subdir('driver/others') | |||
| subdir('kernel') | |||
| _openblas = static_library('openblas', | |||
| link_whole: [ _interface, _l2_driver, _l3_driver, _kern ], | |||
| install: true) | |||
| link_whole: [ _interface, _l2_driver, _l3_driver, _others, _kern ], | |||
| install: true) | |||