Difference between revisions of "PhyloSoC: DIM SUM 2 GPU computing for individual based simulator of movement and demography"

From Phyloinformatics
Jump to: navigation, search
(Created page with "==Student== Peter Hoffmann ==Abstract== ==Mentors== * Kevin Savidge (primary) * [http://www.phyleauxgenetics.org/ Jeremy Brown] ==Project Plan== ===Week 1 (May 23 - May 30):=== *...")
 
(Project Plan)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
==Abstract==
 +
DIM SUM is a population demography and individual migration simulation. The goal of the project is to use the graphics card to improve the speed of DIM SUM significantly, so it is possible to simulate scenarios with much larger populations and larger landscapes.
 
==Student==
 
==Student==
Peter Hoffmann
+
* [mailto:p-hoffmann@web.de Peter Hoffmann]
==Abstract==
 
 
==Mentors==
 
==Mentors==
 
* Kevin Savidge (primary)
 
* Kevin Savidge (primary)
 
* [http://www.phyleauxgenetics.org/ Jeremy Brown]
 
* [http://www.phyleauxgenetics.org/ Jeremy Brown]
 
==Project Plan==
 
==Project Plan==
===Week 1 (May 23 - May 30):===
+
===Week 1 (May 23 - May 29):===
 
* Performance analysis of DIM SUM.
 
* Performance analysis of DIM SUM.
 
* Split populateAndMigrateThreaded into smaller function to better understand it.
 
* Split populateAndMigrateThreaded into smaller function to better understand it.
===Week 2 (May 30 - June 6):===
+
===Week 2 (May 30 - June 5):===
* Replace the ArrayList of PFunctions, with a data structure, which can be copied in the graphic memory.  
+
* Replace the ArrayLists of Objects in DispersalSettings, which are needed for the computations in the populateAndMigrateThreaded, with data structure, which can be copied in the graphic memory. The only acceptable data structures for CUDA are arrays of primitives. That means e.g. that all ArrayList<PFunction> must be replaced by a two dimension array for the outcomes and a two dimensional array for the probabilities.
===Week 3 (June 6 - June 13):===
+
===Week 3 (June 6 - June 12):===
* Replace the ArrayList of XYFunctions, with a data structure, which can be copied in the graphic memory.
+
* Replace the ArrayList, which stores the generation with a CUDA compatible data structure. Even thought it is only one ArrayList this task isn't trivial, because elements are removed from this array during the computation, which isn't possible on the GPU.
===Week 4 (June 13 - June 20):===
+
===Week 4 (June 13 - June 19):===
* Replace the ArrayLists, which stores the generation with CUDA compatible data structures.  
+
* Replace the class lldata with a data structure, which is compatible with CUDA.
===Week 5 (June 20 - June 27):===
+
* Remove variables from the Nodes, which are only needed for debugging.
* Port the functions in XYFunction and DispersalSettings,which are needed by the migrate function, to CUDA.
+
===Week 5 (June 20 - June 26):===
===Week 6 (June 27 - July 4):===
+
* Replace the Nodes with a data structures, which can be used on the graphics card.
* Port the migrate function to CUDA.
+
* Code refactoring.
===Week 7 (July 4 - July 11):===
+
===Week 6 (June 27 - July 3):===
===Week 8 (July 11 - July 18):===
+
* Replace decimal degrees with radians in migrate.
===Week 9 (July 18 - July 25):===
+
* Port the migrate part of populateAndMigrate to C++ using SWIG. This includes all function, which migrate depends on.
===Week 10 (July 25 - August 1):===
+
===Week 7 (July 4 - July 10):===
===Week 11 (August 1 - August 8):===
+
* Port the migrate part of populateAndMigrate from C++ to CUDA. This includes all function, which migrate depends on. There might be still some limitations like a maximum image size of 2048x2048.
===Week 12 (August 8 - August 15):===
+
===Week 8 (July 11 - July 17):===
 +
* Optimize performance of CUDA functions.
 +
* Bug-fixing.
 +
===Week 9 (July 18 - July 24):===
 +
* Optimize the performance of other functions.
 +
* Further improve migrate performance.
 +
* Bug-fixing.
 +
===Week 10 (July 25 - July 31):===
 +
* Improve output performance.
 +
* Performance evaluation.
 +
* Bug-fixing.
 +
===Week 11 (August 1 - August 7):===
 +
* Code cleanup.
 +
* Improve documentation.
 +
===Week 12 (August 8 - August 14):===
 +
* Code cleanup.
 +
* Improve documentation.

Latest revision as of 12:36, 21 June 2011

Abstract

DIM SUM is a population demography and individual migration simulation. The goal of the project is to use the graphics card to improve the speed of DIM SUM significantly, so it is possible to simulate scenarios with much larger populations and larger landscapes.

Student

Mentors

Project Plan

Week 1 (May 23 - May 29):

  • Performance analysis of DIM SUM.
  • Split populateAndMigrateThreaded into smaller function to better understand it.

Week 2 (May 30 - June 5):

  • Replace the ArrayLists of Objects in DispersalSettings, which are needed for the computations in the populateAndMigrateThreaded, with data structure, which can be copied in the graphic memory. The only acceptable data structures for CUDA are arrays of primitives. That means e.g. that all ArrayList<PFunction> must be replaced by a two dimension array for the outcomes and a two dimensional array for the probabilities.

Week 3 (June 6 - June 12):

  • Replace the ArrayList, which stores the generation with a CUDA compatible data structure. Even thought it is only one ArrayList this task isn't trivial, because elements are removed from this array during the computation, which isn't possible on the GPU.

Week 4 (June 13 - June 19):

  • Replace the class lldata with a data structure, which is compatible with CUDA.
  • Remove variables from the Nodes, which are only needed for debugging.

Week 5 (June 20 - June 26):

  • Replace the Nodes with a data structures, which can be used on the graphics card.
  • Code refactoring.

Week 6 (June 27 - July 3):

  • Replace decimal degrees with radians in migrate.
  • Port the migrate part of populateAndMigrate to C++ using SWIG. This includes all function, which migrate depends on.

Week 7 (July 4 - July 10):

  • Port the migrate part of populateAndMigrate from C++ to CUDA. This includes all function, which migrate depends on. There might be still some limitations like a maximum image size of 2048x2048.

Week 8 (July 11 - July 17):

  • Optimize performance of CUDA functions.
  • Bug-fixing.

Week 9 (July 18 - July 24):

  • Optimize the performance of other functions.
  • Further improve migrate performance.
  • Bug-fixing.

Week 10 (July 25 - July 31):

  • Improve output performance.
  • Performance evaluation.
  • Bug-fixing.

Week 11 (August 1 - August 7):

  • Code cleanup.
  • Improve documentation.

Week 12 (August 8 - August 14):

  • Code cleanup.
  • Improve documentation.