arrayfire / arrayfire-python

Python bindings for ArrayFire: A general purpose GPU library.
https://arrayfire.com
BSD 3-Clause "New" or "Revised" License
417 stars 65 forks source link

Linking to Anaconda environment in Ubuntu #223

Open mariobecerra opened 4 years ago

mariobecerra commented 4 years ago

Hi.

Is there a guide on how to direct the Arrayfire installation to an Anaconda environment? I saw a couple of issues here, but they were based on Windows and Mac OS. I'm working with Ubuntu 19.10.

If I try to import Arrayfire in Python I get the following:

>>> import arrayfire
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/mario/anaconda3/lib/python3.7/site-packages/arrayfire/__init__.py", line 56, in <module>
    from .library    import *
  File "/home/mario/anaconda3/lib/python3.7/site-packages/arrayfire/library.py", line 643, in <module>
    backend = _clibrary()
  File "/home/mario/anaconda3/lib/python3.7/site-packages/arrayfire/library.py", line 619, in __init__
    raise RuntimeError("Could not load any ArrayFire libraries.\n" + more_info_str)
RuntimeError: Could not load any ArrayFire libraries.
Please look at https://github.com/arrayfire/arrayfire-python/wiki for more information.

You can see that it's trying to look for Arrayfire in the anaconda3 folder, and it is obviously failing because my Arrayfire installation is in /opt/arrayfire/.

Any pointers to how I can fix this?

umar456 commented 4 years ago

Python cannot fine the ArrayFire shared library. You can try to define the AF_PATH environment variable or add the ArrayFire library path in LD_LIBRARY_PATH.

mariobecerra commented 4 years ago

I tried the first option. I added export AF_PATH="/opt/arrayfire/" in my bashrc file and sourced it. However, if I try to import the arrayfire package in Python I get the same error. I'm not sure exactly how to tell Python to use that variable. Any ideas?

Sorry about this, I'm really bad at doing all this environment variables and shared libraries stuff.

umar456 commented 4 years ago

Try setting LD_LIBRARY_PATH to the location of the libafcpu.so. so in your case export LD_LIBRARY_PATH=/opt/arrayfire/lib64:$LD_LIBRARY_PATH