All,
I was attempting to run a case using PyFR—it’s been awhile and a few things have change—but it appears that PyFR doesn’t like my clBLAS library any more under OS X. The pyopencl module seems to have compiled fine when I installed it, and the path to the libclBLAS.dylib file is in my DYLD_LIBRARY_PATH environment. Unfortunately, PyFR seems to be having some issue locating it. Is there another environment variable, or parameter that can be set somewhere to explicitly let PyFR know where it can find this library in my environment? I’ve included the stack trace below:
(venv) [zdavis@Minerva naca0012]$ pyfr run -b opencl -p naca_0012_2d.pyfrm naca_0012_2d.ini
Traceback (most recent call last):
File "/Users/zdavis/Applications/PyFR/pyfr/ctypesutil.py", line 22, in load_library
return ctypes.CDLL(lname)
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ctypes/__init__.py", line 347, in __init__
self._handle = _dlopen(self._name, mode)
OSError: dlopen(libclBLAS.dylib, 6): image not found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/zdavis/Applications/PyFR/pyfr/scripts/pyfr", line 252, in <module>
main()
File "/Users/zdavis/Applications/PyFR/pyfr/scripts/pyfr", line 109, in main
args.process(args)
File "/Users/zdavis/Applications/PyFR/pyfr/scripts/pyfr", line 230, in process_run
args, NativeReader(args.mesh), None, Inifile.load(args.cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/scripts/pyfr", line 208, in _process_common
backend = get_backend(args.backend, cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/backends/__init__.py", line 12, in get_backend
return subclass_where(BaseBackend, name=name.lower())(cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/backends/opencl/base.py", line 79, in __init__
self._providers = [k(self) for k in kprovs]
File "/Users/zdavis/Applications/PyFR/pyfr/backends/opencl/base.py", line 79, in <listcomp>
self._providers = [k(self) for k in kprovs]
File "/Users/zdavis/Applications/PyFR/pyfr/backends/opencl/clblas.py", line 65, in __init__
self._wrappers = ClBLASWrappers()
File "/Users/zdavis/Applications/PyFR/pyfr/backends/opencl/clblas.py", line 14, in __init__
lib = load_library('clBLAS')
File "/Users/zdavis/Applications/PyFR/pyfr/ctypesutil.py", line 31, in load_library
raise OSError('Unable to load {0}'.format(name))
OSError: Unable to load clBLAS
I’m also getting an invalid character when running using the openmp backend. Again the stack trace is provided below:
(venv) [zdavis@Minerva naca0012]$ mpirun -np 4 pyfr run -b openmp -p naca_0012_2d.pyfrm naca_0012_2d.ini
Traceback (most recent call last):
File "/Users/zdavis/Applications/PyFR/pyfr/scripts/pyfr", line 252, in <module>
main()
File "/Users/zdavis/Applications/PyFR/pyfr/scripts/pyfr", line 109, in main
args.process(args)
File "/Users/zdavis/Applications/PyFR/pyfr/scripts/pyfr", line 230, in process_run
args, NativeReader(args.mesh), None, Inifile.load(args.cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/scripts/pyfr", line 214, in _process_common
solver = get_solver(backend, rallocs, mesh, soln, cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/solvers/__init__.py", line 14, in get_solver
return get_integrator(backend, systemcls, rallocs, mesh, initsoln, cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/integrators/__init__.py", line 43, in get_integrator
return integrator(backend, systemcls, rallocs, mesh, initsoln, cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/integrators/std/controllers.py", line 12, in __init__
super().__init__(*args, **kwargs)
File "/Users/zdavis/Applications/PyFR/pyfr/integrators/std/steppers.py", line 8, in __init__
super().__init__(*args, **kwargs)
File "/Users/zdavis/Applications/PyFR/pyfr/integrators/std/base.py", line 12, in __init__
super().__init__(*args, **kwargs)
File "/Users/zdavis/Applications/PyFR/pyfr/integrators/base.py", line 57, in __init__
self.system = systemcls(backend, rallocs, mesh, initsoln, nreg, cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/solvers/base/system.py", line 54, in __init__
bc_inters = self._load_bc_inters(rallocs, mesh, elemap)
File "/Users/zdavis/Applications/PyFR/pyfr/solvers/base/system.py", line 151, in _load_bc_inters
self.cfg)
File "/Users/zdavis/Applications/PyFR/pyfr/solvers/navstokes/inters.py", line 226, in __init__
self._tpl_c['cpTt'], = self._eval_opts(['cpTt'])
File "/Users/zdavis/Applications/PyFR/pyfr/solvers/baseadvec/inters.py", line 98, in _eval_opts
return [npeval(cfg.getexpr(sect, k), cc) for k in opts]
File "/Users/zdavis/Applications/PyFR/pyfr/solvers/baseadvec/inters.py", line 98, in <listcomp>
return [npeval(cfg.getexpr(sect, k), cc) for k in opts]
File "/Users/zdavis/Applications/PyFR/pyfr/inifile.py", line 79, in getexpr
raise ValueError('Invalid characters in expression')
ValueError: Invalid characters in expression
Is this an issue with my *.ini file? I’ve attached it for reference… Thanks!
Best Regards,
Zach Davis
enc
naca_0012_2d.ini (2.53 KB)