clMathLibraries / clBLAS

a software library containing BLAS functions written in OpenCL
Apache License 2.0
842 stars 237 forks source link

CMake compilation with clBLAS fails on hard-coded AMDADDPSDK path #352

Open tsjordan-eng opened 4 years ago

tsjordan-eng commented 4 years ago

When I compile a program using CMake, the target that links directly to clBLAS builds, but anything that then links to that target fails because:

make[2]: *** No rule to make target '/opt/AMDAPPSDK-3.0/lib/x86_64/libOpenCL.so', needed by [target].  Stop

The offending line appears in clBLASTargets-release.cmake when the concrete path to the AMD APP SDK is set. Removing that path allows the compilation to succeed.

We could remove that path or substitute in ${OpenCL_LIBRARY}, but I think the real goal should be to move towards a Modern CMake approach where targets, not variables, are defined as this is best-practice. Something like clBLAS::clBLAS rather than the variables.

refer to: https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/#model-dependencies-with-target_link_libraries

tingxingdong commented 4 years ago

Notice: when you download & install AMD 's graphic driver (https://www.amd.com/en/support). You actually have already installed the OpenCL real driver.

Step 1: but you still lack OpenCL header/library. So come here. https://github.com/GPUOpen-LibrariesAndSDKs/OCL-SDK/releases

download & Install the exe and you see header/.lib. .lib will find the real driver for you, acting like an ICD loader.

On my Win10, it is installed in C:\Program Files (x86)\OCL_SDK_Light\