Hello,
compiler somehow recognizes all hardcoded floats as integers. Starting from netbeans jocl template (http://plugins.netbeans.org/plugin/39980/netbeans-opencl-pack), example: *** kernel void fill(global float* a, const int size, const int value) { int index = get_global_id(0); if (index >= size) { return; } a[index] = 0.5f; } *** From java: System.out.println(value + "\t"); I get all zeros. If I put a[index]=1/(float)2 it works. Also it works normally if I do not use jocl but C++ and g++ directly. Any suggestions? It is driving me crazy. |
Administrator
|
Hi
This OpenCL pack has remained unmaintained for years. Please upgrade to the latest version of JOCL and tell us whether you reproduce your bug. Best regards.
Julien Gouesse | Personal blog | Website
|
Hello,
thank you for quick reply. Meanwhile I already upgraded library (to latest 2.1.3), but nothing has changed, still geting result rounded to nearest integer. |
Administrator
|
That is very strange. Are you looking at any error output from the kernel compilation, to make sure the float literal isn't just failing to compile and doing nothing? Not sure why 1/(float)2 would compile and not 0.5f, though.
|
Administrator
|
In reply to this post by Miha
Sorry for the silly question but are you sure you use the latest version of JOCL and not the one bundled with the plugin?
Julien Gouesse | Personal blog | Website
|
Yes I am using latest JOCL (2.1.3) and I can reproduce the bug with clean new project (netbeans 7.4 java project). CL code compiles OK, build log is empty.
Following is complete test code: // KernelTemplate.cl kernel void fill(global float* a, const int size, const int value) { int index = get_global_id(0); if (index >= size) { return; } a[index] = 0.5f; } // OCLTest.java /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javaapplicationocltest2; import com.jogamp.opencl.CLBuffer; import com.jogamp.opencl.CLCommandQueue; import com.jogamp.opencl.CLContext; import com.jogamp.opencl.CLKernel; import com.jogamp.opencl.CLProgram; import java.nio.FloatBuffer; /** * * @author mfur */ public class JavaApplicationOCLTest2 { /** * @param args the command line arguments */ public static void main(String[] args) { CLContext context = CLContext.create(); try { System.out.println(context); try { CLProgram program = context.createProgram(JavaApplicationOCLTest2.class.getResourceAsStream("KernelTemplate.cl")); program.build(); System.out.println(program.getBuildLog()); CLCommandQueue queue = context.getMaxFlopsDevice().createCommandQueue(); int size = 16; CLBuffer<FloatBuffer> buffer = context.createFloatBuffer(size); CLKernel initPopulation = program.createCLKernel("fill"); initPopulation.setArgs(buffer, size, 42); //queue.putWork(work); queue.put1DRangeKernel(initPopulation, 0, 16, 16); queue.putReadBuffer(buffer, true); FloatBuffer ib = buffer.getBuffer(); while (ib.hasRemaining()) { float value = ib.get(); System.out.println(value + "\t"); } } catch (Exception e) { } } finally { context.release(); } } } complete output: run: CLContext [id: 140324974956752, platform: AMD Accelerated Parallel Processing, profile: FULL_PROFILE, devices: 2] CLDevice [id: 140324975204608 name: Cypress type: GPU profile: FULL_PROFILE] build log: <empty> CLDevice [id: 140324978498320 name: AMD Phenom(tm) II X2 555 Processor type: CPU profile: FULL_PROFILE] build log: <empty> 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 BUILD SUCCESSFUL (total time: 1 second) |
I tried same code with latest library in Eclipse in new project (just in case some weird environment variables are set). Same output, 0.5f recognized as 0.
Float literals working as expected for you? I guess such bug couldn't be overlooked for years.. |
In reply to this post by Miha
I tested your code in combination with the latest JOCL 2.1.3 and got a different result:
Tested on a Linux Ubuntu 12.04 32bit system: NVIDIA Driver Version: 319.32 git clone http://github.com/xranby/jocl-test cd jocl-test sh fetch-jogamp-build.sh sh compile.sh sh run.sh output: CLContext [id: -1992935368, platform: NVIDIA CUDA, profile: FULL_PROFILE, devices: 1] CLDevice [id: -1992905040 name: GeForce GT 610 type: GPU profile: FULL_PROFILE] build log: <empty> 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 |
Thank you for testing Xerxes. I ran your scripts but I still get all zeros output.
|
Administrator
|
Is your OpenCL driver at the latest version? This could be a bug in the runtime compiler that's inside the driver.
|
In reply to this post by Miha
Tried it on my Mac
CLContext [id: 140586648725024, platform: Apple, profile: FULL_PROFILE, devices: 2] CLDevice [id: 16915200 name: ATI Radeon HD 6770M type: GPU profile: FULL_PROFILE] build log: <empty> CLDevice [id: 4294967295 name: Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz type: CPU profile: FULL_PROFILE] build log: <empty> CLBuffer [id: 140586686463440 buffer: java.nio.DirectFloatBufferU[pos=0 lim=16 cap=16]] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 |
In reply to this post by Wade Walker
@Wade Yes, my driver is up to date (Fglrx 13.10) and I can compile and call same kernel from C++ with expected results.
(This works OK: g++ -o hello_world -I$AMDAPPSDKROOT/include -L$AMDAPPSDKROOT/lib main.cpp -lOpenCL) Does JOCL depend only on driver or does it uses AMD APP SDK? If it does, how can I set where it looks for it? |
Additional info:
System: Linux 64 bit (Ubuntu 13.04 3.11.0-13-generic x86_64 ) Java: tried openjdk6 and openjdk7 64bit Device: AMD Phenom(tm) II X2 555 and Radeon HD 5830 (neither works) Driver: Catalyst 13.10 - created new user and started with semi-clean environment - tried runing from bash, Netbeans and Eclipse (not that it matters..) Didn't notice any other problems with OpenCL. Any ideas? Output every time: test@pcmb:/tmp/jocl-test$ ./compile.sh ; ./run.sh No protocol specified CLContext [id: 140713466377840, platform: AMD Accelerated Parallel Processing, profile: FULL_PROFILE, devices: 1] CLDevice [id: 140713466382032 name: AMD Phenom(tm) II X2 555 Processor type: CPU profile: FULL_PROFILE] build log: <empty> 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
Administrator
|
On 12/20/2013 05:01 PM, Miha [via jogamp] wrote:
> Additional info: > > System: Linux 64 bit (Ubuntu 13.04 3.11.0-13-generic x86_64 ) > Java: tried openjdk6 and openjdk7 64bit > Device: AMD Phenom(tm) II X2 555 and Radeon HD 5830 (neither works) > Driver: Catalyst 13.10 > - created new user and started with semi-clean environment > - tried runing from bash, Netbeans and Eclipse (not that it matters..) > > Didn't notice any other problems with OpenCL. > > Any ideas? > due to the negative results from others (Xerxes, Wade, .. ?). May also be a corner case of a JOCL bug w/ that specific driver. If float data CPU <-> GPU/CL-Kernel works properly on that device and/or the others it simply seems to be a driver bug. The float data transfer seems to work fine w/ you setup, since casting the value works for you. Another idea .. maybe it's related to the different OpenCL version ? Just brainstorming .. ~Sven signature.asc (911 bytes) Download Attachment |
In reply to this post by Miha
JOCL only look for libopencl inside the system library paths, there is no code to specifically look inside the $AMDAPPSDKROOT/lib path. A correctly configured system should have added $AMDAPPSDKROOT/lib to the LD_LIBRARY_PATH that is used by all applications on the system.
This is the list of system librarys JOCL use to search for an OpenCL implementation: http://jogamp.org/git/?p=jocl.git;a=blob;f=src/com/jogamp/opencl/llb/impl/CLDynamicLibraryBundleInfo.java;h=36bc26f9bf40e754176757461e625be36034381d;hb=51bb8b2259e8eae9f62ec7202e8b7eb934a44c85#l96 Do g++ -o hello_world -I$AMDAPPSDKROOT/include main.cpp -lOpenCL work? (removed -L$AMDAPPSDKROOT/lib ) It may help to pass -Djogamp.debug.NativeLibrary.Lookup at runtime to let gluegen-rt tell which native library it found the OpenCL implementation inside on your system. |
Administrator
|
In reply to this post by Miha
Another thing to check (in addition to the things mentioned by Xerxes and Sven) is the libraries on the library loader path. If you do a "ldconfig -p | grep libOpenCL" that will show you where the loader is getting libOpenCL from. There could be some wrong/old one on your loader path somewhere. Specifically, I've noticed that when you upgrade Ubuntu to a new graphics driver from the hardware vendor, sometimes old entries are left in the files inside /etc/ld.so.conf.d, so the library loader will be finding the libOpenCL from the old driver location (often a subdirectory inside /usr/lib) instead of the new one. You'll need to confirm where your new driver installation puts libOpenCL.so, and make sure the library loader is seeing that specific one. There could also be incorrect filesystem links in /usr/lib or elsewhere on the loader path that point to older versions of libOpenCL.so.
|
In reply to this post by Xerxes Rånby
I checked paths and libraries and everything is in order (no old libraries).
Compiling (g++ -o hello_world -I$AMDAPPSDKROOT/include main.cpp -lOpenCL) and running C++ example with system OpenCL library (same one as used by JOCL) returns expected result. I additionaly tried latest OpenCL driver released couple of days ago (fglrx 13.25) and still no luck (C++ works here too). It looks like I will have to rewrite my application in C++.. |
Administrator
|
This is very confusing. The fact that "a[index]=1/(float)2" works but "a[index]=0.5f" doesn't work implies that it must be a problem with the OpenCL compiler itself, rather than JOCL. If JOCL didn't work (e.g. if it was somehow setting the result buffer to zero) then changing the OpenCL kernel would make no difference, it would be the same result either way.
The only way I can think of for the OpenCL compiler to be wrong is if you're somehow using an old version. Since it works from C++, this implies that only JOCL is seeing the old version. Have you tried -Djogamp.debug.NativeLibrary.Lookup and -Djogamp.debug.NativeLibrary as suggested by Xerxes? These should show you which library JOCL uses, and it should match the one printed by "ldd your-binary" on your C++ test executable. |
I agree, it's extremely weird.
Some spammy terminal output - C++ source & run, java run, info about libraries: mfur@pcmb:~/WindowsShared/Magistrska/opencl/test2$ cat main.cpp // C++ bindings? #include <utility> #define __NO_STD_VECTOR // Use cl::vector instead of STL version #include <CL/cl.hpp> #include <cstdio> #include <cstdlib> #include <fstream> #include <iostream> #include <string> #include <iterator> //const std::string hw("Hello World\n"); inline void checkErr(cl_int err, const char * name) { if (err != CL_SUCCESS) { std::cerr << "ERROR: " << name << " (" << err << ")" << std::endl; exit(EXIT_FAILURE); } } int main(void) { // set up context - za memory access ... cl_int err; cl::vector< cl::Platform > platformList; cl::Platform::get(&platformList); checkErr(platformList.size()!=0 ? CL_SUCCESS : -1, "cl::Platform::get"); std::cerr << "Platform number is: " << platformList.size() << std::endl; std::string platformVendor; std::string platformName; platformList[0].getInfo((cl_platform_info)CL_PLATFORM_VENDOR, &platformVendor); platformList[0].getInfo((cl_platform_info)CL_PLATFORM_NAME, &platformName); std::cerr << "Platform is by: " << platformVendor << "(" << platformName << ")\n"; cl_context_properties cprops[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)(platformList[0])(), 0};cl::Context context( CL_DEVICE_TYPE_CPU, cprops, NULL, NULL, &err); checkErr(err, "Conext::Context()"); // output buffer float * outH = new float[5]; cl::Buffer outCL( context, CL_MEM_WRITE_ONLY | CL_MEM_USE_HOST_PTR, 5, outH, &err); checkErr(err, "Buffer::Buffer()"); // za kernel compilation & execution je device cl::vector<cl::Device> devices; devices = context.getInfo<CL_CONTEXT_DEVICES>(); checkErr( devices.size() > 0 ? CL_SUCCESS : -1, "devices.size() > 0"); std::ifstream file("lesson1_kernels.cl"); checkErr(file.is_open() ? CL_SUCCESS:-1, "lesson1_kernel.cl");std::string prog( std::istreambuf_iterator<char>(file), (std::istreambuf_iterator<char>()));cl::Program::Sources source(1, std::make_pair(prog.c_str(), prog.length()+1));cl::Program program(context, source); err = program.build(devices,""); checkErr(err, "Program::build()"); cl::Kernel kernel(program, "hello", &err); checkErr(err, "Kernel::Kernel()");err = kernel.setArg(0, outCL); checkErr(err, "Kernel::setArg()"); cl::CommandQueue queue(context, devices[0], 0, &err); checkErr(err, "CommandQueue::CommandQueue()");cl::Event event; err = queue.enqueueNDRangeKernel( kernel, cl::NullRange, cl::NDRange(5), cl::NDRange(1, 1), NULL, &event); checkErr(err, "ComamndQueue::enqueueNDRangeKernel()"); // počakamo do konca izvajanja jedra pred nadaljevanjem event.wait(); err = queue.enqueueReadBuffer( outCL, CL_TRUE, 0, 5, outH); checkErr(err, "ComamndQueue::enqueueReadBuffer()"); std::cout << outH[0]; return EXIT_SUCCESS; } mfur@pcmb:~/WindowsShared/Magistrska/opencl/test2$ mfur@pcmb:~/WindowsShared/Magistrska/opencl/test2$ cat main.cpp // C++ bindings? #include <utility> #define __NO_STD_VECTOR // Use cl::vector instead of STL version #include <CL/cl.hpp> #include <cstdio> #include <cstdlib> #include <fstream> #include <iostream> #include <string> #include <iterator> //const std::string hw("Hello World\n"); inline void checkErr(cl_int err, const char * name) { if (err != CL_SUCCESS) { std::cerr << "ERROR: " << name << " (" << err << ")" << std::endl; exit(EXIT_FAILURE); } } int main(void) { // set up context - za memory access ... cl_int err; cl::vector< cl::Platform > platformList; cl::Platform::get(&platformList); checkErr(platformList.size()!=0 ? CL_SUCCESS : -1, "cl::Platform::get"); std::cerr << "Platform number is: " << platformList.size() << std::endl; std::string platformVendor; std::string platformName; platformList[0].getInfo((cl_platform_info)CL_PLATFORM_VENDOR, &platformVendor); platformList[0].getInfo((cl_platform_info)CL_PLATFORM_NAME, &platformName); std::cerr << "Platform is by: " << platformVendor << "(" << platformName << ")\n"; cl_context_properties cprops[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)(platformList[0])(), 0};cl::Context context( CL_DEVICE_TYPE_CPU, cprops, NULL, NULL, &err); checkErr(err, "Conext::Context()"); // output buffer float * outH = new float[5]; cl::Buffer outCL( context, CL_MEM_WRITE_ONLY | CL_MEM_USE_HOST_PTR, 5, outH, &err); checkErr(err, "Buffer::Buffer()"); // za kernel compilation & execution je device cl::vector<cl::Device> devices; devices = context.getInfo<CL_CONTEXT_DEVICES>(); checkErr( devices.size() > 0 ? CL_SUCCESS : -1, "devices.size() > 0"); std::ifstream file("lesson1_kernels.cl"); checkErr(file.is_open() ? CL_SUCCESS:-1, "lesson1_kernel.cl");std::string prog( std::istreambuf_iterator<char>(file), (std::istreambuf_iterator<char>()));cl::Program::Sources source(1, std::make_pair(prog.c_str(), prog.length()+1));cl::Program program(context, source); err = program.build(devices,""); checkErr(err, "Program::build()"); cl::Kernel kernel(program, "hello", &err); checkErr(err, "Kernel::Kernel()");err = kernel.setArg(0, outCL); checkErr(err, "Kernel::setArg()"); cl::CommandQueue queue(context, devices[0], 0, &err); checkErr(err, "CommandQueue::CommandQueue()");cl::Event event; err = queue.enqueueNDRangeKernel( kernel, cl::NullRange, cl::NDRange(5), cl::NDRange(1, 1), NULL, &event); checkErr(err, "ComamndQueue::enqueueNDRangeKernel()"); // počakamo do konca izvajanja jedra pred nadaljevanjem event.wait(); err = queue.enqueueReadBuffer( outCL, CL_TRUE, 0, 5, outH); checkErr(err, "ComamndQueue::enqueueReadBuffer()"); std::cout << outH[0]; return EXIT_SUCCESS; } mfur@pcmb:~/WindowsShared/Magistrska/opencl/test2$ cat lesson1_kernels.cl # C++ test - works with __kernel void hello(__global float * out) { size_t tid = get_global_id(0); out[tid] = 0.5f; } mfur@pcmb:~/WindowsShared/Magistrska/opencl/test2$ g++ -o hello_world -I/opt/AMD-APP-SDK-v2.9/include main.cpp -lOpenCL mfur@pcmb:~/WindowsShared/Magistrska/opencl/test2$ ./hello_world Platform number is: 1 Platform is by: Advanced Micro Devices, Inc.(AMD Accelerated Parallel Processing) 0.5mfur@pcmb:~/WindowsShared/Magistrska/opencl/test2$ ldd hello_world linux-vdso.so.1 => (0x00007fff5dbe1000) libOpenCL.so.1 => /usr/lib/fglrx/libOpenCL.so.1 (0x00007f8c2621b000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8c25f17000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8c25d00000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8c25938000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8c2571b000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8c25516000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8c25212000) /lib64/ld-linux-x86-64.so.2 (0x00007f8c26450000) mfur@pcmb:~/WindowsShared/Magistrska/opencl/test2$ ls -al /usr/lib/fglrx/libOpenCL.so.1 -rw-r--r-- 1 root root 23624 avg 6 15:32 /usr/lib/fglrx/libOpenCL.so.1 mfur@pcmb:~/WindowsShared/Magistrska/jocl-test$ ldconfig -p | grep libOpenCL libOpenCL.so.1 (libc6,x86-64) => /usr/lib/fglrx/libOpenCL.so.1 libOpenCL.so.1 (libc6) => /usr/lib32/fglrx/libOpenCL.so.1 libOpenCL.so (libc6,x86-64) => /usr/lib/fglrx/libOpenCL.so libOpenCL.so (libc6,x86-64) => /usr/lib/libOpenCL.so mfur@pcmb:~/WindowsShared/Magistrska/jocl-test$ javac -cp jogamp-all-platforms/jar/jocl.jar:jogamp-all-platforms/jar/gluegen-rt.jar:. OCLTest.java mfur@pcmb:~/WindowsShared/Magistrska/jocl-test$ java -Djogamp.debug.NativeLibrary.Lookup -Djogamp.debug.NativeLibrary -cp jogamp-all-platforms/jar/jocl.jar:jogamp-all-platforms/jar/gluegen-rt.jar:. OCLTest NativeLibrary.findLibrary(<gluegen-rt>) (TempJarCache): /tmp/jogamp_0000/file_cache/jln6788524472501631616/jln7678909285582181012/libgluegen-rt.so main - DynamicLibraryBundle.init start with: com.jogamp.opencl.llb.impl.CLDynamicLibraryBundleInfo NativeLibrary.findLibrary(<libOpenCL.so.1>) (TempJarCache): null NativeLibrary.findLibrary(<libOpenCL.so.1>, sun.misc.Launcher$AppClassLoader@7e5284e9) (CL): null NativeLibrary.open(global true): Trying to load libOpenCL.so.1 DynamicLinkerImpl.incrLibRefCount 0x7f5efc2b53c0 -> LibRef[libOpenCL.so.1, refCount 1], libs loaded 1 NativeLibrary.open(): Successfully loaded: NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] Loaded Tool library: NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] NativeLibrary.findLibrary(<jocl>) (TempJarCache): /tmp/jogamp_0000/file_cache/jln6788524472501631616/jln7678909285582181012/libjocl.so DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetExtensionFunctionAddress) -> 0x7f5eedf019f0 Lookup-Native: <clGetExtensionFunctionAddress> 0x7f5eedf019f0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] getToolGetProcAddressHandle: clGetExtensionFunctionAddress -> 0x7f5eedf019f0 DynamicLibraryBundle.init Summary: com.jogamp.opencl.llb.impl.CLDynamicLibraryBundleInfo toolGetProcAddressFuncNameList: [clGetExtensionFunctionAddress], complete: true, 0x7f5eedf019f0 Tool Lib Names : [[libOpenCL.so.1, OpenCL, libGL.so.1, libGLESv2.so.2, libGLESv2.so, GLESv2]] Tool Lib Loaded: 1/1 [true], complete true Glue Lib Names : [jocl] Glue Lib Loaded: 1/1 [true], complete true All Complete: true LibLoaderExecutor: com.jogamp.common.util.RunnableExecutor$CurrentThreadExecutor DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateContext) -> 0x7f5eedf015a0 Lookup-Native: <clCreateContext> 0x7f5eedf015a0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateContextFromType) -> 0x7f5eedf01950 Lookup-Native: <clCreateContextFromType> 0x7f5eedf01950 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clBuildProgram) -> 0x7f5eedf00720 Lookup-Native: <clBuildProgram> 0x7f5eedf00720 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueNativeKernel) -> 0x7f5eedf01100 Lookup-Native: <clEnqueueNativeKernel> 0x7f5eedf01100 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clReleaseContext) -> 0x7f5eedf00410 Lookup-Native: <clReleaseContext> 0x7f5eedf00410 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clSetEventCallback) -> 0x7f5eedf014b0 Lookup-Native: <clSetEventCallback> 0x7f5eedf014b0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clSetMemObjectDestructorCallback) -> 0x7f5eedf01500 Lookup-Native: <clSetMemObjectDestructorCallback> 0x7f5eedf01500 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueMapImage) -> 0x7f5eedf00fb0 Lookup-Native: <clEnqueueMapImage> 0x7f5eedf00fb0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateBuffer) -> 0x7f5eedf004d0 Lookup-Native: <clCreateBuffer> 0x7f5eedf004d0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateCommandQueue) -> 0x7f5eedf00450 Lookup-Native: <clCreateCommandQueue> 0x7f5eedf00450 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] Lookup-Tool: <clCreateEventFromGLsyncKHR> 0x7f5eedf01480 DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateFromGLBuffer) -> 0x7f5eedf01310 Lookup-Native: <clCreateFromGLBuffer> 0x7f5eedf01310 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateFromGLRenderbuffer) -> 0x7f5eedf013d0 Lookup-Native: <clCreateFromGLRenderbuffer> 0x7f5eedf013d0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateFromGLTexture2D) -> 0x7f5eedf01370 Lookup-Native: <clCreateFromGLTexture2D> 0x7f5eedf01370 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateFromGLTexture3D) -> 0x7f5eedf013a0 Lookup-Native: <clCreateFromGLTexture3D> 0x7f5eedf013a0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateImage2D) -> 0x7f5eedf01210 Lookup-Native: <clCreateImage2D> 0x7f5eedf01210 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateImage3D) -> 0x7f5eedf01250 Lookup-Native: <clCreateImage3D> 0x7f5eedf01250 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateKernel) -> 0x7f5eedf00810 Lookup-Native: <clCreateKernel> 0x7f5eedf00810 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateKernelsInProgram) -> 0x7f5eedf00840 Lookup-Native: <clCreateKernelsInProgram> 0x7f5eedf00840 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateProgramWithBinary) -> 0x7f5eedf00680 Lookup-Native: <clCreateProgramWithBinary> 0x7f5eedf00680 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateProgramWithSource) -> 0x7f5eedf00650 Lookup-Native: <clCreateProgramWithSource> 0x7f5eedf00650 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateSampler) -> 0x7f5eedf005c0 Lookup-Native: <clCreateSampler> 0x7f5eedf005c0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateSubBuffer) -> 0x7f5eedf014d0 Lookup-Native: <clCreateSubBuffer> 0x7f5eedf014d0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] Lookup-Tool: <clCreateSubDevicesEXT> 0x7f5eedf011b0 DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clCreateUserEvent) -> 0x7f5eedf01520 Lookup-Native: <clCreateUserEvent> 0x7f5eedf01520 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueAcquireGLObjects) -> 0x7f5eedf01440 Lookup-Native: <clEnqueueAcquireGLObjects> 0x7f5eedf01440 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueBarrier) -> 0x7f5eedf012f0 Lookup-Native: <clEnqueueBarrier> 0x7f5eedf012f0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueCopyBuffer) -> 0x7f5eedf00c80 Lookup-Native: <clEnqueueCopyBuffer> 0x7f5eedf00c80 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueCopyBufferRect) -> 0x7f5eedf00cc0 Lookup-Native: <clEnqueueCopyBufferRect> 0x7f5eedf00cc0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueCopyBufferToImage) -> 0x7f5eedf00f20 Lookup-Native: <clEnqueueCopyBufferToImage> 0x7f5eedf00f20 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueCopyImage) -> 0x7f5eedf00ea0 Lookup-Native: <clEnqueueCopyImage> 0x7f5eedf00ea0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueCopyImageToBuffer) -> 0x7f5eedf00ee0 Lookup-Native: <clEnqueueCopyImageToBuffer> 0x7f5eedf00ee0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueMapBuffer) -> 0x7f5eedf00f60 Lookup-Native: <clEnqueueMapBuffer> 0x7f5eedf00f60 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueMarker) -> 0x7f5eedf012b0 Lookup-Native: <clEnqueueMarker> 0x7f5eedf012b0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueMigrateMemObjectEXT) -> 0x0 Lookup-Native: <clEnqueueMigrateMemObjectEXT> ** FAILED ** in libs [NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true]] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueNDRangeKernel) -> 0x7f5eedf010a0 Lookup-Native: <clEnqueueNDRangeKernel> 0x7f5eedf010a0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueReadBuffer) -> 0x7f5eedf00a20 Lookup-Native: <clEnqueueReadBuffer> 0x7f5eedf00a20 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueReadBufferRect) -> 0x7f5eedf00a60 Lookup-Native: <clEnqueueReadBufferRect> 0x7f5eedf00a60 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueReadImage) -> 0x7f5eedf00d70 Lookup-Native: <clEnqueueReadImage> 0x7f5eedf00d70 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueReleaseGLObjects) -> 0x7f5eedf01460 Lookup-Native: <clEnqueueReleaseGLObjects> 0x7f5eedf01460 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueTask) -> 0x7f5eedf010e0 Lookup-Native: <clEnqueueTask> 0x7f5eedf010e0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueUnmapMemObject) -> 0x7f5eedf01050 Lookup-Native: <clEnqueueUnmapMemObject> 0x7f5eedf01050 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueWaitForEvents) -> 0x7f5eedf012d0 Lookup-Native: <clEnqueueWaitForEvents> 0x7f5eedf012d0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueWriteBuffer) -> 0x7f5eedf00b30 Lookup-Native: <clEnqueueWriteBuffer> 0x7f5eedf00b30 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueWriteBufferRect) -> 0x7f5eedf00b70 Lookup-Native: <clEnqueueWriteBufferRect> 0x7f5eedf00b70 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clEnqueueWriteImage) -> 0x7f5eedf00df0 Lookup-Native: <clEnqueueWriteImage> 0x7f5eedf00df0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clFinish) -> 0x7f5eedf00a00 Lookup-Native: <clFinish> 0x7f5eedf00a00 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clFlush) -> 0x7f5eedf009e0 Lookup-Native: <clFlush> 0x7f5eedf009e0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetCommandQueueInfo) -> 0x7f5eedf004b0 Lookup-Native: <clGetCommandQueueInfo> 0x7f5eedf004b0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetContextInfo) -> 0x7f5eedf00430 Lookup-Native: <clGetContextInfo> 0x7f5eedf00430 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetDeviceIDs) -> 0x7f5eedf01680 Lookup-Native: <clGetDeviceIDs> 0x7f5eedf01680 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetDeviceInfo) -> 0x7f5eedf00370 Lookup-Native: <clGetDeviceInfo> 0x7f5eedf00370 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetEventInfo) -> 0x7f5eedf00960 Lookup-Native: <clGetEventInfo> 0x7f5eedf00960 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetEventProfilingInfo) -> 0x7f5eedf009c0 Lookup-Native: <clGetEventProfilingInfo> 0x7f5eedf009c0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] Lookup-Tool: <clGetGLContextInfoKHR> 0x7f5eedf018c0 DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetGLObjectInfo) -> 0x7f5eedf01400 Lookup-Native: <clGetGLObjectInfo> 0x7f5eedf01400 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetGLTextureInfo) -> 0x7f5eedf01420 Lookup-Native: <clGetGLTextureInfo> 0x7f5eedf01420 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetImageInfo) -> 0x7f5eedf005a0 Lookup-Native: <clGetImageInfo> 0x7f5eedf005a0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetKernelInfo) -> 0x7f5eedf008c0 Lookup-Native: <clGetKernelInfo> 0x7f5eedf008c0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetKernelWorkGroupInfo) -> 0x7f5eedf00900 Lookup-Native: <clGetKernelWorkGroupInfo> 0x7f5eedf00900 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetMemObjectInfo) -> 0x7f5eedf00580 Lookup-Native: <clGetMemObjectInfo> 0x7f5eedf00580 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetPlatformIDs) -> 0x7f5eedf017c0 Lookup-Native: <clGetPlatformIDs> 0x7f5eedf017c0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetPlatformInfo) -> 0x7f5eedf01720 Lookup-Native: <clGetPlatformInfo> 0x7f5eedf01720 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetProgramBuildInfo) -> 0x7f5eedf007f0 Lookup-Native: <clGetProgramBuildInfo> 0x7f5eedf007f0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetProgramInfo) -> 0x7f5eedf007d0 Lookup-Native: <clGetProgramInfo> 0x7f5eedf007d0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetSamplerInfo) -> 0x7f5eedf00630 Lookup-Native: <clGetSamplerInfo> 0x7f5eedf00630 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clGetSupportedImageFormats) -> 0x7f5eedf00560 Lookup-Native: <clGetSupportedImageFormats> 0x7f5eedf00560 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clIcdGetPlatformIDsKHR) -> 0x0 Lookup-Native: <clIcdGetPlatformIDsKHR> ** FAILED ** in libs [NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true]] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clReleaseCommandQueue) -> 0x7f5eedf00490 Lookup-Native: <clReleaseCommandQueue> 0x7f5eedf00490 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] Lookup-Tool: <clReleaseDeviceEXT> 0x7f5eedf011f0 DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clReleaseEvent) -> 0x7f5eedf009a0 Lookup-Native: <clReleaseEvent> 0x7f5eedf009a0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clReleaseKernel) -> 0x7f5eedf00880 Lookup-Native: <clReleaseKernel> 0x7f5eedf00880 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clReleaseMemObject) -> 0x7f5eedf00540 Lookup-Native: <clReleaseMemObject> 0x7f5eedf00540 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clReleaseProgram) -> 0x7f5eedf00700 Lookup-Native: <clReleaseProgram> 0x7f5eedf00700 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clReleaseSampler) -> 0x7f5eedf00610 Lookup-Native: <clReleaseSampler> 0x7f5eedf00610 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clRetainCommandQueue) -> 0x7f5eedf00470 Lookup-Native: <clRetainCommandQueue> 0x7f5eedf00470 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clRetainContext) -> 0x7f5eedf003f0 Lookup-Native: <clRetainContext> 0x7f5eedf003f0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] Lookup-Tool: <clRetainDeviceEXT> 0x7f5eedf011d0 DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clRetainEvent) -> 0x7f5eedf00980 Lookup-Native: <clRetainEvent> 0x7f5eedf00980 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clRetainKernel) -> 0x7f5eedf00860 Lookup-Native: <clRetainKernel> 0x7f5eedf00860 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clRetainMemObject) -> 0x7f5eedf00520 Lookup-Native: <clRetainMemObject> 0x7f5eedf00520 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clRetainProgram) -> 0x7f5eedf006e0 Lookup-Native: <clRetainProgram> 0x7f5eedf006e0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clRetainSampler) -> 0x7f5eedf005f0 Lookup-Native: <clRetainSampler> 0x7f5eedf005f0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clSetKernelArg) -> 0x7f5eedf008a0 Lookup-Native: <clSetKernelArg> 0x7f5eedf008a0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clSetUserEventStatus) -> 0x7f5eedf01550 Lookup-Native: <clSetUserEventStatus> 0x7f5eedf01550 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clUnloadCompiler) -> 0x7f5eedf012a0 Lookup-Native: <clUnloadCompiler> 0x7f5eedf012a0 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] DynamicLinkerImpl.lookupSymbol(0x7f5efc2b53c0, clWaitForEvents) -> 0x7f5eedf00920 Lookup-Native: <clWaitForEvents> 0x7f5eedf00920 in lib NativeLibrary[libOpenCL.so.1, 0x7f5efc2b53c0, global true] CLContext [id: 140045938097376, platform: AMD Accelerated Parallel Processing, profile: FULL_PROFILE, devices: 2] CLDevice [id: 140045934754864 name: Cypress type: GPU profile: FULL_PROFILE] build log: <empty> CLDevice [id: 140045938102176 name: AMD Phenom(tm) II X2 555 Processor type: CPU profile: FULL_PROFILE] build log: <empty> 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 mfur@pcmb:~/WindowsShared/Magistrska/jocl-test$ |
Administrator
|
Hmm, OK, there are more things to try :) It looks like there may be two libOpenCL.so on your system, one in /usr/lib/fglrx (the good one) and one in /usr/lib (presumably old and broken). To confirm, maybe do a "locate libOpenCL.so", just to make sure there aren't more lying around :)
One thing to try is setting the env var LD_DEBUG=all before running the JOCL program. This should dump information straight from the Linux loader to tell us which lib is getting loaded (the Djogamp.debug.NativeLibrary* didn't tell us the path to the lib, so it must be from inside System.loadLibrary()). Maybe this shows us that JOCL is loading the old libOpenCL.so. Another thing is to try moving the libOpenCL.so in /usr/lib off the search path, to see if JOCL will load the one in /usr/lib/fglrx or just fail. Or alternately, you could make a link in /usr/lib to the one in /usr/lib/fglrx. The point is to make sure JOCL is seeing /usr/lib/fglrx/libOpenCL.so, since we know that one is correct (since it works for your C++ program). |
Free forum by Nabble | Edit this page |