Hardcoded float not working?

classic Classic list List threaded Threaded
32 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Hardcoded float not working?

Miha
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.
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Miha
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.
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Wade Walker
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.
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Miha
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)
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Miha
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..
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Xerxes Rånby
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
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Miha
Thank you for testing Xerxes. I ran your scripts but I still get all zeros output.
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Wade Walker
Administrator
Is your OpenCL driver at the latest version? This could be a bug in the runtime compiler that's inside the driver.
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

jmaasing
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
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Miha
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?
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Miha
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
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Sven Gothel
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?
>
It seems to be OpenCL driver related
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
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Xerxes Rånby
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.
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Wade Walker
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.
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Miha
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++..
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Wade Walker
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.
Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Miha
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$

Reply | Threaded
Open this post in threaded view
|

Re: Hardcoded float not working?

Wade Walker
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).
12