2014 Google Summer of Code students present their projects
From 23 to 26 October, the delegates from each successful participating organization in 2014 Google Summer of Code were invited to Google for a reunion, to greet, collaborate, and code. The CERN PH/SFT group was there as well, having participated for a fourth year in the programme.
As in previous years, students were involved in projects strongly linked to some of the main open source packages developed by the SFT group, namely: CERN’s Virtual Machine and ROOT. CernVM and CernVM-FS provide a uniform runtime environment based on Scientific Linux, while ROOT provides a basic framework that offers a common set of features and tools for all domains of High Energy Physics computing.
The software stack is fully open sourced; many parts of it are used outside the world of particle physics, as in simulating medical physics detectors for medical imaging or estimating the dose deposited in the sensitive electronics of satelites as they fly through the earth's radiation belts.
Meet some of this year's students and learn more about their projects:
Qiuchen Xie - Reengineer Propagation of Charged Tracks in a Electromagnetic Field
Mentors: Sandro Wenzel, John Apostolakis
Quichen Xie, a student from China attending Coe College, worked on the propagation of charged particles in the simulation toolkit Geant4. The goal was to speed up this time consuming, critical component. He created a new implementation, using template techniques, of key existing classes. He was able to get exactly the same numerical results while speeding up this part of tracking by 10%. Quichen's work is being included in the upcoming release 10.1 of Geant4.
Anirudha Bose - Cling bundle for most popular platforms
Mentor: Vassil Vassilev
Anirudha Bose, a Computer Science student in Bhubaneswar, India, worked on the packaging system of the C++ interpreter. He showed remarkable skills in building platform-independent tools for continuous integration and packaging. His work simplified the build and the installation procedure, making Cling more attractive to the open source community. He implemented a Python script, which can produce a platform-recommended installable. Currently Windows, Unix and MacOS installers are supported. Anirudha learnt how to 'survive' in non-unix environments and improved his python coding skills.
Omar Andres Zapata Mesa: Complete ROOT — R interface
Mentor: Lorenzo Moneta
Omar Zapata, a Computer Science student from Medellin, Columbia, worked on developing an interface between ROOT and R, a software framework for statistical computing. With his work it is now possible to use the very large set of statistical tools present in R inside ROOT and with data stored in ROOT objects. These tools which include some of the latest algorithms developed by the statistics and computing research community. Omar wrote classes which perform the translation from the ROOT objects to R objects in order to call R functions and to return the result to ROOT in order to visualize or store it. His work is available as a public, dedicated branch of ROOT in github; in the near future it will be migrated in the ROOT main branch. More information is available at http://root.cern.ch/drupal/content/how-use-r-root-root-r-interface
Khermans NAME; R/ROOT Interfacing and Data Analysis Programming
Mentor: Lorenzo Moneta
Kirby Hermansen, a physics student from Notre Dame University, Indiana, worked in extending the work of Omar Zapata, the ROOT-R interface, by developing a specific plug-in for function minimization using R. In this way users can fit and minimize functions in ROOT using R code for minimization, using a simple configuration command - without writing any additional code. This project demonstrates the possibilities of the ROOT-R interface. Kirby developed the code implementing the ROOT Minimizer interface using the "optim" package from R and the translation classes developed by Omar Zapata.
Manasij Mukherjee - Cling Name Autodetection and Library Autoloading
Mentor: Vassil Vassilev
Manasij Mukherjee, a student in St. Xavier's College, India, worked on finding a robust technique to represent the associations between C++ header files and their corresponding libraries. The prototype implementation was in the context of ROOT's new C++ interpreter - Cling. Manasij managed to extend the project and introduce an optimization technique, which helps to reduce the memory footprint of loaded header files associated with dynamic shared objects. His achievement helped to decrease significantly the memory usage of the ROOT6 framework. Alongside with the impressive results, Manasij learn in depth C++, compiler construction and STL.
Martin Vasilev - Implement Automatic Differentiation library using Cling
Computer science student Martin from the University of Plovdiv, Bulgaria, continued the development of our automatic differentiation library - Clad. He showed exceptional skills in C++ and compiler construction, by solving a few non-trivial conceptual problems in the project. He implemented code generation of the differentiated functions. He added support for differentiation of function templates, functor objects and virtual methods. Martin brought Clad into a stage, ready for integration in the C++ interpreter cling and ROOT6. Some of his results were presented at ACAT 2014 and in Lawrence Berkley National Lab. He enhanced his C++11 and metaprogramming skills.
Jon Goodrum - Optimization of Jet Clustering Algorithms for the LHC at CERN
Mentors: Peter Elmer, Sal
Jon Goodrum, a student from the University at Buffalo, State University of New York, worked on the "fastjet" clustering software. This is an open-access software package that performs nearest-neighbor clustering on detector signals, forming "jets" of particles that correspond to strongly-interacting products of particle collisions. Jon was tasked with introducing parallel computing to the software, and wrote a thread manager for a multithreaded approach to the problem.
Moonis Javed - SixDesk library for managing massive SixTrack simulations
Riccardo De Maria
Moonis, a computer science student from Jamia Millia Islamia contributed to a new foundation of SixDesk a complex simulation environment. SixDesk prepares and split massive simulation of particle beams in accelerator in smaller units to be sent to CERN cluster or the volunteering computing platform LHC@Home. As the computing resources increase our data structures based on the filesystem did not scale anymore and a new system using SQLite databases and Python has been put in place. The new software is in production for LHC simulations covering the post-processing functionality and steadily growing in covering exiting features and brand new developments that take advantage of the enhanced flexibility. For more details see cern.ch/sixtrack and github.com/SixTrack/SixDesk.
Kartikeya Singh - API for partical tracking and refactoring of existing module using the API
Mentor: Riccardo De Maria
Kartikeya majoring computer science in the National Institute of Technology Raipur, India contributed to the C porting of the tracking engine of SixTrack, a code that simulate the trajectory of single charge particles for milions of turns inside accelerators like the LHC without introducing significant numerical artificacts. The project is set in the framework of a long term refactoring that aims at the rewriting the numerical model implemented in an old style Fortran code in portable libraries. Kartikeya translated the tracking models for most frequent beam line elements and shown that the resulting library can be used by the exiting legacy code. We expect to continue the development by a careful validation of the numerical properties of the new code and a second iteration on the data structures used by the library. For more details see cern.ch/sixtrack and github.com/SixTrack/SixTrackLib.
Gayatri Nesarikar - Streamline CernVM Contextualization Plug-ins
Mentor: Ioannis Charalampidis
Gayatri Nesarikar, a Computer Engineering Student in the University of Mumbai helped CernVM team with the task of streamlining the contextualization process of the CernVM Virtual Appliance. Over the years, the accumulated legacy contextualization code in the boot process was becoming difficult to maintain. Gayatri took care of streamlining this process and adapting it to the new version of micro-CernVM. The result was a clean and easy to maintain contextualization process along with a complete documentation. Gayatri was a fast learner and familiarized herself with the codebase in no time. In addition to her great work she improved her linux skills.
Filip Nybäck - Support for profiling on ARMv8 in the IgProf application profiler
Mentor: Giulio Eulisse
Filip Nybäck, a Computer Science student from Aalto University in Helsinki, carried out a project on improving the support for ARM in the IgProf application profiler under the supervision of Giulio Eulisse. Power density limitations in computer processors is currently driving interest in alternative architectures like ARM, which is currently dominant in the mobile computing market. Having a cross-platform tool for understanding where applications spend their time is extremely useful to do comparisions between ARM and the more traditional x86 processors. This required Filip to understand and implement changes in IgProf to take into account the different instruction set used by the ARM processor. He also added "fast path" traceback capabilities for ARM to the open source libunwind package, used by IgProf, such that profiling applications is as fast as possible. Finally, he had time at the end of the summer to integrate the use of the Performance Application Programming Interface (PAPI) into IgProf, and used this to add a capability to profile how processor energy is spent by a program. This work was presented in an ACAT paper and has led to a continuing collaboration between Giulio and Filip's group from Aalto.
After the remarkable success of these projects, as well as the previous successful participation of SFT in GSoC, the organizers are eagerly looking forward to the 2015 GSoC.