glow
glow copied to clipboard
[OpenCL] all but one of the example applications fail (cannot find elementselectW16 kernel or decoder_output_concat1 operation not supported)
With pocl:
$ POCL_DEBUG=1 bin/mnist -platform=0 -device=0 -opencl
Loading the mnist database.
...
[2019-04-01 15:23:40.903036977]POCL: in fn POclCreateKernel at line 80:
| ERROR | CL_INVALID_KERNEL_NAME Can't find a the kernel with name elementselectW16 in this program
../lib/Backends/OpenCL/OpenCL.cpp:168: failed assertion `kernel && "clCreateKernel Failed."'
Aborted (core dumped)
Tested also with the Intel's CPU driver:
$ OCL_ICD_VENDORS=/etc/OpenCL/vendors/intel_exp64.icd bin/mnist -platform=0 -device=0 -opencl
Loading the mnist database.
Loaded 50000 images.
Training.
Training - epoch #0
../lib/Backends/OpenCL/OpenCL.cpp:168: failed assertion `kernel && "clCreateKernel Failed."'
Aborted (core dumped)
Thanks for reporting it! Looks like an oversight.
We need to add the missing variants of this kernel similar to how we do it for e.g. elementcmplte kernel.
Actually seems all but ptb fail with OpenCL. cifar10 fails with the same missing kernel.
The other error I get for char-rnn and fr2en is
../lib/ExecutionEngine/ExecutionEngine.cpp:260: void glow::ExecutionEngine::compile(glow::Function *, const glow::CompilationContext &, bool): Assertion `backend_->isOpSupported(N) && "Backend must support all nodes after high-level optimizations."' failed.
...
(gdb) print N
$1 = (const glow::Node &) @0x4da91d0: {<glow::Named> = {name_ = "decoder_output_concat1"}, <glow::Kinded> = {
kind_ = glow::Kinded::Kind::ConcatNodeKind}, <glow::UseDef<glow::Node, glow::NodeUse>> = {
users_ = {<std::__cxx11::_List_base<glow::NodeUse, std::allocator<glow::NodeUse> >> = {
_M_impl = {<std::allocator<std::_List_node<glow::NodeUse> >> = {<__gnu_cxx::new_allocator<std::_List_node<glow::NodeUse> >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {
_M_next = 0x4d74a00, _M_prev = 0x4d74a00},
_M_data = 1}}}, <No data fields>}}, <llvm::ilist_node<glow::Node>> = {<llvm::ilist_node_impl<llvm::ilist_detail::node_options<glow::Node, true, false, void> >> = {<llvm::ilist_node_base<true>> = {
PrevAndSentinel = {Value = 81402144}, Next = 0x4da96d0}, <No data fields>}, <No data fields>},
static maxNodeResno_ = 6, types_ = {_M_elems = {0x4c874a0, 0x9d87cc607f19691c, 0x4da91f0, 0x121, 0x4dadba0,
0x4daf590}}, numRes_ = 1, predicate_ = {<glow::NodeValue> = {node_ = 0x0, resNo_ = 0},
parent_ = 0x4da91d0}, parent_ = 0x4c86000}
@SplitInfinity This is fixed now, right?
For mnist and cifar10 yes, but not for char-rnn and fr2en. I think those fail with a different error.