Saturday 26 December 2015

What is GSoC ?

Details about Google Summer Of code(GSoC)

what is GSoC?
Google Summer of Code (GSoC) is a program that matches  mentoring organizations with college and university student developers who are paid to write open source code. Each year, Google works with many open source, free software and technology-related groups to identify and fund proposals for student open source projects.
GSoC pairs accepted student applicants with mentors from participating projects. Accepted students gain exposure to real-world software development and an opportunity for employment in areas related to their academic pursuits. In turn, participating organizations are able to identify and bring in new developers more easily. Best of all, more source code is created and released for the use and benefit of all; all code produced as part of the program is released under an open source license.
This program has brought together thousands of students and mentors from over 100 countries worldwide. At the time of writing, over 200 open source projects, from areas as diverse as operating systems and community services, have participated as mentoring organizations for the program. Successful students have widely reported that their participation in GSoC made them more attractive to potential employers and that the program has helped greatly when embarking on their technical careers. This is the summer internship sponsored  by  Google.

Goals of the Program

The program has several goals:
  • Get more open source code written and released for the benefit of all.
  • Inspire young developers to begin participating in open source development.
  • Help open source projects identify and bring in new developers.
  • Provide students the opportunity to do work related to their academic pursuits during the summer: "flip bits, not burgers."
  • Give students more exposure to real-world software development (for example, distributed development and version control, software licensing issues, and mailing list etiquette).


What is student criteria ?
A student participating in GSoC is typically a college or university student;  the only academic requirement is that the accepted applicants should be enrolled in an accredited academic institution. Students must also be at least 18 years of age in order to participate. Students come from a variety of academic backgrounds, and though most students are enrolled in a Computer Science program there is no requirement that they be studying CS; past student participants in GSoC have come from disciplines as varied as Ecology, Medicine, and Music.
Students submit project proposals to the various organizations participating in GSoC. The organizations select which student proposals they would like to see funded by Google.

Selecting a Student

There are some student qualifications that are important for any successful GSoC experience. The student needs to be highly technically skilled, needs to have good communication skills, and needs to be a hard worker with sufficient available time to succeed. The entire selection procedure take place on this platform- https://www.google-melange.com/gsoc/homepage/google/gsoc2016
They select students on the basis of their contribution,interview performance & the proposal detailed about project’s implementation.


Types of Synchronizations

To avoid the race conditions in Parallel Programming there are two types of synchronizations between threads (Process).
1). High Level Synchronizations.
2).  Low Level Synchronizations.

  These kind of methods are useful for the shared memory computers.

Difference between High and Low Level Synchronizations

  Low level synchronizations affects one thread only where high level synchronizations affects many threads.

1. High Level Synchronizations Types

- Critical
  What critical does is mutually exclusion. The idea is to create one critical section, and this section can only executes one thread at a time. If one thread already code of that section then thread will wait until it completes the execution.

Atomic Access
  In programming, an atomic action is one that effectively happens all at once. An atomic action cannot stop in the middle: it either happens completely, or it doesn't happen at all. No side effects of an atomic action are visible until the action is complete. The atomic access is need for the general binary operations like a++, because it  does not describe an atomic action. Declaring an block of code atomic guarantees that operations made on the variables occur in an atomic fashion, i.e., that all of the substeps of the operation are completed within the thread they are executed and are not interrupted by other threads.

Barrier
  Barrier is the point in program at which threads stop and wait. When all the threads have reached the barrier, they can proceed. Synchronization barriers are useful for phased computations, in which threads executing the same code in parallel must all complete one phase before moving on to the next. Example - Suppose you have a null array of size 100. Your system can make only two threads to write data and to shift the data on the left side. So first of all you divide the array between two threads to write the data and then put the barrier on it to complete the phase of read data. After that if both the thread reach at the same barrier point then only able to shift the data.

Ordered
  Every execution has a synchronization order. A synchronization order is a total order over all of the synchronization actions of an execution. For each thread t, the synchronization order of the synchronization actions in t is consistent with the program order of t.

2. Low Level Synchronizations

- Flush
  Used to make a thread's view of shared data consistent with main memory. Shared data are stored in main memory locations that are supposed to be accessible by all threads. The modified data has to be stored in main memory before the flush can complete, and unchanged data has to be read again from the main memory after the flush is complete. Flush allows us to keep memory consistent in a cross platform way.

- Locks