Skip to content
Snippets Groups Projects
feedsRun.fslStartup 1015 B
Newer Older
#!/usr/bin/env python

import os
import shlex
import tempfile

import subprocess as sp

def run(cmd, **kwargs):

    result = sp.run(shlex.split(cmd), check=True, text=True,
                  stdout=sp.PIPE, stderr=sp.STDOUT, **kwargs)

    print(f'Called {cmd}')
    print(f'  exit code: {result.returncode}')
    print(f'  stdout:    {result.stdout.strip()}')

    return result.stdout.strip()


def main():

    blacklist = ['OMP', 'GOTO', 'BLAS', 'FSL']
    env       = os.environ.copy()
    for varname in list(env.keys()):
        if any(b in varname for b in blacklist):
            env.pop(varname)

    env['OMP_NUM_THREADS']  = '8'
    env['BLAS_NUM_THREADS'] = '8'

    run('make')

    # Default behaviour should be: OMP multi-threaded, BLAS single threaded.
    assert run('./test_fslStartup', env=env) == '8 1 8'

    # With FSL_SKIP_GLOBAL, BLAS should be multi-threaded
    env['FSL_SKIP_GLOBAL'] = '1'
    assert run('./test_fslStartup', env=env) == '8 8 8'


if __name__ == '__main__':
    main()