AnsweredAssumed Answered

AMD DEVS - bug in AMDAPPSDK-3.0 Installer (linux x64)?

Question asked by volumetricsteve on Oct 25, 2016
Latest reply on Nov 2, 2016 by dipak

I installed the amd app sdk last night (Linux 64) and for some reason, it seems like it skipped over the most important file - libOpenCL.so.1

I let the installer use its own default directories, I didn't tell it to do anything special.  I tried to compile some little sample opencl code which failed on linking.  I could find a link to libOpenCL.so.1 in /opt/AMDAPPSKD-3.0/lib/x86_64/ but the link there points to /usr/lib/libOpenCL.so.1, which doesn't exist.  I found the actual file in /opt/AMDAPPSDK-3.0/lib/x86_64/sdk/ and I manually copied it to my /usr/lib/ which seemed to fix nearly all of my issues.  Is this normal behavior?  Assuming this package is targeting ubuntu, does ubuntu put libraries somewhere else?

 

I went digging around in the 'install.sh' which lives in the installed directory of the amdappsdk.  Curious that it installs its install script along with everything else, but moving past that....  I found this:

 

#Function Name: createOpenCLSoftLink

#Comments     : creates the soft-link libOpenCL.so to libOpenCL.so.1

#               This is done depending upon the libOpenCL.so file.

#               If libOpenCL.so exist we are doing nothing.

#               If only libOpenCL.so.1 is present in /usr/lib, then we are creating the soft-link libOpenCL.so to libOpenCL.so.1

#               The libOpenCL.so* file are created depending upon the catalyst installation, so to handle this we are creating soft-link

#               And libOpenCL.so is required by cmake files to pick the catalyst runtimes.

#               If libOpenCL.so file is not found in /usr/lib, then cmake picks up the AMDAPPSDK runtimes.

 

Without getting too far in the weeds, I imagine the way in which libOpenCL.so.1 is handled it must have been intentional, but it seems really strange.  Either way, the soft-linking seems to fail.  Is there a reason we're not just moving the right file into the right place?  Is this to account for other opencl implementations to avoid accidental over-write?

 

Looking at the whole amdappsdk package, it's amazingly complex.  I guess it has to account for all kinds of environments, but this all seems like a lot and I suppose the amdappsdk does more than "just" opencl but...my god these scripts go on forever.

Outcomes