Changes between Version 8 and Version 9 of SoC2014


Ignore:
Timestamp:
Jan 13, 2014, 3:02:39 PM (9 years ago)
Author:
Niall Douglas
Comment:

Added Boost.AFIO items

Legend:

Unmodified
Added
Removed
Modified
  • SoC2014

    v8 v9  
    1111 * multiple competing proposals for the same project.
    1212
    13 For projects involving new or experimental libraries, the process of getting source code "Boost-branded" can take much longer than a single summer. In many cases, it can take much longer than a single year. Even if a library is accepted, there is an expectation that the original author will continue to maintain it. Building a library as part of Boost can easily entail a multi-year commitment. For this reason, we are willing to //consider// multi-year GSoC projects. However, prospective students //must// limit the scope of their work to a single summer. We //may// invite the most successful students to re-apply in 2014.
     13For projects involving new or experimental libraries, the process of getting source code "Boost-branded" can take much longer than a single summer. In many cases, it can take much longer than a single year. Even if a library is accepted, there is an expectation that the original author will continue to maintain it. Building a library as part of Boost can easily entail a multi-year commitment. For this reason, we are willing to //consider// multi-year GSoC projects. However, prospective students //must// limit the scope of their work to a single summer. We //may// invite the most successful students to re-apply in 2015.
    1414
    1515== Requirements ==
     
    8888This project will by mentored by Christopher Kormanyos, and also supported by
    8989Paul Bristow and John Maddock regarding algorithmic expertise and Boost infrastructure.
     90
     91=== Boost.AFIO (proposed) Improvements ===
     92Proposed Boost.AFIO is a linear scalable, batch, chainable, asynchronous closure execution engine with an almost wait free implementation (it is wait free if the CPU supports memory transactions) extending Boost.ASIO and Boost.Thread specialised as a portable asynchronous file i/o implementation library. Proposed Boost.AFIO was successfully ported to Boost during GSoC 2013 by Paul Kirth, and entered the Boost peer review queue in October 2013. If it passes peer review, AFIO is thought likely to be the first C++ 11 only library to enter Boost. You can see AFIO's Boost documentation at https://ci.nedprod.com/job/Boost.AFIO%20Build%20Documentation/Boost.AFIO_Documentation and its current continuous integration buildbot status and source code at https://github.com/BoostGSoC/boost.afio (scroll to bottom for present CI buildbot status). You are encouraged to read the AFIO documentation '''extensively''' before writing a GSoC proposal, and ask questions on boost-dev where needed.
     93
     94There are some interesting work items extending AFIO which would be ideal for a summer student project:
     95
     961. POSIX async i/o support is limited to a threadpooled emulation. Proper support for Linux's kaio and POSIX's aio_* interfaces would be great. Note that these APIs are extremely tricky to get working right across all POSIX platforms, especially OS X. To propose this project the submitter would '''need''' developer access to Microsoft Windows, Linux, FreeBSD and preferably OS X. Difficulty level of this item is ''medium''.
     97
     982. Portable fast file locking which works across network shares, but can still utilise shared memory when possible. To propose this project the submitter would '''need''' developer access to Microsoft Windows, Linux, FreeBSD/OS X. Difficulty level of this item is ''medium''.
     99
     1003. Fast, scalable portable directory contents change monitoring. It should be able to monitor a 1M entry directory experiencing 1% entry changes per second without using a shocking amount of RAM.  To propose this project the submitter would '''need''' developer access to Microsoft Windows, Linux, FreeBSD/OS X. Difficulty level of this item is ''hard'', there are professional software engineers with over a decade of experience who would take several attempts to get this right (luckily you have an experienced mentor to help you!).
     101
     1024. AFIO is also a closure execution engine, and API conformance with the current [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3731.pdf Executors and Schedulers proposal before the ISO C++ standards committee] would be useful. I would also suggest bundling into this work item Fibers support such that both cooperative and preemptive threading models are supported. Difficulty level of this item is ''medium'' for those '''very''' comfortable with programming in asynchronous frameworks like WinRT, otherwise it is hard and very hard for some types of programmers who are not "async wired".
     103
     1045. By the time GSoC begins AFIO ought to have a finished async batch hash engine which provides SHA256, CityHash and SpookyHash. Additional hash implementations would be very useful. Before you think you can copy and paste in existing hash implementations, be aware that AFIO requires you to completely rewrite them into batch SIMD (SSE2, AVX and preferably ARM NEON) and implement considerable C++ metaprogramming to tell the compiler how to optimally assemble the implementation. Difficulty level of this item is ''hard'', but very suitable for low level type programmers who like writing in assembly but also like C++ metaprogramming. The batch hash engine can be seen at https://github.com/BoostGSoC/boost.afio/blob/content_hashing_merge/boost/afio/hash_engine.hpp, and an example of the SIMD programming you'd have to do at https://github.com/BoostGSoC/boost.afio/blob/content_hashing_merge/boost/afio/detail/impl/hashes/4-sha256/sha256-neon.c.
     105
     106This project would be mentored by Niall Douglas (http://www.nedprod.com/). Due to limits on free time, I would only be able to mentor one student this summer, and I generally provide a programming test based on AFIO to students whose have submitted proposals to ensure that their coding ability is minimally sufficient to be able to attempt a GSoC. Benefits for the student of a successful GSoC in this area are many: high performance async programming experience is very desirable in the marketplace right now, and getting your name attached to authorship of a Boost library is a shining bright light on a resume which will stand to your career for years to come. You will gain bleeding edge experience programming exclusively in C++11 across the main toolsets of Visual Studio, GCC and clang AND writing portable code for the main operating system platforms of Microsoft Windows, Linux, and BSD/OS X - again, all very desirable skills to have in the marketplace. For those of you looking at a career in computer science research, and depending on the success of your outcomes, you may even be able to pass peer review to present your work at the C++ Now conference held annually in May. Good luck with your GSoC applications!