thesps / conifer

Fast inference of Boosted Decision Trees in FPGAs
Apache License 2.0
41 stars 22 forks source link

Exception: Couldn't find Xilinx ap_ headers #56

Open brightneedle opened 8 months ago

brightneedle commented 8 months ago

I am running an Ubuntu virtual machine (Ubuntu Desktop 18.04 LTS and have installed Vivado 2019.2. I have created a python environment and have installed conifer using pip install conifer.

However, when running the example scripts I run into the following error:

Exception: Couldn't find Xilinx ap_ headers. Source the Vivado/Vitis HLS toolchain, or set XILINX_AP_INCLUDE environment variable.

What is the fix here?

thesps commented 8 months ago

With Vivado installed you should setup the tools like (change for your Vivado install path): source /path/to/Xilinx/Vivado/2019.2/settings.sh

You can check that one of the required environment variables is set like: echo $XILINX_VIVADO

Then during the logging of the example you should see a message like: DEBUG:conifer.utils.misc:Including ap_ headers from XILINX_VIVADO: -I/path/to/Xilinx/Vivado/2019.2/include

Andre-coder commented 1 month ago

Greetings I used the same command line 'source /path/to/Xilinx/Vivado/2019.2/settings.sh' but still getting the same error. Any help i can get from this

522 if ap_include is None: 523 os.chdir(currdir) --> 524 raise Exception("Couldn't find Xilinx ap headers. Source the Vivado/Vitis HLS toolchain, or set XILINX_AP_INCLUDE environment variable.") 525 cmd = f"g++ -O3 -shared -std=c++14 -fPIC $({_py_executable()} -m pybind11 --includes) {ap_include} {_gcc_opts()} bridge.cpp firmware/BDT.cpp firmware/{cfg.project_name}.cpp -o coniferbridge{self._stamp}.so" 526 logger.debug(f'Compiling with command {cmd}')

Exception: Couldn't find Xilinx ap_ headers. Source the Vivado/Vitis HLS toolchain, or set XILINX_AP_INCLUDE environment variable.

thesps commented 3 weeks ago

@Andre-coder

Could you run the following and report back what is says?

import sys
import logging
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
import conifer
conifer.utils._ap_include()

Can you check that the path that your sourced the settings from is correct?

Andre-coder commented 2 weeks ago

Its running fine now, the conifer can find the Xilinx on my env. Thank You!

Andre-coder commented 2 weeks ago

But theres an error that also encounter during the execution on i will share it

529 if ret_val != 0: 530 raise Exception(f'Failed to compile project {cfg.project_name}') 531 except:

Exception: Failed to compile project my_prj

During handling of the above exception, another exception occurred:

thesps commented 2 weeks ago

Can you please share more of the error message?

Andre-coder commented 2 weeks ago

sh: line 1: g++: command not found

Exception Traceback (most recent call last) File ~/.local/lib/python3.12/site-packages/conifer/backends/xilinxhls/writer.py:530, in XilinxHLSModel.compile(self) 529 if ret_val != 0: --> 530 raise Exception(f'Failed to compile project {cfg.project_name}') 531 except:

Exception: Failed to compile project proj

During handling of the above exception, another exception occurred:

Exception Traceback (most recent call last) Cell In[42], line 4 1 #cnf = conifer.model(clf, conifer.converters.sklearn, conifer.backends.vivadohls, cfg) 2 #cnf.compile() 3 cnf = conifer.converters.convert_from_sklearn(clf,cfg) ----> 4 cnf.compile()

File ~/.local/lib/python3.12/site-packages/conifer/backends/xilinxhls/writer.py:533, in XilinxHLSModel.compile(self) 531 except: 532 os.chdir(curr_dir) --> 533 raise Exception(f'Failed to compile project {cfg.project_name}') 535 try: 536 logger.debug(f'Importing coniferbridge{self._stamp} from coniferbridge{self._stamp}.so')

Exception: Failed to compile project proj