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