Hi On Sat, Mar 11, 2017 at 5:29 PM, Biddiscombe, John A. <[email protected]> wrote:
> Ashkay > > > > Sorry for not replying previously – away on travel. > > > > > So how can I start? > > > > Well, for your benefit – and for the others who have shown some interest > in the project … > > > > What’s the purpose of the gsoc project? We work on HPX and come across > problems we need to solve. For example, trying to convert some TBB software > to use HPX instead, and find that there are some concurrent classes we > don’t have drop in replacements for, so we make a note that when we have > some time, we should look into it again. Unfortunately, the time to work on > some of these projects never materializes, but there are recurring themes > that come up again and again and the need for certain things like a > concurrent vector or map become more pressing. When time for gsoc comes > around, we remember these projects and think they’d be perfect for a > student to spend a few months on and help out in a genuinely useful way. > > > I'm fairly new to concurrency implementations but I've started with some examples. I've just started reading about concurrency models in C++. I've also started reading the hpx code and the issues you have pointed to. The HPX documentation is really helpful. > Ideally, we want lockfree, super fast, easy to use containers and if > necessary algorithms to go with them. It turns our writing concurrent > classes like these isn’t a trivial job and making lockfree containers is a > tough challenge even for experienced developers who’ve been working on > thread safe code for years. We’ve started work on concurrent structures in > the concurrent branch and in the verbs parcelport I made a map that allows > multiple readers or a single writer using a spinlock for protection (links > below). It’s good enough when you are mostly reading and occasionally > writing to it. Another similar problem is an enumerable_thread_specific > class that exists in TBB, but a simple implementation in HPX I made gave > bad performance due to what I assume was false sharing due to cache problem > (gist link below). I didn’t have time (yet) to investigate this further, > but it’d be great if a student did). > > > I can try and investigate as a starting point as this could be a great learning experience for me. Sad that intel TBB isn't open source anymore. Ideally someone would spend a bit of time looking on the web and finding > that there are many many other implementations of other lockfree structures > out there. We use boost lockfree already so the ones in there are covered. > Unfortunately, it’s hard to find open source implementations of other > classes that are boost license compatible (we use boost license in HPX), so > we can’t just take some of the other code and use it – though in some cases > contacting the author and asking if they would relicense it with a boost > license works - the vector in the concurrent branch came from another > project, but it hasn’t been tested fully and debugged and might have awful > performance – we’d like someone to clean it up and finish it off. > > > > So what we need is someone to look at the algorithms that are ‘out there’, > see if any code exists we can use, if not write new implementations of as > many useful classes as possible. Create tests for them, profile and > benchmark them. Find out if the lockfree ones really are better than the > lock based ones (assuming you use hpx spinlocks and not std::mutex based > locks). Try them out in different example applications – look through the > hpx source and see if any of the existing code using lockfree structures > can be improved with new classes (the schedulers for example need to be > thread safe and use queues etc and we can help tell you where to look). > > > > We want a student who can write a proposal that demonstrates that he/she > knows what they’re doing, knows where to look, and has an idea of how to > test and benchmark the code, experiment with hpx to see if any significant > performance improvements can be made and put together a plan that covers > the gsoc period. We’re here to help and several of the HPX developers will > be willing to steer you in the right direction once you get going. > > > I'm still learning and experimenting with the hpx so I will try and formulate ways to test and benchmark the code. > Hope this helps > > > > JB > > > > Concurrent branch : https://github.com/STEllAR- > GROUP/hpx/commits/concurrent_data_structures > > Issue : https://github.com/STEllAR-GROUP/hpx/issues/2235 > > Readers/writer mutex : https://github.com/STEllAR- > GROUP/hpx/blob/master/plugins/parcelport/verbs/readers_writers_mutex.hpp > > Concurrent map : https://github.com/STEllAR-GROUP/hpx/blob/master/plugins/ > parcelport/verbs/unordered_map.hpp > > TBB : https://www.threadingbuildingblocks.org/docs/help/reference/thread_ > local_storage/enumerable_thread_specific_cls.html > > And https://gist.github.com/biddisco/b9a7b1a4e006e928ae1c6f4032aaff79 > > > > > > > > > > > > *From: *<[email protected]> on behalf of Akshay Rawat > <[email protected]> > *Reply-To: *"[email protected]" <[email protected] > > > *Date: *Wednesday, 8 March 2017 at 17:59 > *To: *"[email protected]" <[email protected]> > *Subject: *[hpx-users] [gsoc17] Getting started Concurrent Data structure > Support project > > > > Hi All, > > > > My name is Akshay Rawat, I'm currently pursuing my master's in computer > science at University of Florida. This is my first time as an open source > contributor and I look forward to doing more. > > > > Prior to pursuing higher education I've had been a C++ developer for 2 > years where I've had a lot of experience in using a Boost libraries and C++ > STL, (to the point of writing wrappers on top of STL data structures to > suit the usage of STL data structures with pointers). > > > > I've been doing a project with a professor at my university on weather > radar systems which involves C++ HPC and I stumbled on the same issue of > not being able to use the STL data structures for the project (not being > thread safe). > > > > Thus I've become really interested in contributing to Concurrent Data > structure Support project as i would really like to create thread safe > versions of the STL containers I use very frequently. So how can I start? > > > > > > > > with regards, > > Akshay Rawat > > > > _______________________________________________ > hpx-users mailing list > [email protected] > https://mail.cct.lsu.edu/mailman/listinfo/hpx-users > >
_______________________________________________ hpx-users mailing list [email protected] https://mail.cct.lsu.edu/mailman/listinfo/hpx-users
