error of missing GOMP on centos 6 x86_64 with anaconda python 3

147 views
Skip to first unread message

CatDog

unread,
Jan 11, 2017, 7:40:38 PM1/11/17
to PyFR Mailing List
Hello, everyone

I am testing the installation of pyfr1.5.0 on a single-core VPS on bandwagonhost with centos 6. Because the softwares' versions of the OS are very old, the python 3 is installed using anaconda, and the gcc 4.9.2 is installed using devtoolset-3 of RHSCL. All dependency and version number is satisified. But the test case gives me an error:

[root@localhost euler_vortex_2d]# pyfr run -b openmp euler_vortex_2d.pyfrm euler_vortex_2d.ini

error msg:

Traceback (most recent call last):
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/util.py", line 32, in __call__
KeyError: (<function OpenMPKernelProvider._build_kernel at 0x7f165ac5fb70>, b'\x80\x03X\x05\x00\x00\x00tfluxq\x00X^\x1e\x00\x00\n\n#include <omp.h>\n#include <stdlib.h>\n#include <tgmath.h>\n\n#define PYFR_ALIGN_BYTES 64\n#define SOA_SZ 8\n\n#define min(a, b) ((a) < (b) ? (a) : (b))\n#define max(a, b) ((a) > (b) ? (a) : (b))\n\n// Typedefs\ntypedef double fpdtype_t;\n\n// OpenMP static loop scheduling functions\n\nstatic inline int\ngcd(int a, int b)\n{\n    return (a == 0) ? b : gcd(b % a, a);\n}\n\nstatic inline void\nloop_sched_1d(int n, int align, int *b, int *e)\n{\n    int tid = omp_get_thread_num();\n    int nth = omp_get_num_threads();\n\n    // Round up n to be a multiple of nth\n    int rn = n + nth - 1 - (n - 1) % nth;\n\n    // Nominal tile size\n    int sz = rn / nth;\n\n    // Handle alignment\n    sz += align - 1 - (sz - 1) % align;\n\n    // Assign the starting and ending index\n    *b = sz * tid;\n    *e = min(*b + sz, n);\n\n    // Clamp\n    if (*b >= n)\n        *b = *e = 0;\n}\n\nstatic inline void\nloop_sched_2d(int nrow, int ncol, int colalign,\n              int *rowb, int *rowe, int *colb, int *cole)\n{\n    int tid = omp_get_thread_num();\n    int nth = omp_get_num_threads();\n\n    // Distribute threads\n    int nrowth = gcd(nrow, nth);\n    int ncolth = nth / nrowth;\n\n    // Row and column indices for our thread\n    int rowix = tid / ncolth;\n    int colix = tid % ncolth;\n\n    // Round up ncol to be a multiple of ncolth\n    int rncol = ncol + ncolth - 1 - (ncol - 1) % ncolth;\n\n    // Nominal tile size\n    int ntilerow = nrow / nrowth;\n    int ntilecol = rncol / ncolth;\n\n    // Handle column alignment\n    ntilecol += colalign - 1 - (ntilecol - 1) % colalign;\n\n    // Assign the starting and ending row to each thread\n    *rowb = ntilerow * rowix;\n    *rowe = *rowb + ntilerow;\n\n    // Assign the starting and ending column to each thread\n    *colb = ntilecol * colix;\n    *cole = min(*colb + ntilecol, ncol);\n\n    // Clamp\n    if (*colb >= ncol)\n        *colb = *cole = 0;\n}\n\n\n\n\n\n\n\n\n\nvoid tflux(int _ny, int _nx, fpdtype_t* __restrict__ f_v, int ldf, const fpdtype_t* __restrict__ smats_v, int ldsmats, const fpdtype_t* __restrict__ u_v, int ldu)\n               {\n                   #define X_IDX (_xi + _xj)\n                   #define X_IDX_AOSOA(v, nv)                       ((_xi/SOA_SZ*(nv) + (v))*SOA_SZ + _xj)\n                   int align = PYFR_ALIGN_BYTES / sizeof(fpdtype_t);\n                   #pragma omp parallel\n                   {\n                       \n                    int rb, re, cb, ce;\n                    loop_sched_2d(_ny, _nx, align, &rb, &re, &cb, &ce);\n                    int nci = ((ce - cb) / SOA_SZ)*SOA_SZ;\n                    for (int _y = rb; _y < re; _y++)\n                    {\n                        for (int _xi = cb; _xi < cb + nci; _xi += SOA_SZ)\n                        {\n                            #pragma omp simd\n                            for (int _xj = 0; _xj < SOA_SZ; _xj++)\n                            {\n                                \n    // Compute the flux\n    fpdtype_t ftemp[2][4];\n    fpdtype_t p, v[2];\n    {\n\n    fpdtype_t invrho_ = 1.0/u_v[ldu*_y + X_IDX_AOSOA(0, 4)], E_ = u_v[ldu*_y + X_IDX_AOSOA(3, 4)];\n\n    // Compute the velocities\n    fpdtype_t rhov_[2];\n    rhov_[0] = u_v[ldu*_y + X_IDX_AOSOA(1, 4)];\n    v[0] = invrho_*rhov_[0];\n    rhov_[1] = u_v[ldu*_y + X_IDX_AOSOA(2, 4)];\n    v[1] = invrho_*rhov_[1];\n\n    // Compute the pressure\n    p = 0.3999999999999999*(E_ - 0.5*invrho_*((rhov_[0])*(rhov_[0]) + (rhov_[1])*(rhov_[1])));\n\n    // Density and energy fluxes\n    ftemp[0][0] = rhov_[0];\n    ftemp[0][3] = (E_ + p)*v[0];\n    ftemp[1][0] = rhov_[1];\n    ftemp[1][3] = (E_ + p)*v[1];\n\n    // Momentum fluxes\n    ftemp[0][1] = rhov_[0]*v[0] + p;\n    ftemp[0][2] = rhov_[0]*v[1];\n    ftemp[1][1] = rhov_[1]*v[0];\n    ftemp[1][2] = rhov_[1]*v[1] + p;\n\n};\n\n    // Transform the fluxes\n    f_v[(0*_ny + _y)*ldf + X_IDX_AOSOA(0, 4)] = smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][0] + smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][0];\n    f_v[(0*_ny + _y)*ldf + X_IDX_AOSOA(1, 4)] = smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][1] + smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][1];\n    f_v[(0*_ny + _y)*ldf + X_IDX_AOSOA(2, 4)] = smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][2] + smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][2];\n    f_v[(0*_ny + _y)*ldf + X_IDX_AOSOA(3, 4)] = smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][3] + smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][3];\n    f_v[(1*_ny + _y)*ldf + X_IDX_AOSOA(0, 4)] = smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][0] + smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][0];\n    f_v[(1*_ny + _y)*ldf + X_IDX_AOSOA(1, 4)] = smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][1] + smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][1];\n    f_v[(1*_ny + _y)*ldf + X_IDX_AOSOA(2, 4)] = smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][2] + smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][2];\n    f_v[(1*_ny + _y)*ldf + X_IDX_AOSOA(3, 4)] = smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][3] + smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][3];\n\n                            }\n                        }\n                        for (int _xi = cb + nci, _xj = 0; _xj < ce - _xi;\n                             _xj++)\n                        {\n                            \n    // Compute the flux\n    fpdtype_t ftemp[2][4];\n    fpdtype_t p, v[2];\n    {\n\n    fpdtype_t invrho_ = 1.0/u_v[ldu*_y + X_IDX_AOSOA(0, 4)], E_ = u_v[ldu*_y + X_IDX_AOSOA(3, 4)];\n\n    // Compute the velocities\n    fpdtype_t rhov_[2];\n    rhov_[0] = u_v[ldu*_y + X_IDX_AOSOA(1, 4)];\n    v[0] = invrho_*rhov_[0];\n    rhov_[1] = u_v[ldu*_y + X_IDX_AOSOA(2, 4)];\n    v[1] = invrho_*rhov_[1];\n\n    // Compute the pressure\n    p = 0.3999999999999999*(E_ - 0.5*invrho_*((rhov_[0])*(rhov_[0]) + (rhov_[1])*(rhov_[1])));\n\n    // Density and energy fluxes\n    ftemp[0][0] = rhov_[0];\n    ftemp[0][3] = (E_ + p)*v[0];\n    ftemp[1][0] = rhov_[1];\n    ftemp[1][3] = (E_ + p)*v[1];\n\n    // Momentum fluxes\n    ftemp[0][1] = rhov_[0]*v[0] + p;\n    ftemp[0][2] = rhov_[0]*v[1];\n    ftemp[1][1] = rhov_[1]*v[0];\n    ftemp[1][2] = rhov_[1]*v[1] + p;\n\n};\n\n    // Transform the fluxes\n    f_v[(0*_ny + _y)*ldf + X_IDX_AOSOA(0, 4)] = smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][0] + smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][0];\n    f_v[(0*_ny + _y)*ldf + X_IDX_AOSOA(1, 4)] = smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][1] + smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][1];\n    f_v[(0*_ny + _y)*ldf + X_IDX_AOSOA(2, 4)] = smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][2] + smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][2];\n    f_v[(0*_ny + _y)*ldf + X_IDX_AOSOA(3, 4)] = smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][3] + smats_v[(0*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][3];\n    f_v[(1*_ny + _y)*ldf + X_IDX_AOSOA(0, 4)] = smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][0] + smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][0];\n    f_v[(1*_ny + _y)*ldf + X_IDX_AOSOA(1, 4)] = smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][1] + smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][1];\n    f_v[(1*_ny + _y)*ldf + X_IDX_AOSOA(2, 4)] = smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][2] + smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][2];\n    f_v[(1*_ny + _y)*ldf + X_IDX_AOSOA(3, 4)] = smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(0, 2)]*ftemp[0][3] + smats_v[(1*_ny + _y)*ldsmats + X_IDX_AOSOA(1, 2)]*ftemp[1][3];\n\n                        }\n                    }\n                   }\n                   #undef X_IDX\n                   #undef X_IDX_AOSOA\n               }\n\nq\x01]q\x02(cnumpy\nint32\nq\x03h\x03cnumpy\nint64\nq\x04h\x03h\x04h\x03h\x04h\x03e\x87q\x05.', b'\x80\x03}q\x00.')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/op/anaconda3/bin/pyfr", line 11, in <module>
    load_entry_point('pyfr==1.5.0', 'console_scripts', 'pyfr')()
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/__main__.py", line 110, in main
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/__main__.py", line 235, in process_run
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/__main__.py", line 216, in _process_common
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/solvers/__init__.py", line 14, in get_solver
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/integrators/__init__.py", line 43, in get_integrator
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/integrators/std/controllers.py", line 12, in __init__
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/integrators/std/steppers.py", line 8, in __init__
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/integrators/std/base.py", line 12, in __init__
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/integrators/base.py", line 59, in __init__
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/solvers/base/system.py", line 65, in __init__
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/solvers/base/system.py", line 174, in _gen_kernels
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/solvers/euler/elements.py", line 74, in <lambda>
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/backends/base/backend.py", line 166, in kernel
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/backends/base/kernels.py", line 161, in kernel_meth
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/util.py", line 34, in __call__
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/backends/openmp/provider.py", line 13, in _build_kernel
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/backends/openmp/compiler.py", line 61, in __init__
  File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/backends/openmp/compiler.py", line 33, in __init__
  File "/op/anaconda3/lib/python3.5/ctypes/__init__.py", line 347, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /op/anaconda3/bin/../lib/libgomp.so.1: version `GOMP_4.0' not found (required by /tmp/pyfr-0-i5qtiki9/libtmp.so)

It seems a conflict of GOMP libs. how to resolve this problem? I tried to use follow method to diagnose it

[root@localhost couette_flow_2d]# ldd  /tmp/pyfr-0-c6hurolh/libtmp.so
ldd: /tmp/pyfr-0-c6hurolh/libtmp.so: No such file or directory

But the temporary file is missing.

Is there anyway to solve this problem? Is cflags in [backend-openmp] helpful to this kind of problem?

CatDog

unread,
Jan 11, 2017, 7:46:36 PM1/11/17
to PyFR Mailing List
Here is something about the libgomp.so


[root@localhost lib]# ldd --verbose libgomp.so
        linux
-vdso.so.1 =>  (0x00007ffcb13a0000)
        librt
.so.1 => /lib64/librt.so.1 (0x00007f6b261cb000)
        libpthread
.so.0 => /lib64/libpthread.so.0 (0x00007f6b25fad000)
        libc
.so.6 => /lib64/libc.so.6 (0x00007f6b25c19000)
       
/lib64/ld-linux-x86-64.so.2 (0x00007f6b265e7000)


       
Version information:
       
./libgomp.so:
                librt
.so.1 (GLIBC_2.2.5) => /lib64/librt.so.1
                libpthread
.so.0 (GLIBC_2.3.4) => /lib64/libpthread.so.0
                libpthread
.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
                libc
.so.6 (GLIBC_2.3) => /lib64/libc.so.6
                libc
.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
       
/lib64/librt.so.1:
                libpthread
.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
                libpthread
.so.0 (GLIBC_PRIVATE) => /lib64/libpthread.so.0
                libc
.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
                libc
.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
                libc
.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
       
/lib64/libpthread.so.0:
                ld
-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
                ld
-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
                ld
-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
                libc
.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
                libc
.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
                libc
.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
       
/lib64/libc.so.6:
                ld
-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
                ld
-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2

CatDog

unread,
Jan 11, 2017, 7:52:22 PM1/11/17
to PyFR Mailing List
Additional information about glibc in the OS:

[root@localhost lib]# ldd --version
ldd
(GNU libc) 2.12
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty
; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.


On Thursday, January 12, 2017 at 8:40:38 AM UTC+8, CatDog wrote:

CatDog

unread,
Jan 11, 2017, 8:25:36 PM1/11/17
to PyFR Mailing List
I just solved this problem by adding the following line in the configuration file:

[backend-openmp]
cblas=/opt/OpenBLAS/lib/libopenblas.so
cflags
=-Wl,-rpath /usr/lib64

after I found there are so many libgomps in my system:

[root@localhost euler_vortex_2d]# find / -name libgomp.so.1
/usr/lib64/libgomp.so.1
/op/anaconda3/pkgs/libgcc-4.8.5-2/lib/libgomp.so.1
/op/anaconda3/lib/libgomp.so.1




On Thursday, January 12, 2017 at 8:40:38 AM UTC+8, CatDog wrote:

Freddie Witherden

unread,
Jan 11, 2017, 9:58:06 PM1/11/17
to pyfrmai...@googlegroups.com
On 11/01/2017 17:25, CatDog wrote:
> I just solved this problem by adding the following line in the
> configuration file:
>
> |
> [backend-openmp]
> cblas=/opt/OpenBLAS/lib/libopenblas.so
> *cflags**=-Wl,-rpath /usr/**lib64*

For future reference if you export the environmental variable:

$ export PYFR_DEBUG_OMP_KEEP_LIBS=true

then PyFR will keep the temporary directories around in order to permit
further debugging.

Regards, Freddie.

signature.asc
Reply all
Reply to author
Forward
0 new messages