| @@ -0,0 +1,71 @@ | |||||
| testl1_src = ['c_?blat1.f', 'c_?blas1.c'] | |||||
| testl2_src = ['c_?blat2.f', 'c_?blas2.c', 'c_?2chke.c', 'auxiliary.c', 'constant.c', 'c_xerbla.c'] | |||||
| testl3_src = ['c_?blat3.f', 'c_?blas3.c', 'c_?3chke.c', 'auxiliary.c', 'constant.c', 'c_xerbla.c'] | |||||
| testl3_3m_src = ['c_?blat3_3m.f', 'c_?blas3_3m.c', 'c_?3chke_3m.c', 'auxiliary.c', 'constant.c', 'c_xerbla.c'] | |||||
| _test_input_array = { | |||||
| 'l1': { | |||||
| 'base': 'x?blat1', | |||||
| 'has_dat': false, | |||||
| 'types': ['s', 'd', 'c', 'z'], | |||||
| 'sources': testl1_src, | |||||
| }, | |||||
| 'l2': { | |||||
| 'base': 'x?cblat2', | |||||
| 'has_dat': true, | |||||
| 'types': ['s', 'd', 'c', 'z'], | |||||
| 'sources': testl2_src, | |||||
| 'input_file': '?in2', | |||||
| }, | |||||
| 'l3': { | |||||
| 'base': 'x?cblat3', | |||||
| 'has_dat': true, | |||||
| 'types': ['s', 'd', 'c', 'z'], | |||||
| 'sources': testl3_src, | |||||
| 'input_file': '?in3', | |||||
| }, | |||||
| 'l3_3m': { | |||||
| 'base': 'x?cblat3_3m', | |||||
| 'has_dat': true, | |||||
| 'types': ['c', 'z'], | |||||
| 'sources': testl3_3m_src, | |||||
| 'input_file': '?in3_3m', | |||||
| }, | |||||
| } | |||||
| _test_runner = executable('test_runner', sources: ['test_runner.c'], install: false) | |||||
| foreach lvl : ['l1', 'l2', 'l3', 'l3_3m'] | |||||
| details = _test_input_array[lvl] | |||||
| foreach type : details['types'] | |||||
| op_name = details['base'].replace('?', type) | |||||
| mapped_sources = [] | |||||
| foreach source : details['sources'] | |||||
| mapped_sources += source.replace('?', type) | |||||
| endforeach | |||||
| executable( | |||||
| op_name, | |||||
| sources: mapped_sources + [config_h], | |||||
| link_with: [_openblas], | |||||
| dependencies: [dependency('threads')], | |||||
| include_directories: include_directories('..'), | |||||
| c_args: ['-I..', '-I.', '-DADD_', '-DCBLAS'], | |||||
| ) | |||||
| _args = [f'./@op_name@'] | |||||
| if details.has_key('input_file') | |||||
| _args += [meson.current_source_dir() / details['input_file'].replace('?', type)] | |||||
| endif | |||||
| test( | |||||
| op_name, | |||||
| _test_runner, | |||||
| args: _args, | |||||
| workdir: meson.current_build_dir(), | |||||
| ) # TODO: add OPENBLAS_NUM_THREADS=2 | |||||
| endforeach | |||||
| endforeach | |||||
| @@ -0,0 +1,25 @@ | |||||
| #include <stdio.h> | |||||
| #include <stdlib.h> | |||||
| #include <string.h> | |||||
| int main(int argc, char *argv[]) { | |||||
| if (argc != 2 && argc != 3) { | |||||
| fprintf(stderr, "Usage: %s <executable> <optional_input_file>\n", argv[0]); | |||||
| return EXIT_FAILURE; | |||||
| } | |||||
| char command[1024]; | |||||
| if (argc == 2) { | |||||
| snprintf(command, sizeof(command), "%s", argv[1]); | |||||
| } else { | |||||
| snprintf(command, sizeof(command), "%s < %s", argv[1], argv[2]); | |||||
| } | |||||
| int result = system(command); | |||||
| if (result != 0) { | |||||
| fprintf(stderr, "Error: Command '%s' failed with return code %d.\n", command, result); | |||||
| return EXIT_FAILURE; | |||||
| } | |||||
| return EXIT_SUCCESS; | |||||
| } | |||||
| @@ -385,18 +385,24 @@ base_kops = [ | |||||
| }, | }, | ||||
| { 'base': '?geru', | { 'base': '?geru', | ||||
| 'modes': { | 'modes': { | ||||
| 'c': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}}, | |||||
| 'z': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}}, | |||||
| 'c': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c', 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UCONJ']}}}, | |||||
| 'z': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c', 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UCONJ']}}}, | |||||
| # 'x': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}}, | # 'x': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}}, | ||||
| }, | }, | ||||
| }, | }, | ||||
| { 'base': '?gerc', | { 'base': '?gerc', | ||||
| 'modes': { | 'modes': { | ||||
| 'c': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}}, | |||||
| 'z': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}}, | |||||
| 'c': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c', 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DCONJ']}}}, | |||||
| 'z': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c', 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DCONJ']}}}, | |||||
| # 'x': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}}, | # 'x': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c'}}}, | ||||
| }, | }, | ||||
| }, | }, | ||||
| { 'base': '?gerv', | |||||
| 'modes': { | |||||
| 'c': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c', 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UCONJ', '-DXCONJ']}}}, | |||||
| 'z': {'exts': {'_k': {'dir': 'generic', 'kernel': 'zger.c', 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UCONJ', '-DXCONJ']}}}, | |||||
| }, | |||||
| }, | |||||
| { 'base': '?hemv', | { 'base': '?hemv', | ||||
| 'modes': { | 'modes': { | ||||
| 'c': { | 'c': { | ||||
| @@ -515,5 +515,6 @@ pkg.generate(_openblas, | |||||
| if build_testing | if build_testing | ||||
| subdir('test') | subdir('test') | ||||
| subdir('ctest') | |||||
| subdir('utest') | subdir('utest') | ||||
| endif | endif | ||||