Re: [Boost-users] uBlas and Google Summer of Code 2020

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: [Boost-users] uBlas and Google Summer of Code 2020

Boost - Dev mailing list
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 <[hidden email]> wrote:

> On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
> <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: [Boost-users] uBlas and Google Summer of Code 2020

Boost - Dev mailing list
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 <[hidden email]>
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 <[hidden email]>
> wrote:
>
> > On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
> > <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: [Boost-users] uBlas and Google Summer of Code 2020

Boost - Dev mailing list
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 <
[hidden email]> 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 <
> [hidden email]>
> 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 <[hidden email]>
> > wrote:
> >
> > > On Wed, Mar 4, 2020 at 3:43 PM David Bellot via Boost-users
> > > <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: [Boost-users] uBlas and Google Summer of Code 2020

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

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

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost