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?
--
You received this message because you are subscribed to the Google Groups "PyFR
Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send an email to [email protected].
Visit this group at https://groups.google.com/group/pyfrmailinglist.
For more options, visit https://groups.google.com/d/optout.