| @@ -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', | |||
| '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'}}}, | |||
| }, | |||
| }, | |||
| { 'base': '?gerc', | |||
| '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'}}}, | |||
| }, | |||
| }, | |||
| { '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', | |||
| 'modes': { | |||
| 'c': { | |||
| @@ -515,5 +515,6 @@ pkg.generate(_openblas, | |||
| if build_testing | |||
| subdir('test') | |||
| subdir('ctest') | |||
| subdir('utest') | |||
| endif | |||