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: Wed, 10 Jul 2019 04:04:04 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2

Optimizing flags can be set per submodule. I just checked the build with VERBOSE=1, and the -msse2 flag is only set for DTV (and VOLK) files.

Ron

On 7/10/19 02:05, Müller, Marcus (CEL) wrote:
Hi Ron,

wasn't aware of that.
I *think* we shouldn't be doing that. Optimizing flags can't be set per
submodule, but only for the whole build. Would you agree we need to
"centralize" that in some way?

Best regards,
Marcus

On Tue, 2019-07-09 at 07:36 -0700, Ron Economos wrote:
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
_______________________________________________
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]