GSoC 2012 Multithreading ajreddy: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
No edit summary
m (Protected "GSoC 2012 Multithreading ajreddy" ([edit=sysop] (indefinite) [move=sysop] (indefinite)))
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:GSOC]][[Category:GSOC_2012]]
[[Category:GSOC_2012]][[Category:GSOC_2012_Proposals]]


GSoC 2012 Project : Rendering and Multithreading
GSoC 2012 Project : Rendering and Multithreading
Line 6: Line 6:


==Short description:==
==Short description:==
Scribus is a widely used application.It's actually nice and speedy.But a toggle from display to other mode is very very slow. Loading of large document for the first time takes too much time. The aim of this project is to prepare preview with multi-threading. The idea is to fill the cache with worker threads and let the render thread use a dummy or previous version as long as the results aren't ready.
Scribus is a great DTP application which is used to print many magazines and books. And a lot of these books contain many images. But loading of books/document for the first time takes much time. Reloading time of documents takes reasonable time (It gets the images from the cache).
Moreover toggle from display to other modes is also slow. The idea of this project is to prepare preview images using multithreading. The idea is to fill the cache by worker threads and let the render thread use a dummy or previous version of the image.


I sincerely apologize for this. Actually i started very late. I will complete my proposal in two days.
Success Stories: http://wiki.scribus.net/canvas/Category:Success_Stories


==Problem Description :==
As the loading of images and their conversion to low resolution consumes a lot of time, the image cache helps to massively speed up the loading of images that have been previously loaded under the same conditions. It will also speed up operations like undoing or redoing image effects.The image cache was designed to be accessible simultaneously by multiple instances of Scribus. So we can implement generating image previews with MultiThreading.


* A worker thread will be written which generates the preview for the images using QtConcurrent to make use of multicore Cpu's.
* A render thread will be written which uses a dummy or previous version of image until cache is ready.


Ale has put up a new idea "Rendering and Multithreading" on the ideas page.
==Implementation Details :==
I sincerely apologize for this. Actually I started applying(preparation) for gsoc very late.I will update this in one day.


http://wiki.scribus.net/canvas/GSoC_2012_Ideas
==Contingency :==


Imo  its a very good idea, but i think it needs a clearly defined scope. The  whole code base of Scribus cannot be converted to use  multithreading  within GSoC ( around 3 months ), so i am creating this  page, to decide  on the parts of Scribus that need Multithreading to be  done first.
This project might be completed before gsoc. Then i will start implementing the following features using multithreading


Please suggest on what all fields it should cover keeping in mind the time duration of project.
1) DocumentChecker (specialy for checking for issues in text frames)


This  project though it can be extended and the process continued after  GSoC,  but Google needs us to have a definite scope that can be  completed in  the given time.
2) output/printing


SCOPE : ( I am leaving this empty as of now )
3) image effects
1)
 
2)
Remaining things i will try to complete after gsoc one by one.
.
 
.
==Timeline :==
My college exams get over by the last week of April. And i will start working on the Project from first week of May.
 
GSoC is a full time work and i am going to spend atleast 35 hr a week for the project.
 
Till May 20 : Go through the scribus code and get familiar with it and prepare rough plan(code) for the project.
 
Official GSoC start date : May 21
 
May 21 - May 31  : Implementing a render thread to fetch images from cache, uses dummy or previous image until it is not ready
 
June 1 -  June 25 : Implementing worker thread to generate previes
 
June 26 - July 8 : Extensive testing and code improvements
 
July 9 : Mid Term Evaluation begins.
 
July 10 -  August 3 : Multithreading for Image effects
 
August 3 onwards : Spare time for any difficulties, Integration into Scribus Trunk.
 
August 13 - Suggested Pencils down date.
 
 
==After GSOC :==
 
I am highly motivated and interested in working for Scribus even after GSoC. I will continue working with the Scribus team,
fixing bugs, and also on some of the specific projects i am interested in.
 
    '''Speeding up Scribus'''
    Using Multithreading. http://wiki.scribus.net/canvas/Multitherad_%28Project%29
    I would like to use Qtconcurrent for the multithreading.   
    * relayouting whole document after doc->invalidateAll
    * relayouting visible area in low zoom level (multiple pages visible)  
    * search&replace for whole document & updating markers
 
==Biography :==
 
I am Janardhan Reddy, second year Undergraduate Student in Computer Science from Vijayawada, India.
 
I study at Indian Institute of Technology Madras, one of the most prestigious institutions in the Engineering field in India.
 
I have a sound knowledge and experience in  C++ ,kde and Qt.
I have submitted 8-10 patches in dolphin in kde and got them committed.
 
I have already ported kipi plugins in kde to use threadweaver (kde counterpart of QtConcurrent) for parallel processing. I have also implemented a base class through which kipi plugins can take advantage of multi core cpu's. (All one needs to do is to subclass this class)
 
I have also contributed for Yakuake
 
==Contact Information :==
 
Student : Janardhan Reddy A
 
Email ID : annapareddyjanardhanreddy@gmail.com
 
Freenode irc nick : Janardhan
 
Location : Vijayawada, India ( UTC + 530 )

Latest revision as of 20:20, 20 April 2012


GSoC 2012 Project : Rendering and Multithreading

Email: annapareddyjanardhanreddy@gmail.com

Short description:

Scribus is a great DTP application which is used to print many magazines and books. And a lot of these books contain many images. But loading of books/document for the first time takes much time. Reloading time of documents takes reasonable time (It gets the images from the cache). Moreover toggle from display to other modes is also slow. The idea of this project is to prepare preview images using multithreading. The idea is to fill the cache by worker threads and let the render thread use a dummy or previous version of the image.

Success Stories: http://wiki.scribus.net/canvas/Category:Success_Stories

Problem Description :

As the loading of images and their conversion to low resolution consumes a lot of time, the image cache helps to massively speed up the loading of images that have been previously loaded under the same conditions. It will also speed up operations like undoing or redoing image effects.The image cache was designed to be accessible simultaneously by multiple instances of Scribus. So we can implement generating image previews with MultiThreading.

  • A worker thread will be written which generates the preview for the images using QtConcurrent to make use of multicore Cpu's.
  • A render thread will be written which uses a dummy or previous version of image until cache is ready.

Implementation Details :

I sincerely apologize for this. Actually I started applying(preparation) for gsoc very late.I will update this in one day.

Contingency :

This project might be completed before gsoc. Then i will start implementing the following features using multithreading

1) DocumentChecker (specialy for checking for issues in text frames)

2) output/printing

3) image effects

Remaining things i will try to complete after gsoc one by one.

Timeline :

My college exams get over by the last week of April. And i will start working on the Project from first week of May.

GSoC is a full time work and i am going to spend atleast 35 hr a week for the project.

Till May 20 : Go through the scribus code and get familiar with it and prepare rough plan(code) for the project.

Official GSoC start date : May 21

May 21 - May 31  : Implementing a render thread to fetch images from cache, uses dummy or previous image until it is not ready

June 1 - June 25 : Implementing worker thread to generate previes

June 26 - July 8 : Extensive testing and code improvements

July 9 : Mid Term Evaluation begins.

July 10 - August 3 : Multithreading for Image effects

August 3 onwards : Spare time for any difficulties, Integration into Scribus Trunk.

August 13 - Suggested Pencils down date.


After GSOC :

I am highly motivated and interested in working for Scribus even after GSoC. I will continue working with the Scribus team, fixing bugs, and also on some of the specific projects i am interested in.

   Speeding up Scribus 
   Using Multithreading. http://wiki.scribus.net/canvas/Multitherad_%28Project%29
   I would like to use Qtconcurrent for the multithreading.    
   * relayouting whole document after doc->invalidateAll 
   * relayouting visible area in low zoom level (multiple pages visible) 
   * search&replace for whole document & updating markers 

Biography :

I am Janardhan Reddy, second year Undergraduate Student in Computer Science from Vijayawada, India.

I study at Indian Institute of Technology Madras, one of the most prestigious institutions in the Engineering field in India.

I have a sound knowledge and experience in C++ ,kde and Qt. I have submitted 8-10 patches in dolphin in kde and got them committed.

I have already ported kipi plugins in kde to use threadweaver (kde counterpart of QtConcurrent) for parallel processing. I have also implemented a base class through which kipi plugins can take advantage of multi core cpu's. (All one needs to do is to subclass this class)

I have also contributed for Yakuake

Contact Information :

Student : Janardhan Reddy A

Email ID : annapareddyjanardhanreddy@gmail.com

Freenode irc nick : Janardhan

Location : Vijayawada, India ( UTC + 530 )