clMathLibraries / clSPARSE

a software library containing Sparse functions written in OpenCL
Apache License 2.0
173 stars 60 forks source link

Missing implementations of clsparseScoomv and clsparseDcoomv #197

Open gpu opened 7 years ago

gpu commented 7 years ago

(The build process of clSPARSE is ... ehm ... "sophisticated", so apologies if I did something wrong and if the issue is on my side)

The implementations __imp_clsparseScoomv and __imp_clsparseDcoomv seem to be missing. When building the library from scratch and trying to use these functions, this results in

Unresolved external symbol __imp_clsparseScoomv referenced in function ...
Unresolved external symbol __imp_clsparseDcoomv referenced in function ...

As a quick test, you could try to reproduce this, by adding the following TEST>...<TEST in https://github.com/clMathLibraries/clSPARSE/blob/master/src/tests/test_interface_c.c

....

// Library init code starts here
clsparseSetup( );

clsparseCreateResult createResult = clsparseCreateControl( queue );

clsparseCooMatrix myCooMatx;
clsparseInitCooMatrix( &myCooMatx );

// TEST>
clsparseScalar alpha;
cldenseVector x;
clsparseScalar beta;
cldenseVector y;
clsparseDcoomv(&alpha, &myCooMatx, &x, &beta, &y, createResult.control);
// <TEST

(of course, this will not "work", but should already show the linker error)

Environment:

Windows 8.1, Visual Studio 2015

blueberry commented 7 years ago

I am also interested in this issue, since I would really like to try clSparse, but the building process is really messy EDIT: challenging. Is there a way to have a clear, step-by-step guide with the most common pitfalls?

kknox commented 7 years ago

@blueberry , have you looked at the build primer on the wiki? Let me know if you find sections that are insufficient.

@gpu I have not gotten to reproducing your issue yet.

blueberry commented 7 years ago

@kknox Yes, I have. And it looks quite OK at the first glance. The problem (for me) is that the build process itself is quite complex, so when something does not go as in the guide, it is quite hard (for non-expert I suppose) to find what's wrong.

In this case, I couldn't pass the first stage. I got this error on pressing "Generate" for the deps:

-------------------------------------------------------------------
64bit build - FIND_LIBRARY_USE_LIB64_PATHS TRUE
Setting up Boost external...
Configuring Boost SuperBuild...
ext.Boost_VERSION: 1.60.0
ExternalBoost using ( 9 ) cores to build with
ExternalBoost building [ program_options, serialization, filesystem, system, regex ] components
ENV{CC}=
CMake Error at cmake/ExternalBoost.cmake:98 (get_filename_component):
get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
CMakeLists.txt:105 (include)

CMake Error at cmake/ExternalBoost.cmake:101 (string):
string no output variable specified
Call Stack (most recent call first):
CMakeLists.txt:105 (include)

Boost.Command: ./b2;--prefix=<INSTALL_DIR>/package;cxxflags=-fPIC;-std=c++11;-j;9;--with-program_options;--with-serialization;--with-filesystem;--with-system;--with-regex;address-model=64;toolset=;link=static;variant=release;--layout=tagged;install
BOOST_ROOT configured as: /home/dragan/workspace/c/clsparse/bin/deps/Externals/Boost/package
Setting up googleMock external...
Configuring gMock SuperBuild...
ext.gMock_Version: 1.7.0
ExternalGmock using ( 9 ) cores to build with
GMOCK_ROOT configured as: /home/dragan/workspace/c/clsparse/bin/deps/Externals/gMock/package
Configuring incomplete, errors occurred!
See also "/home/dragan/workspace/c/clsparse/bin/deps/CMakeFiles/CMakeOutput.log".

-------------------------------------------------------------------------

I followed the guide to the letter, and tried clearing the cache/deleting everything, etc. many times. Always the same error. I am a CMake noob, but had no serious challenges building JOCL (@gpu's library that also uses CMake and OpenCL), so I guess this is not due to the system setup, or if it is, I do not know what could be the problem.

BTW: Up-to-date Arch Linux 64-bit, AMD OpenCL platform (Catalyst 15.12-something)

kknox commented 7 years ago

@blueberry I have run into this issue before, on a mac system. It's not very reproducible, it works for me on various other systems. I have yet to nail down why the DEFINED ENV{CC} seems to pass on some systems when it shouldn't. I created a patch for my mac system, that will probably work on your system too. Try it out and let me know. I've not merged it because I have not tested it across windows/linux.