OpenCL* for CPU
Ask questions and share information on Intel® SDK for OpenCL™ Applications and OpenCL™ implementations for Intel® CPU
Announcements
This forum covers OpenCL* for CPU only. OpenCL* for GPU questions can be asked in the GPU Compute Software forum. Intel® FPGA SDK for OpenCL™ questions can be ask in the FPGA Intel® High Level Design forum.
1663 Discussions

New SDK install fails with symbol lookup error when building kernel code

Robert_S_5
Beginner
165 Views

Hello,

I'm quite new to OpenCL and parallel computing in general.

I have just installed the SDK on a Linux SLES11 computer with a Core i7-4770 Processor. 

Files installed were intel_sdk_for_ocl_applications_2014_4.6.0.92_x64.tgz and opencl_runtime_14.2_x64_4.5.0.8.tgz.

I've tried running two tests, first the sample code for general matrix multiply, and second a simple program to perform an addition and print out the processors capabilities, like MAX_COMPUTEEE_UNITS, MAX_WORK_GROUP_SIZE, etc.  They both fail upon trying to compile the kernel, with the following message:

symbol lookup error: /opt/intel/opencl-1.2-4.5.0.8/lib64/libclang_compiler.so: undefined symbol: _ZN5Intel6OpenCL5Utils6Logger11GetInstanceEv, version Base

I guess it's looking for a library it can't find?  Which one, and how to fix this problem.

Thanks, Bob

0 Kudos
4 Replies
Andy_R_
Beginner
165 Views

We are having the exact same problem since upgrading our Intel OpenCL runtime to the latest version in opencl_runtime_14.2_x64_4.5.0.8.tgz.

Our application now fails with the error:

trade_pricer: symbol lookup error: /apps/tools/toolset10/Linux.3.0.101-0.35-default.x86_64/opencl-1.2-4.5.0.8/lib64/libclang_compiler.so: undefined symbol: _ZN5Intel6OpenCL5Utils6Logger11GetInstanceEv, version Base

where previously it was working fine.

To me this looks there is something wrong with the Intel opencl-1.2-4.5.0.8 runtime build. The missing symbol is part ot the Intel::OpenCL namespace,i.e.

> echo _ZN5Intel6OpenCL5Utils6Logger11GetInstanceEv | c++filt
Intel::OpenCL::Utils::Logger::GetInstance()

It appears that readelf confirms the symbol is referenced in the packaged libclang_compiler.so shared library:

> readelf -Ws libclang_compiler.so | grep GetInstance | grep Logger
   361: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND _ZN5Intel6OpenCL5Utils6Logger11GetInstanceEv@Base (14)

And also that it is defined in the packaged libcl_logger.so shared library:

> readelf -Ws libcl_logger.so | grep GetInstance
   270: 0000000000008530    11 FUNC    GLOBAL DEFAULT   13 _ZN5Intel6OpenCL5Utils6Logger11GetInstanceEv@@Base

So there is something very strange going on here.

Can someone at Intel please investigate whether there is a problem with the libraries pakcaged in opencl_runtime_14.2_x64_4.5.0.8.tgz?

Thanks!

Andy

 

Yuri_K_Intel
Employee
165 Views
Hi Robert and Andy, Sorry for this issue. I didn't try to reproduce it yet, but here is one possible workaround. Are you targeting CPU only for OpenCL development? Did you install OpenCL runtime (from opencl_runtime_14.2_x64_4.5.0.8.tgz) by default (with all options)? If answers to both questions are yes, then could you please reinstall OpenCL runtime, but for CPU only (i.e. don't install runtime for Intel® Xeon Phi(TM) coprocessor device). On 'Step 4 of 6 | Options > Pre-install Summary' choose '2. Customize installation', then '3. Change components to install', '3' to deselect 'OpenCL™ runtime for Intel® Xeon Phi(TM) coprocessor device', 'Enter', 'Enter'. Thanks, Yuri
Andy_R_
Beginner
165 Views

Thanks for your prompt suggestion, Yuri.

This has corrected the issue for me and I can now get our application to run with the OpenCL runtime package installed in the manner you have specified.

Regards,

Andy

Robert_S_5
Beginner
165 Views

Thanks Yuri, indeed this takes care of the problem.

Bob

Reply