-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Reading through the document, I found the following unclear or possibly wrong things:
- On page 4, in exercise 3 the matrix
Ais defined but not used until after exercise 4 in theMatrixFileReaderexamples. - On page 5, in the snippet
grb::utils::MatrixFileReader< double > parser( in, true );it is unclear of what typeinshould be. - In section 3.4 (Numerical Linear Algebra), it would probably be much clearer to include arguments in the functions e.g.
grb::dot( grb::Vector<T> u, grb::Vector<T> v )instead ofgrb::dot grb::eWiseAddandgrb::eWiseMulare suggested in the guide, but are deprecated in the documentation. (this could be a separate issue)- At the end of page 7 there is the sentence: "Different from
grb::set, thegrb::mxvis an in-place operation". The phrase is possibly unclear, as . It is probably more clear to remark that all operations are in-place unless otherwise stated (such asgrb::set). - When introducing
grb::set, it is not clear that it does not allocate additional memory, but it just changes default values (so it can be used instead ofgrb::clearwithout performance penalties). - On page 8 there is a
grb:set(missing a second colon); - On page 8, it is said that "the primitives explained above takes a mandatory semiring argument'. But in the documentation the semiring parameter has a default value.
- In exercise 8, point 2 is "use
grb::setandgrb::setElementto assign values (see below for a suggestion);". But as far as I understand, these functions cannot be used to initialize a matrix with multiple different values. For that other functions are needed. - On page 9, it is said that "A semiring is a combination of a multiplicative operator and an additive monoid." For someone with a mathematical background this sentence seems just wrong. I think it is better to clarify that the additional properties (e.g. distributive property) are not always required in ALP.
- About
grb::apply, on page 10 it is said that "The functiongrb::apply(z, x, op)applies a given unary functor op to each element of vector (or matrix)x". But it seems that the most important aspect ofgrb::applyis keeping track of data dependencies.
Additionally in the middle of the paragraph there are examples of usinggrb::eWiseApply, but nowhere is it clarified the difference between the two (for example why they cannot be overloaded). - On page 10, there is a
grb::apply(z, x, grb::operators::add<double>(), 5.0). The order of arguments seems just wrong. It should begrb::apply(z, x, 5.0, grb::operators::add<double>() ). - There are some wild c++17 in the installation/building instructions. I guess everything should be c++11
Metadata
Metadata
Assignees
Labels
No labels