Hi Toby, alright, this looks like the issue is with dense matrices being passed to BiCGStab. Does the build work if you disable the dense matrices for the iterative solvers? If so, then I think you can temporarily fix this within PyViennaCL and we don't need to roll a separate ViennaCL release.
Best regards, Karli On 02/25/2014 09:26 PM, Toby St Clere Smithe wrote: > OK, so after re-doing the build system, let's try again. Unfortunately, > the Windows terminal window didn't save very much history, so I only > have this much of the error output. I think it's enough to be > diagnostic; if not, I'll run it again, redirecting the output to a > file.. > > Once I've got this Windows build fixed, and successful builds on Mac OS, > I'll release PyViennaCL version 1.0.1. > > Also note that this is now using MSVC 9, since that's the version that > Python 2.7 is built with, and I have to build with that, apparently. > > > > external/viennacl-dev/viennacl/linalg/bicgstab.hpp(125) : error C2593: > 'operator -=' is ambiguous > external/viennacl-dev/viennacl/vector.hpp(765): could be > 'viennacl::vector_base<SCALARTYPE> > &viennacl::vector_base<SCALARTYPE>::operator -=<MatrixType,v > iennacl::vector_base<SCALARTYPE>,viennacl::op_prod>(const > viennacl::vector_expression<LHS,RHS,OP> &)' > with > [ > SCALARTYPE=double, > MatrixType=viennacl::matrix_base<double>, > LHS=const viennacl::matrix_base<double>, > RHS=const viennacl::vector_base<double>, > OP=viennacl::op_prod > ] > external/viennacl-dev/viennacl/linalg/matrix_operations.hpp(817): or > 'viennacl::vector<SCALARTYPE> viennacl::operator > -=<double,viennacl::row_majo > r>(viennacl::vector_base<SCALARTYPE> &,const > viennacl::vector_expression<LHS,RHS,OP> &)' > with > [ > SCALARTYPE=double, > LHS=const viennacl::matrix_base<double>, > RHS=const viennacl::vector_base<double>, > OP=viennacl::op_prod > ] > while trying to match the argument list > '(viennacl::vector<SCALARTYPE>, viennacl::vector_expression<LHS,RHS,OP>)' > with > [ > SCALARTYPE=double > ] > and > [ > LHS=const viennacl::matrix_base<double>, > RHS=const viennacl::vector_base<double>, > OP=viennacl::op_prod > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\solve_op_func.hpp(9) : > see reference to function template instantiation 'VectorType > viennacl::linalg::solve > <viennacl::matrix_base<SCALARTYPE>,viennacl::vector<SCALARTYPE>>(const > MatrixType &,const VectorType &,const viennacl::linalg::bicgstab_tag &)' > being compiled > with > [ > VectorType=viennacl::vector<double>, > SCALARTYPE=double, > MatrixType=viennacl::matrix_base<double> > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\solve_op_func.hpp(7) : > while compiling class template member function 'viennacl::vector<SCALARTYPE> > pyvcl_w > orker<ReturnT,Operand1T,Operand2T,Operand3T,Operand4T,op,PyObjs>::do_op(pyvcl_op<ReturnT,Operand1T,Operand2T,Operand3T,Operand4T,op_solve,0> > &)' > with > [ > SCALARTYPE=double, > ReturnT=viennacl::vector<double>, > Operand1T=viennacl::matrix_base<double> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag &, > Operand4T=NoneT , > op=op_solve, > PyObjs=0 > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\viennacl.h(155) : see > reference to class template instantiation > 'pyvcl_worker<ReturnT,Operand1T,Operand2T,O > perand3T,Operand4T,op,PyObjs>' being compiled > with > [ > ReturnT=viennacl::vector<double>, > Operand1T=viennacl::matrix_base<double> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag &, > Operand4T=NoneT , > op=op_solve, > PyObjs=0 > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\viennacl.h(151) : while > compiling class template member function 'viennacl::vector<SCALARTYPE> > pyvcl_op<Ret > urnT,Operand1T,Operand2T,Operand3T,Operand4T,op,PyObjs>::do_op(void)' > with > [ > SCALARTYPE=double, > ReturnT=viennacl::vector<double>, > Operand1T=viennacl::matrix_base<double> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag &, > Operand4T=NoneT, > op=op_solve, > PyObjs=0 > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\viennacl.h(199) : see > reference to class template instantiation > 'pyvcl_op<ReturnT,Operand1T,Operand2T,Opera > nd3T,Operand4T,op,PyObjs>' being compiled > with > [ > ReturnT=viennacl::vector<double>, > Operand1T=viennacl::matrix_base<double> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag &, > Operand4T=NoneT, > op=op_solve, > PyObjs=0 > ] > src\_viennacl\iterative_solvers.cpp(6) : see reference to function > template instantiation 'ReturnT > pyvcl_do_3ary_op<viennacl::vector<SCALARTYPE>,viennac > l::matrix_base<SCALARTYPE>&,viennacl::vector<SCALARTYPE>&,viennacl::linalg::bicgstab_tag&,op_solve,0>(Operand1T,Operand2T,Operand3T)' > being compiled > with > [ > ReturnT=viennacl::vector<double>, > SCALARTYPE=double, > Operand1T=viennacl::matrix_base<double> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag & > ] > external/viennacl-dev/viennacl/linalg/bicgstab.hpp(125) : error C2593: > 'operator -=' is ambiguous > external/viennacl-dev/viennacl/vector.hpp(765): could be > 'viennacl::vector_base<SCALARTYPE> > &viennacl::vector_base<SCALARTYPE>::operator -=<MatrixType,v > iennacl::vector_base<SCALARTYPE>,viennacl::op_prod>(const > viennacl::vector_expression<LHS,RHS,OP> &)' > with > [ > SCALARTYPE=double, > MatrixType=viennacl::matrix_base<double,viennacl::column_major>, > LHS=const viennacl::matrix_base<double,viennacl::column_major>, > RHS=const viennacl::vector_base<double>, > OP=viennacl::op_prod > ] > external/viennacl-dev/viennacl/linalg/matrix_operations.hpp(817): or > 'viennacl::vector<SCALARTYPE> viennacl::operator > -=<double,viennacl::column_m > ajor>(viennacl::vector_base<SCALARTYPE> &,const > viennacl::vector_expression<LHS,RHS,OP> &)' > with > [ > SCALARTYPE=double, > LHS=const viennacl::matrix_base<double,viennacl::column_major>, > RHS=const viennacl::vector_base<double>, > OP=viennacl::op_prod > ] > while trying to match the argument list > '(viennacl::vector<SCALARTYPE>, viennacl::vector_expression<LHS,RHS,OP>)' > with > [ > SCALARTYPE=double > ] > and > [ > LHS=const viennacl::matrix_base<double,viennacl::column_major>, > RHS=const viennacl::vector_base<double>, > OP=viennacl::op_prod > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\solve_op_func.hpp(9) : > see reference to function template instantiation 'VectorType > viennacl::linalg::solve > <viennacl::matrix_base<SCALARTYPE,F>,viennacl::vector<SCALARTYPE>>(const > MatrixType &,const VectorType &,const viennacl::linalg::bicgstab_tag &)' > being compiled > > with > [ > VectorType=viennacl::vector<double>, > SCALARTYPE=double, > F=viennacl::column_major, > MatrixType=viennacl::matrix_base<double,viennacl::column_major> > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\solve_op_func.hpp(7) : > while compiling class template member function 'viennacl::vector<SCALARTYPE> > pyvcl_w > orker<ReturnT,Operand1T,Operand2T,Operand3T,Operand4T,op,PyObjs>::do_op(pyvcl_op<ReturnT,Operand1T,Operand2T,Operand3T,Operand4T,op_solve,0> > &)' > with > [ > SCALARTYPE=double, > ReturnT=viennacl::vector<double>, > Operand1T=viennacl::matrix_base<double,viennacl::column_major> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag &, > Operand4T=NoneT , > op=op_solve, > PyObjs=0 > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\viennacl.h(155) : see > reference to class template instantiation > 'pyvcl_worker<ReturnT,Operand1T,Operand2T,O > perand3T,Operand4T,op,PyObjs>' being compiled > with > [ > ReturnT=viennacl::vector<double>, > Operand1T=viennacl::matrix_base<double,viennacl::column_major> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag &, > Operand4T=NoneT , > op=op_solve, > PyObjs=0 > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\viennacl.h(151) : while > compiling class template member function 'viennacl::vector<SCALARTYPE> > pyvcl_op<Ret > urnT,Operand1T,Operand2T,Operand3T,Operand4T,op,PyObjs>::do_op(void)' > with > [ > SCALARTYPE=double, > ReturnT=viennacl::vector<double>, > Operand1T=viennacl::matrix_base<double,viennacl::column_major> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag &, > Operand4T=NoneT, > op=op_solve, > PyObjs=0 > ] > f:\src\viennacl\pyviennacl-dev\src\_viennacl\viennacl.h(199) : see > reference to class template instantiation > 'pyvcl_op<ReturnT,Operand1T,Operand2T,Opera > nd3T,Operand4T,op,PyObjs>' being compiled > with > [ > ReturnT=viennacl::vector<double>, > Operand1T=viennacl::matrix_base<double,viennacl::column_major> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag &, > Operand4T=NoneT, > op=op_solve, > PyObjs=0 > ] > src\_viennacl\iterative_solvers.cpp(6) : see reference to function > template instantiation 'ReturnT > pyvcl_do_3ary_op<viennacl::vector<SCALARTYPE>,viennac > l::matrix_base<SCALARTYPE,F>&,viennacl::vector<SCALARTYPE>&,viennacl::linalg::bicgstab_tag&,op_solve,0>(Operand1T,Operand2T,Operand3T)' > being compiled > with > [ > ReturnT=viennacl::vector<double>, > SCALARTYPE=double, > F=viennacl::column_major, > Operand1T=viennacl::matrix_base<double,viennacl::column_major> &, > Operand2T=viennacl::vector<double> &, > Operand3T=viennacl::linalg::bicgstab_tag & > ] > error: command '"D:\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with > exit status 2 > > > > > > > > Karl Rupp <r...@iue.tuwien.ac.at> writes: >> Hi Toby, >> >> > I don't have much expertise with MSVC, but I'm trying to build >>> pyviennacl, and I've got a couple of weird bugs. I've looked at the >>> source, but really have no idea what it's complaining about. Why can't >>> it resolve the type ambiguity here? >>> >>> 4>F:/src/viennacl/pyviennacl-dev/external/viennacl-dev\viennacl/linalg/bicgstab.hpp(149): >>> error C2668: 'fabs' : ambiguous call to overloaded function >>> 4> E:\Microsoft Visual Studio 11.0\VC\INCLUDE\math.h(118): could >>> be 'double fabs(double)' >>> 4> E:\Microsoft Visual Studio 11.0\VC\INCLUDE\math.h(516): or >>> 'float fabs(float)' >>> 4> E:\Microsoft Visual Studio 11.0\VC\INCLUDE\math.h(564): or >>> 'long double fabs(long double)' >>> 4> while trying to match the argument list '(CPU_ScalarType)' >> >> Which types did you pass in? This looks like you pass an integer type >> (e.g. viennacl::vector<int>), while BiCGStab only makes sense for >> floating point numbers. std::fabs(int) then is ambiguous. >> >> >>> And here, I wish I knew what class it actually thinks its assigning.. >>> >>> 4>F:/src/viennacl/pyviennacl-dev/external/viennacl-dev\viennacl/linalg/bicgstab.hpp(125): >>> error C2088: '-=' : illegal for class >>> >>> Does the following patch suffice? The code now builds with only the error >>> above, and I imagine the effect should be the same. >> >> The patch below introduces a temporary, which is not a great thing. >> Instead, we should find and fix the underlying reason why the initial >> code does not compile. Can you please provide more context (e.g. the >> full compiler output)? >> >> Best regards, >> Karli >> >> >> ------------------------------------------------------------------------------ >> Managing the Performance of Cloud-Based Applications >> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. >> Read the Whitepaper. >> http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk > > > ------------------------------------------------------------------------------ > Flow-based real-time traffic analytics software. Cisco certified tool. > Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer > Customize your own dashboards, set traffic alerts and generate reports. > Network behavioral analysis & security monitoring. All-in-one tool. > http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk > _______________________________________________ > ViennaCL-devel mailing list > ViennaCL-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > ------------------------------------------------------------------------------ Flow-based real-time traffic analytics software. Cisco certified tool. Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer Customize your own dashboards, set traffic alerts and generate reports. Network behavioral analysis & security monitoring. All-in-one tool. http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk _______________________________________________ ViennaCL-devel mailing list ViennaCL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/viennacl-devel