Changes between Version 1 and Version 2 of SoC2018


Ignore:
Timestamp:
Jan 17, 2018, 7:24:15 PM (5 years ago)
Author:
David Bellot
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoC2018

    v1 v2  
    55Welcome to the Boost C++ Libraries' home page for Google Summer of Code (GSoC) 2018. This page provides information about suggested student projects, proposal submission templates, advice on writing good proposals, and links to information on getting started writing with Boost.
    66
    7 === Quick summary of policies and processes for this year ===
    87
    9 After many extremely successful years of GSoC at Boost during which even some of the old timers have been wowed by the C++ code some of the students have brought us, we are minded to keep in place the more rigorous candidate selection process which involves preferentially selecting over all others every GSoC Boost candidate who takes a '''C++ programming aptitude test''' or provides links to at least 1,000 lines (excluding comments and whitespace) non-coursework C++ ''library'' (not application nor solution) open source code. Note if following the second route, code should have been open sourced at least three months ago, and show a log of commits improving the library over time.
     8This page has moved to a new location:
    109
    11 ==== What students should do now ====
     10[https://github.com/boostorg/boost/wiki/Boost-Google-Summer-of-Code-2018 PLEASE CLICK HERE TO GO TO THE NEW BOOST AND GOOGLE SUMMER OF CODE 2018 PAGE]
    1211
    13 1. Students should review the [wiki:SoCPrevious list of ideas from previous GSoCs] and the archives of [http://www.boost.org/community/groups.html#main the Boost developer's mailing list] relating to GSoC ('''tip:''' try searching boost-dev for subjects tagged ![gsoc17] or ![gsoc16] etc). [http://boost.2283326.n4.nabble.com/Boost-Dev-f2600599.html You may find this searchable archive of boost-dev useful].
     12[https://github.com/boostorg/boost/wiki/Boost-Google-Summer-of-Code-2018]
    1413
    15 2. If you wish to proceed, you need to join the Boost Developer's mailing list and find a mentor who will be an experienced Boost developer in one of the Boost libraries listed at http://www.boost.org/doc/libs/1_63_0/. Read [http://www.boost.org/community/policy.html the Boost Discussion Policy] in full, and once read in full go to http://lists.boost.org/mailman/listinfo.cgi/boost and subscribe.
    16 
    17 3. After as an absolute minimum reading all posts tagged '''![gsoc18]''', students should write a well researched and intelligent message with '''![gsoc18]''' at the front of the subject line to that developer's mailing list seeking a mentor, and be as flexible as possible in finding a topic that both they and the mentor is interested in upon which to base a GSoC project proposal text to be submitted to Google.
    18 
    19  As a general rule, a well written and researched proposal to extend or improve an existing mature Boost library is likely to be much better received that student originated ideas for new libraries or facilities.
    20 
    21 4. Once a potential mentor and project idea is found, the student must write a project proposal which should follow [wiki:SoCSubmissionTemplate this submission template].
    22 
    23 Potential mentors may add precanned project ideas with programming competency tests to this page below as GSoC approaches. These may prove useful in starting a discussion with potential mentor(s) '''whom the student should approach directly'''.
    24 
    25 === Github's for standalone GSoCs past and present ===
    26 
    27 Since 2013 with Boost's transition to git we have kept a single umbrella org on github for those GSoCs which are fairly self standing. Incremental extensions to existing libraries usually enter that library's main git repo as an experimental branch. Here are those orgs:
    28 
    29 * GSoC 2013: https://github.com/BoostGSoC13
    30 * GSoC 2014: https://github.com/BoostGSoC14
    31 * GSoC 2015: https://github.com/BoostGSoC15
    32 * In 2016 Boost's GSoC application was rejected by Google, [http://lists.boost.org/boost-announce/2016/04/0468.php so we ran a "Boost Summer of Code" instead].
    33 * GSoC 2017: https://github.com/BoostGSoC17
    34 * This year's GSoC will be housed at https://github.com/BoostGSoC18
    35 
    36 Students may find examining past GSoC source code and commit histories of use.
    37 
    38 === Historical GSoC Ideas pages for years 2006 to now ===
    39 
    40  * 2017 [wiki:SoC2016 Project Ideas]
    41  * 2016 [wiki:SoC2016 Project Ideas]
    42  * 2015 [wiki:SoC2015 Project Ideas]
    43  * 2014 [wiki:SoC2014 Project Ideas]
    44  * 2013 [wiki:SoC2013 Project Ideas]
    45  * 2012 [wiki:SoC2012 Project Ideas]
    46  * 2011 [wiki:SoC2011 Project Ideas]
    47  * 2010 [wiki:SoC2010 Project Ideas]
    48  * 2009 [wiki:soc2009 Project Ideas]
    49  * 2008 [http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Google_Summer_Of_Code_2008 Project Ideas]
    50  * 2007 [http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Google_Summer_Of_Code_2007 Project Ideas]
    51  * 2006 [http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Google_Summer_Of_Code_2006 Project Ideas]
    52    [http://www.boost.org/community/gsoc_2006_boost_overview.html An overview of Boost participation in Google Summer of Code™ 2006].
    53 
    54 = Suggested GSoC project proposals =
    55 
    56 '''[wiki:GSoCIdeaTemplate To any potential mentor adding a proposal HERE please use this template]'''
    57 
    58 === 1. Boost.uBLAS: linear algebra and matrix computations ===
    59 Potential mentor: David Bellot
    60 
    61 All projects with Boost.uBLAS requires knowledge of C++11/14/17.
    62 
    63 ==== Background ====
    64 uBLAS is a library for linear algebra and matrix computations. Using recursive templates, it allows the compiler to optimize any complex linear algebra expressions as if it were written by hand by the programmer. Basic classes are matrix and vector. The library has all the basic functionalities and a few standard algorithms. We would like to improve the functionality of this library by adding new algorithms and functionality especially in the field of data analysis and machine learning.
    65 
    66 ==== PROJECT 1 : Add Multicore and GPU computations to uBLAS ====
    67 
    68 The project description is simple: add support of multicore parallel and GPU computations to uBlas ! The realization is not straightforward though.
    69 Boost supports parallel/GPU computations thanks to the Boost.Compute library (http://www.boost.org/doc/libs/1_63_0/libs/compute/doc/html/index.html). Boost.uBlas is CPU only. If the compilers is able to vectorize, uBlas can take benefit of it. Here we want to extend Boost to the support of parallel architecture and GPU computations to enable it to do big data or deep learning computations.
    70 
    71 The student will have to first understand how ublas works and how it generates and optimizes code with the expression template mechanism and then start adding options to enable the use of Boost.Compute. Test will be done on multicore systems and graphics card or computers which support Boost.Compute (through OpenCL for example).
    72 
    73 We expect to see the basic matrix operations to be implemented like this. The code will have to be thoroughly documented and a tutorial document provided. We prefer quality of the implementation to exhaustivity.
    74 
    75 For exceptionally good and fast students, extensions to support other library will be considered, like nVidia CUDA for example.
    76 
    77 In other words it will have to be clean and super fast !
    78 
    79 ==== Programming competency test ====
    80 
    81 Implement a small library in C++ using expression templates and modern C++11/14/17 features like generic lambdas to:
    82 1. represent a matrix of numerical types (int, long, float, double, complex,....)
    83 2. compute algebraic expressions including + and *
    84 3. add support for GPU or OpenCL
    85 3. fit in one header file
    86 
    87 '''[wiki:GSoCIdeaTemplate To any potential mentor adding a proposal HERE please use this template]'''