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

Reply via email to