Boost logo

Boost :

From: Cem Bassoy (cem.bassoy_at_[hidden])
Date: 2020-03-27 14:29:52


Am Mi., 11. März 2020 um 03:42 Uhr schrieb David Bellot via Boost <
boost_at_[hidden]>:

> 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_at_[hidden]> 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_at_[hidden]>
> > 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 <vinnie.falco_at_[hidden]>
> > > wrote:
> > >
> > > > On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
> > > > <boost-users_at_[hidden]> 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
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk