Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Score-P help breaks Python binding workflow #165

Open
Thyre opened this issue Aug 6, 2024 · 0 comments
Open

Score-P help breaks Python binding workflow #165

Thyre opened this issue Aug 6, 2024 · 0 comments

Comments

@Thyre
Copy link

Thyre commented Aug 6, 2024

Trying to print a help, for example to know which options are available, causes the Python bindings to abort. In a test installation with Score-P v8.4 and Python 3.10 in Ubuntu 22.04 LTS, I got the following error message when trying this workflow:

$ python3 -m scorep --help
scorep: Did not find a script to run
$ python3 -m scorep --help test.py
/tmp/scorep.xuh2d3d7/scorep_init.c:2:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘:’ token
    2 | Usage:
      |      ^
/tmp/scorep.xuh2d3d7/scorep_init.c:113:24: error: stray ‘@’ in program
  113 | Report bugs to <[email protected]>
      |                        ^
Traceback (most recent call last):
  File "/usr/lib/python3.10/distutils/unixccompiler.py", line 117, in _compile
    self.spawn(compiler_so + cc_args + [src, '-o', obj] +
  File "/usr/lib/python3.10/distutils/ccompiler.py", line 910, in spawn
    spawn(cmd, dry_run=self.dry_run)
  File "/usr/lib/python3.10/distutils/spawn.py", line 91, in spawn
    raise DistutilsExecError(
distutils.errors.DistutilsExecError: command '/usr/bin/cc' failed with exit code 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/jreuter/Env/test_Env/lib/python3.10/site-packages/scorep/__main__.py", line 142, in <module>
    scorep_main()
  File "/home/jreuter/Env/test_Env/lib/python3.10/site-packages/scorep/__main__.py", line 77, in scorep_main
    scorep.subsystem.init_environment(scorep_config, keep_files, verbose)
  File "/home/jreuter/Env/test_Env/lib/python3.10/site-packages/scorep/subsystem.py", line 129, in init_environment
    subsystem_lib_name, temp_dir = generate(scorep_config, keep_files)
  File "/home/jreuter/Env/test_Env/lib/python3.10/site-packages/scorep/subsystem.py", line 94, in generate
    compiled_subsystem = cc.compile(
  File "/usr/lib/python3.10/distutils/ccompiler.py", line 574, in compile
    self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
  File "/usr/lib/python3.10/distutils/unixccompiler.py", line 120, in _compile
    raise CompileError(msg)
distutils.errors.CompileError: command '/usr/bin/cc' failed with exit code 1

It looks like the help option is directly passed to scorep-config. This is fine. However, it should then not continue trying to instrument the file. In theory, the command should also work without passing a Python file to instrument.


Environment:

scorep-info config-summary:

Click to open
Configure command:
  ../configure                  '--prefix=/opt/apps/software/Compilers/MPI/GCCcore/GCCcore/OpenMPI/5.0.5/Score-P/8.4/' \
                                '--with-nocross-compiler-suite=gcc' \
                                '--enable-shared' \
                                '--enable-debug' \
                                '--enable-default=ompt' \
                                '--without-shmem' \
                                '--with-libcupti=/opt/apps/software/Core/Libraries/CUDA/12.5.1/extras/CUPTI/'

Environment modules loaded:
  module load                   GCCcore/GCCcore \
                                OpenMPI/5.0.5 \
                                CubeLib/4.8.2 \
                                CubeWriter/4.8.2 \
                                OTF2/3.1-rc3 \
                                OPARI2/2.0.8 \
                                libbfd/2.42 \
                                PAPI/7.1 \
                                CUDA/12.5.1

Configuration summary:
  Score-P 8.4:
    Platform:                   linux (auto detected)
    Cross compiling:            no (auto detected)
    Machine name:               Linux
    otf2 support:               yes, using external via /opt/apps/software/Core/SWAT/OTF2/3.1-rc3/bin/otf2-config
    opari2 support:             yes, using external via /opt/apps/software/Core/SWAT/OPARI2/2.0.8/bin/opari2-config
    cubew support:              yes, using external via /opt/apps/software/Core/SWAT/CubeWriter/4.8.2/bin/cubew-config
    cubelib support:            yes, using external via /opt/apps/software/Core/SWAT/CubeLib/4.8.2/bin/cubelib-config
    SHMEM support:              no, explicitly disabled via --without-shmem

    Score-P (backend):
      C99 compiler:             /usr/bin/gcc (gnu 11.4.0)
      C++11 compiler:           /usr/bin/g++ -std=c++11 (gnu 11.4.0)
      Fortran compiler:         /usr/bin/gfortran (gnu)
      Fortran 77 compiler:      /usr/bin/gfortran
      Link mode:                static=yes, shared=yes
      Pthread support:          yes, using gcc -pthread -lpthread
      Compiler instrumentation: yes
        C:                      gcc_plugin
        C++:                    gcc_plugin
        Fortran:                gcc_plugin
      Compiler constructor:     yes, using attribute syntax with arguments
      GCC atomic builtins:      yes
      TLS support:              yes, using __thread and the initial-exec model
      addr2line support:        yes
        libbfd found:           yes, has cplus_demangle
        dl_iterate_phdr:        yes
        rtld-audit:             yes, via --audit instrumentation or LD_AUDIT environment variable
      PAPI support:             yes
      metric perf support:      yes
      Unwinding support:        yes
      Sampling support:         yes, using -D_GNU_SOURCE, sa_sigaction
      getrusage support:        yes
      RUSAGE_THREAD support:    yes, using -D_GNU_SOURCE
      dlfcn support:            yes, using -ldl
      OpenCL support:           yes
        libOpenCL found:        yes, using -lOpenCL
      I/O Recording features:
        POSIX I/O support:      yes
        POSIX asynchronous I/O support: \
                                yes
      OTF2 features:
        SIONlib support:        no
      CUDA support:             yes
        libcudart found:        yes, using -lcudart
        libcuda found:          yes, using -lcuda
        libcupti found:         yes, using -I/opt/apps/software/Core/Libraries/CUDA/12.5.1/extras/CUPTI//include -L/opt/apps/software/Core/Libraries/CUDA/12.5.1/extras/CUPTI//lib64 \
                                -R/opt/apps/software/Core/Libraries/CUDA/12.5.1/extras/CUPTI//lib64 -lcupti
        libnvidia-ml found:     yes, using -lnvidia-ml
        CUDA version:           12050
        nvcc works:             yes, using nvcc -ccbin g++
      HIP support:              no
        libamdhip64 found:      no
        libroctracer64 found:   no
        librocm_smi64 found:    no
      OpenACC support:          yes, with compiler flag
      Kokkos support:           yes
      Mount point extraction:   yes
      Lustre stripe info support: \
                                no, missing lustre/lustreapi.h header
      OpenMP support:           yes
        C support:              yes, recognizing -fopenmp --openmp
        C++ support:            yes, recognizing -fopenmp --openmp
        Fortran support:        yes, recognizing -fopenmp --openmp
        OpenMP pomp_tpd:        yes
        OpenMP ancestry:        yes
      OMPT support:             no
        OMPT header:            no
      PDT support:              no
      Timer support:            yes, providing gettimeofday, clock_gettime(CLOCK_MONOTONIC_RAW), tsc (X86_64)
        Timer LDFLAGS:          -lm
      Memory tracking support:  yes
      Compiler wrappers:        scorep-gcc \
                                scorep-g++ \
                                scorep-gfortran \
                                scorep-mpicc \
                                scorep-mpicxx \
                                scorep-mpif77 \
                                scorep-mpif90 \
                                scorep-nvcc
      User library wrappers support: \
                                no

    Score-P (GCC plug-in):
      C++11 compiler:           /usr/bin/g++ -std=c++11 (gnu 11.4.0)
      GCC atomic builtins:      yes
      TLS support:              yes, using __thread and the initial-exec model
      GCC plug-in support:      yes, using the C++ compiler and -I/usr/lib/gcc/x86_64-linux-gnu/11/plugin/include

    Score-P (libwrap):
      GCC atomic builtins:      yes
      TLS support:              yes, using __thread and the initial-exec model
      Library wrapper support:  no, llvm-config not found

    Score-P (MPI backend):
      MPI C99 compiler:         /opt/apps/software/MPI/OpenMPI/5.0.5/GCCcore/GCCcore/bin/mpicc (gnu 11.4.0)
      MPI C++11 compiler:       /opt/apps/software/MPI/OpenMPI/5.0.5/GCCcore/GCCcore/bin/mpicxx -std=c++11 (gnu 11.4.0)
      MPI Fortran compiler:     /opt/apps/software/MPI/OpenMPI/5.0.5/GCCcore/GCCcore/bin/mpif90 (gnu)
      MPI Fortran 77 compiler:  /opt/apps/software/MPI/OpenMPI/5.0.5/GCCcore/GCCcore/bin/mpif77
      Library used for MPI:
      CUDA support:             yes
        nvcc works:             yes, using nvcc -ccbin mpicxx
      PDT MPI instrumentation:  yes, if PDT available

    Score-P (score):
      C compiler:               /usr/bin/gcc -std=gnu99 (gnu 11.4.0)
      C++ compiler:             /usr/bin/g++ -std=c++11 (gnu 11.4.0)
      cube c++ library support: yes, using -I/opt/apps/software/Core/SWAT/CubeLib/4.8.2/include/cubelib -L/opt/apps/software/Core/SWAT/CubeLib/4.8.2/lib \
                                -Wl,-rpath -Wl,/opt/apps/software/Core/SWAT/CubeLib/4.8.2/lib -lcube4 -lz -lpthread
      GCC atomic builtins:      yes
      TLS support:              yes, using __thread and the initial-exec model
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant