Hi Karli, Karl Rupp <r...@iue.tuwien.ac.at> writes: > hmm, on the one hand users want to have the option of providing a > 'guess' for W and H, but on the other hand they should be warned if > their guess is bad.
Quite. > A single matrix-matrix product shouldn't be too bad here, particularly > as each iteration in nmf() takes several matrix-matrix products. This is true, but the fewer the better :) > Similar to the last fix you proposed in the follow-up email, what about > checking norm_frobenius(W) and norm_frobenius(H) to be positive and to > reinitialize them with all ones if not? This would fix the generic use case: > matrix<T> W(N, K); > matrix<T> H(K, M); > nmf(A, W, H, conf); In the end, I did exactly what you've described here :) Off-topic: I'm also getting compilation errors with the new pipelined bicgstab. I needed to include viennacl/traits/context.hpp in viennacl/linalg/bicgstab.hpp, but I also get the following. I don't know if I've messed something up, or whether something is missing: In file included from src/_viennacl/iterative_solvers.hpp:4:0, from src/_viennacl/iterative_solvers.cpp:1: external/viennacl-dev/viennacl/linalg/bicgstab.hpp: In function ‘viennacl::vector<ScalarType> viennacl::linalg::solve(const MatrixType&, const viennacl::vector<ScalarType>&, const viennacl::linalg::bicgstab_tag&, viennacl::linalg::no_precond)’: external/viennacl-dev/viennacl/linalg/bicgstab.hpp:133:9: error: ‘pipelined_bicgstab_prod’ is not a member of ‘viennacl::linalg’ viennacl::linalg::pipelined_bicgstab_prod(A, p, Ap, r0star, ^ In file included from src/_viennacl/iterative_solvers.hpp:4:0, from src/_viennacl/iterative_solvers.cpp:1: external/viennacl-dev/viennacl/linalg/bicgstab.hpp:153:9: error: ‘pipelined_bicgstab_update_s’ is not a member of ‘viennacl::linalg’ viennacl::linalg::pipelined_bicgstab_update_s(s, residual, Ap, ^ external/viennacl-dev/viennacl/linalg/bicgstab.hpp:160:9: error: ‘pipelined_bicgstab_prod’ is not a member of ‘viennacl::linalg’ viennacl::linalg::pipelined_bicgstab_prod(A, s, As, r0star, ^ external/viennacl-dev/viennacl/linalg/bicgstab.hpp:167:21: error: ‘accumulate’ is not a member of ‘std’ r_dot_r0 = std::accumulate(host_inner_prod_buffer.begin(), host_inner_prod_buffer.begin() + buffer_size_per_vector, ScalarType(0)); ^ In file included from src/_viennacl/iterative_solvers.hpp:4:0, from src/_viennacl/iterative_solvers.cpp:1: external/viennacl-dev/viennacl/linalg/bicgstab.hpp:168:21: error: ‘accumulate’ is not a member of ‘std’ As_dot_As = std::accumulate(host_inner_prod_buffer.begin() + buffer_size_per_vector, host_inner_prod_buffer.begin() + 2 * buffer_size_per_vector, ScalarType(0)); ^ external/viennacl-dev/viennacl/linalg/bicgstab.hpp:169:20: error: ‘accumulate’ is not a member of ‘std’ As_dot_s = std::accumulate(host_inner_prod_buffer.begin() + 2 * buffer_size_per_vector, host_inner_prod_buffer.begin() + 3 * buffer_size_per_vector, ScalarType(0)); ^ external/viennacl-dev/viennacl/linalg/bicgstab.hpp:170:21: error: ‘accumulate’ is not a member of ‘std’ Ap_dot_r0 = std::accumulate(host_inner_prod_buffer.begin() + 3 * buffer_size_per_vector, host_inner_prod_buffer.begin() + 4 * buffer_size_per_vector, ScalarType(0)); ^ external/viennacl-dev/viennacl/linalg/bicgstab.hpp:171:21: error: ‘accumulate’ is not a member of ‘std’ As_dot_r0 = std::accumulate(host_inner_prod_buffer.begin() + 4 * buffer_size_per_vector, host_inner_prod_buffer.begin() + 5 * buffer_size_per_vector, ScalarType(0)); ^ external/viennacl-dev/viennacl/linalg/bicgstab.hpp:172:20: error: ‘accumulate’ is not a member of ‘std’ s_dot_s = std::accumulate(host_inner_prod_buffer.begin() + 5 * buffer_size_per_vector, host_inner_prod_buffer.begin() + 6 * buffer_size_per_vector, ScalarType(0)); ^ external/viennacl-dev/viennacl/linalg/bicgstab.hpp:186:10: error: ‘pipelined_bicgstab_vector_update’ is not a member of ‘viennacl::linalg’ viennacl::linalg::pipelined_bicgstab_vector_update(result, alpha, p, omega, s, ^ Cheers, Toby -- Toby St Clere Smithe http://tsmithe.net ------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ ViennaCL-devel mailing list ViennaCL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/viennacl-devel