singa icon indicating copy to clipboard operation
singa copied to clipboard

OpenCL Compilation Fails

Open ekare opened this issue 2 years ago • 0 comments

On master branch cmake compile fails

Configuration:

root@1cbf9f240cc2:~/singa/build# cmake -DENABLE_TEST=ON -DUSE_PYTHON3=ON -DUSE_DNNL=ON 
-DUSE_OPENCL=ON ..
-- SINGA git Version 3.3.0
-- SINGA Version 3300
-- FOUND GLOG at /usr/include
-- Found ViennaCL include: /usr/include
-- ********************* Found ViennaCL headers at /usr/include
-- Found DNNL at /root/dnnl_lnx_1.1.0_cpu_gomp/include
-- Configuring done
-- Generating done
-- Build files have been written to: /root/singa/build

with make -j12


[ 25%] Building CXX object src/CMakeFiles/singa_objects.dir/core/tensor/tensor.cc.o
/root/singa/src/core/device/opencl_device.cc: In member function 'void singa::OpenclDevice::BuildPrograms()':
/root/singa/src/core/device/opencl_device.cc:96:46: error: 'distribution_str' is not a member of 'viennacl::backend::opencl'
   ocl::current_context().add_program(opencl::distribution_str,
                                              ^~~~~~~~~~~~~~~~
/root/singa/src/core/device/opencl_device.cc:98:46: error: 'tensormath_str' is not a member of 'viennacl::backend::opencl'
   ocl::current_context().add_program(opencl::tensormath_str,
                                              ^~~~~~~~~~~~~~
/root/singa/src/core/device/opencl_device.cc:100:46: error: 'im2col_str' is not a member of 'viennacl::backend::opencl'
   ocl::current_context().add_program(opencl::im2col_str, "opencl_im2col");
                                              ^~~~~~~~~~
/root/singa/src/core/device/opencl_device.cc:101:46: error: 'pooling_str' is not a member of 'viennacl::backend::opencl'
   ocl::current_context().add_program(opencl::pooling_str, "opencl_pooling");
                                              ^~~~~~~~~~~

and after;


/usr/include/c++/7/bits/shared_ptr.h:344:64:   required from 'std::shared_ptr<_Tp>::shared_ptr(std::_Sp_make_shared_tag, const _Alloc&, _Args&& ...) [with _Alloc = std::allocator<singa::OpenclDevice>; _Args = {}; _Tp = singa::OpenclDevice]'
/usr/include/c++/7/bits/shared_ptr.h:690:14:   required from 'std::shared_ptr<_Tp> std::allocate_shared(const _Alloc&, _Args&& ...) [with _Tp = singa::OpenclDevice; _Alloc = std::allocator<singa::OpenclDevice>; _Args = {}]'
/usr/include/c++/7/bits/shared_ptr.h:706:39:   required from 'std::shared_ptr<_Tp> std::make_shared(_Args&& ...) [with _Tp = singa::OpenclDevice; _Args = {}]'
/root/singa/src/core/device/platform.cc:169:41:   required from here
/usr/include/c++/7/ext/new_allocator.h:136:4: error: invalid new-expression of abstract class type 'singa::OpenclDevice'
  { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /root/singa/src/core/device/platform.cc:22:0:
/root/singa/include/singa/core/device.h:253:7: note:   because the following virtual functions are pure within 'singa::OpenclDevice':
 class OpenclDevice : public singa::Device {
       ^~~~~~~~~~~~
/root/singa/include/singa/core/device.h:134:16: note: 	virtual void singa::Device::TimeProfilingDoExec(std::function<void(singa::_Context*)>&&, int, singa::Node*)
   virtual void TimeProfilingDoExec(function<void(Context*)>&& fn, int executor,
                ^~~~~~~~~~~~~~~~~~~
/root/singa/include/singa/core/device.h:136:16: note: 	virtual void singa::Device::EvaluateTimeElapsed(singa::Node*)
   virtual void EvaluateTimeElapsed(Node* node) = 0;


ekare avatar Mar 05 '23 14:03 ekare