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. 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). 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. 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
