Hi Boost community, I've added new projects for the Google Summer of Code 2020 for the Boost uBlas library (matrix computations, tensors and linear algebra). If you're a student and wish to candidate, please contact me as soon as possible. The list of projects is here: https://github.com/boostorg/wiki/wiki/Google-Summer-of-Code%3A-2020 Cheers, David
On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
The list of projects is here: https://github.com/boostorg/wiki/wiki/Google-Summer-of-Code%3A-2020
Are you saying that Boost.uBlas will require C++20? Or does this mean it will just take advantage of select, relevant C++20 features when available, when doing so results in a meaningful benefit to users? Thanks
Excellent question. In fact, uBlas in mainly C++98 with a bit of C++11.
It's an old code base which need to be refreshed. So as you correclty
guessed, I want to bring in uBlas more modern C++ technology, up to C++20
and where they make sense.
Backward compatibility is important but I think we need to improve this
library anyway and C++98 is a bit ... huh... outdated now.
During the project, the student will have to prove that each feature brings
a real benefit, generally in term of speed as far as uBlas is concerned, or
in term of ease of implementation for example.
But if having "ranges" of "spaceships concepts" multiply the speed by 10,
then yes C++20 will be required. OK Just kidding :-D
On Fri, Mar 6, 2020 at 2:55 AM Vinnie Falco
On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
wrote: The list of projects is here: https://github.com/boostorg/wiki/wiki/Google-Summer-of-Code%3A-2020
Are you saying that Boost.uBlas will require C++20? Or does this mean it will just take advantage of select, relevant C++20 features when available, when doing so results in a meaningful benefit to users?
Thanks
Hi David,
Thank you for adding the projects ideas for Boost.uBlas. I am interested in
being a candidate for implementing Project 1: "Convert uBlas to C++20
technologies". I am currently reading the "C++ High Performance: Boost and
Optimize the Performance of your C++17 Code" book for coming up with ideas
to simplify the code base for uBlas. Please recommend any other resources
that I could use to broaden my understanding about C++20 features. The
second bullet under the project description mentions about improving the
speed of uBlas on single core, but doesn't mention any specific operations,
so are there any specific operations that you have in mind for optimizing?
Thank you for helping!
Regards,
Swornim Baral
On Fri, Mar 6, 2020 at 1:26 AM David Bellot via Boost
Excellent question. In fact, uBlas in mainly C++98 with a bit of C++11. It's an old code base which need to be refreshed. So as you correclty guessed, I want to bring in uBlas more modern C++ technology, up to C++20 and where they make sense. Backward compatibility is important but I think we need to improve this library anyway and C++98 is a bit ... huh... outdated now.
During the project, the student will have to prove that each feature brings a real benefit, generally in term of speed as far as uBlas is concerned, or in term of ease of implementation for example. But if having "ranges" of "spaceships concepts" multiply the speed by 10, then yes C++20 will be required. OK Just kidding :-D
On Fri, Mar 6, 2020 at 2:55 AM Vinnie Falco
wrote: On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
wrote: The list of projects is here: https://github.com/boostorg/wiki/wiki/Google-Summer-of-Code%3A-2020
Are you saying that Boost.uBlas will require C++20? Or does this mean it will just take advantage of select, relevant C++20 features when available, when doing so results in a meaningful benefit to users?
Thanks
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Hi Swornim, thanks for contacting me regarding the GSoC project. The C++20 project is part of a larger work on how we can modernize uBlas codebase. It's getting really old now, using concepts from C++98 essentially. It's pretty open and I wish students will be able to come with new ideas on top of it. Let's talk about what I have in mind off-line (email is the best as I'm based in Australia and a bit jet-lagged with respect to the rest of the world :-D ). Indeed, if we want to prove that upgrading uBlas to a new standard is necessary, we have to prove that even on a single core, we're doing things much faster. Of course, other are taking care of joining uBlas with OpenCL or GPU, etc... I think we can partly get rid of the complexity of expression templates by using the constexpr, move and other modern mechanisms much more now. Though expression templates are still very powerful and can also be imrpoved thanks to Boost::YAP (see Cem Bassoy's work) and the new STL library (starting from C++11 and up to C++20). Two major topics: 1- improve the single core speed of the library 2- make the code much more readable and extendable. The second point is of uttermost importance as we want to add a lot of new simple functions, ala R or Python/numpy. There are a lot of things I can do in one line in R, but I cannot in uBlas. It has to be very complicated. However, nothing prevents C++ of being as simple, especially, if we use more recent C++ techniques. So as you can see there is a lot to cover. I propose that you start writing the competency test and then you start working on your proposal. I will help you improving it (as I do with all the other motivated students. Competition is hard this year :-D )
From now on, let's take it off-line by email.
Cheers, David On Wed, Mar 11, 2020 at 10:29 AM swornim baral via Boost < boost@lists.boost.org> wrote:
Hi David, Thank you for adding the projects ideas for Boost.uBlas. I am interested in being a candidate for implementing Project 1: "Convert uBlas to C++20 technologies". I am currently reading the "C++ High Performance: Boost and Optimize the Performance of your C++17 Code" book for coming up with ideas to simplify the code base for uBlas. Please recommend any other resources that I could use to broaden my understanding about C++20 features. The second bullet under the project description mentions about improving the speed of uBlas on single core, but doesn't mention any specific operations, so are there any specific operations that you have in mind for optimizing? Thank you for helping!
Regards, Swornim Baral
On Fri, Mar 6, 2020 at 1:26 AM David Bellot via Boost < boost@lists.boost.org> wrote:
Excellent question. In fact, uBlas in mainly C++98 with a bit of C++11. It's an old code base which need to be refreshed. So as you correclty guessed, I want to bring in uBlas more modern C++ technology, up to C++20 and where they make sense. Backward compatibility is important but I think we need to improve this library anyway and C++98 is a bit ... huh... outdated now.
During the project, the student will have to prove that each feature brings a real benefit, generally in term of speed as far as uBlas is concerned, or in term of ease of implementation for example. But if having "ranges" of "spaceships concepts" multiply the speed by 10, then yes C++20 will be required. OK Just kidding :-D
On Fri, Mar 6, 2020 at 2:55 AM Vinnie Falco
wrote: On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
wrote: The list of projects is here: https://github.com/boostorg/wiki/wiki/Google-Summer-of-Code%3A-2020
Are you saying that Boost.uBlas will require C++20? Or does this mean it will just take advantage of select, relevant C++20 features when available, when doing so results in a meaningful benefit to users?
Thanks
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Am Mi., 11. März 2020 um 03:42 Uhr schrieb David Bellot via Boost < boost@lists.boost.org>:
Hi Swornim,
thanks for contacting me regarding the GSoC project. The C++20 project is part of a larger work on how we can modernize uBlas codebase. It's getting really old now, using concepts from C++98 essentially. It's pretty open and I wish students will be able to come with new ideas on top of it. Let's talk about what I have in mind off-line (email is the best as I'm based in Australia and a bit jet-lagged with respect to the rest of the world :-D ).
Indeed, if we want to prove that upgrading uBlas to a new standard is necessary, we have to prove that even on a single core, we're doing things much faster. Of course, other are taking care of joining uBlas with OpenCL or GPU, etc...
I agree. Let us first focus on the design and stability of ublas for single and maybe multi-core execution on CPUs.
I think we can partly get rid of the complexity of expression templates by using the constexpr, move and other modern mechanisms much more now. Though expression templates are still very powerful and can also be imrpoved thanks to Boost::YAP (see Cem Bassoy's work) and the new STL library (starting from C++11 and up to C++20).
Yes. Ashar's Boost::Yap addition, see wiki https://github.com/BoostGSoC19/tensor/wiki/Ashar's-Home, works fine but does not optimize tensor expressions as intended, e.g. transforming a tensor expression from a*a to 2*a. This is still an ongoing project which needs to be tackled. Second. Amit's refacturing of the tensor template, see wiki https://github.com/BoostGSoC19/tensor/wiki/Amit's-Proposal, will improve to modularize uBLAS and to better separate algorithms and data structures.
Two major topics: 1- improve the single core speed of the library 2- make the code much more readable and extendable.
Yes. IMO the focus should be on the 2nd point. I suggest to create our own fast single- and multi-core functions implementations once the new uBLAS data structures are stabilized.
The second point is of uttermost importance as we want to add a lot of new simple functions, ala R or Python/numpy. There are a lot of things I can do in one line in R, but I cannot in uBlas. It has to be very complicated. However, nothing prevents C++ of being as simple, especially, if we use more recent C++ techniques.
Agree. Once the basic functions are there, we can create Numpy/Matlab-like functions, e.g. cat, ldivide, rdivide, solve, qr, etc.
So as you can see there is a lot to cover.
I propose that you start writing the competency test and then you start working on your proposal. I will help you improving it (as I do with all the other motivated students. Competition is hard this year :-D )
Agree.
From now on, let's take it off-line by email.
Cheers, David
On Wed, Mar 11, 2020 at 10:29 AM swornim baral via Boost < boost@lists.boost.org> wrote:
Hi David, Thank you for adding the projects ideas for Boost.uBlas. I am interested in being a candidate for implementing Project 1: "Convert uBlas to C++20 technologies". I am currently reading the "C++ High Performance: Boost and Optimize the Performance of your C++17 Code" book for coming up with ideas to simplify the code base for uBlas. Please recommend any other resources that I could use to broaden my understanding about C++20 features. The second bullet under the project description mentions about improving the speed of uBlas on single core, but doesn't mention any specific operations, so are there any specific operations that you have in mind for optimizing? Thank you for helping!
Regards, Swornim Baral
On Fri, Mar 6, 2020 at 1:26 AM David Bellot via Boost < boost@lists.boost.org> wrote:
Excellent question. In fact, uBlas in mainly C++98 with a bit of C++11. It's an old code base which need to be refreshed. So as you correclty guessed, I want to bring in uBlas more modern C++ technology, up to C++20 and where they make sense. Backward compatibility is important but I think we need to improve this library anyway and C++98 is a bit ... huh... outdated now.
During the project, the student will have to prove that each feature brings a real benefit, generally in term of speed as far as uBlas is concerned, or in term of ease of implementation for example. But if having "ranges" of "spaceships concepts" multiply the speed by 10, then yes C++20 will be required. OK Just kidding :-D
On Fri, Mar 6, 2020 at 2:55 AM Vinnie Falco
wrote: On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
wrote: The list of projects is here: https://github.com/boostorg/wiki/wiki/Google-Summer-of-Code%3A-2020
Are you saying that Boost.uBlas will require C++20? Or does this mean it will just take advantage of select, relevant C++20 features when available, when doing so results in a meaningful benefit to users?
Thanks
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
participants (4)
-
Cem Bassoy
-
David Bellot
-
swornim baral
-
Vinnie Falco