discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] JIT integration and undefined symbol


From: Ron Economos
Subject: Re: [Discuss-gnuradio] JIT integration and undefined symbol
Date: Tue, 9 Jul 2019 07:36:47 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2

This is just a guess, but the DVB-T Viterbi decoder uses SSE2 intrinsics for performance. In gnuradio/gr-dtv/lib/CMakeLists.txt, the flag "-msse2" is added to CMAKE_CXX_FLAGS.

Ron

On 7/9/19 05:39, Corentin Basler wrote:

Hello everyone,

I'm actually doing my bachelor thesis about Just In Time compiler and I want to integrate this technology in GNURadio. I've already created OOT module with integrated JIT functionality. I'm now trying to add an in-tree module. I'm trying to do that by copying the dvbt viterbi decoder block. The JIT compiler that I use is : ClangJIT . For testing, I use the example dvbt_rx_8k. I’m working from the maint-3.7 branch. I added my new block and replace the original viterbi decoder in the example. Unfortunately, when running the application, I have the following error :

 

Traceback (most recent call last):

File "/home/pacco/TB/gnuRadio_perf/dvbt_rx_demo_8k_jit.py", line 21, in <module>

from gnuradio import dtv

File "/opt/gnuradioClangJit/lib/python2.7/dist-packages/gnuradio/dtv/__init__.py", line 34, in <module>

from dtv_swig import *

File "/opt/gnuradioClangJit/lib/python2.7/dist-packages/gnuradio/dtv/dtv_swig.py", line 17, in <module>

_dtv_swig = swig_import_helper()

File "/opt/gnuradioClangJit/lib/python2.7/dist-packages/gnuradio/dtv/dtv_swig.py", line 14, in swig_import_helper

return importlib.import_module(mname)

File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module

__import__(name)

ImportError: /opt/gnuradioClangJit/lib/libgnuradio-dtv-3.7.13.5.so.0.0.0: undefined symbol: _ZN2gr3dtv29dvbt_viterbi_decoder_jit_impl28dvbt_viterbi_get_output_sse2IXdtdefpT12d_ntracebackEEEhPDv2_xS4_Ph

 

I’ve already search in the mailing list for solution, but all the solution that I’ve found are for OOT module.

When running c++filt, I get the following result :

 

unsigned char gr::dtv::dvbt_viterbi_decoder_jit_impl::dvbt_viterbi_get_output_sse2<(*this).d_ntraceback>(long long __vector(2)*, long long __vector(2)*, unsigned char*)

 

Which is the result I wanted to see.

I use the following cmake command when building from source :

 

cmake -DCMAKE_C_COMPILER=/opt/release/llvm/bin/clang -DCMAKE_CXX_COMPILER=/opt/release/llvm/bin/clang++ -DPYTHON_EXECUTABLE=/usr/bin/python2 -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so -DCMAKE_INSTALL_PREFIX=/opt/gnuradioClangJit -DJIT_ENABLE=ON -DENABLE_GR_UHD=OFF ../

CMAKE_C_COMPILER and CMAKE_CXX_COMPILER points to the llvm version with clangJIT (see link above). JIT_ENABLE enable the flags for the JIT compiler.

 

Every change that I’ve made are on the following git (and commit ): https://github.com/Pacco1217/gnuradio/commit/14d656e5aecc998bb1cda9259de8a639dabf6d04 

 

About the computer :

Kernel : 4.18.0-25-generic

OS : Ubuntu 18.10

Does anyone has already faced the same difficulties or having a possible solution to this problem ? 

 

Thanks in advance for your answers,

Basler Corentin


_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

reply via email to

[Prev in Thread] Current Thread [Next in Thread]