Here is a summary of the concurrency lessons I learned that are useful with or
without the functional programming paradigm --
1: implement Callable<T> to submit tasks for concurrent/parallel/lazy execution
- call() methods just wrap a call to the computation intensive method
2: share a fixed size thread pool with task queue to avoid
- overhead of thread creation/destruction,
- too many simultaneous threads, and
- most blocking issues
3: place thread blocking Future<T>.get() calls within tasks later in the queue
- while(!Future<T>.isDone()) Thread.yield(); may also help keep the pool active
4: execution in a task queue also enables easier logging and progress listening
There are two obvious places concurrent execution will fit in the MSA module --
1: building the distance matrix
- queue pairwise alignment/scoring tasks in loop over all sequence pairs
2: progressive alignment
- queue profile-profile alignment tasks in postfix traversal of guide tree
(from leaves to root)
All our library copies of "Effective Java" are checked out, so I ordered a copy
for my personal library. The sample chapter on generics sold me.
Mark
On 4/28/2010 12:57 PM, Scooter Willis wrote:
Andreas
Those links were sent to me by Mark Southern who sits a couple doors down and a
past BioJava contributor for the sequence viewer. We should avoid bringing in
any external parallel frameworks but at minimum give ourselves enough
abstraction with a backend multi-threaded job-processing approach to take
advantage of a multi-processor box and a cluster via Terracotta. If the
abstraction of the jobs and the mapping of resources is generic enough then
that allows different implementations in various cluster environments for those
who have found the next best thing in parallel computing!
Scooter
On Apr 28, 2010, at 1:31 PM, Andreas Prlic wrote:
Any ideas for the MSA project as well as more sources of programming wisdom
are quite welcome. For example, Andreas suggested a series about Java
parallelism and lazy execution (
http://apocalisp.wordpress.com/2008/06/18/parallel-strategies-and-the-callable-monad/).
credits for the links go to Scooter, who recommended those ;-) My general
recommendation is to read Joshua Bloch's "Effective Java".
http://java.sun.com/docs/books/effective/ It is a collection of rules that
should help in avoiding some frequently made mistakes...
Andreas
I also noted a useful tip for iterative development (
http://en.flossmanuals.net/GSoCMentoring/Workflow).
Thanks again,
Mark
On 4/27/2010 12:33 AM, Andreas Prlic wrote:
Dear all,
Google has released the results for GSoC: Congratulations to Mark
Chapman and Jianjiong Gao for having been accepted to work on the MSA
and PTM projects for BioJava! Let's start the "community bonding"
process ( http://en.flossmanuals.net/GSoCMentoring/MindtheGap ) and we
all are looking forward to work with you on this during the summer. The
Mentors and co-mentors will be Peter Rose for the PTM and Scooter Willis
and Kyle Ellrott for the MSA project (and me).
I want to thank all of of you who submitted proposals or showed interest
in other ways for the Google Summer of Code. We hope you are not too
disappointed if your application did not get accepted this time. We had
a large number (52) applications and the the overall quality of the
submissions was very high. We would like to stay in touch with you and
we hope that you are interested in BioJava also beyond the scope of
GSoC. There are a number of different ways how to contribute: We are
always looking for people who provide code and patches to further
improve our library, help out with the documentation on the Wiki page,
or answer questions on the mailing lists.
Let's all give Mark and Jianjiong a warm welcome to the BioJava
community. For those of you who are interested in following the
progress of the projects, as usually, the development related
discussions are going to be on the biojava-dev list.
Happy coding!
Andreas
--
-----------------------------------------------------------------------
Dr. Andreas Prlic
Senior Scientist, RCSB PDB Protein Data Bank
University of California, San Diego
(+1) 858.246.0526
-----------------------------------------------------------------------
_______________________________________________
biojava-dev mailing list
[email protected]
http://lists.open-bio.org/mailman/listinfo/biojava-dev
_______________________________________________
Biojava-l mailing list - [email protected]
http://lists.open-bio.org/mailman/listinfo/biojava-l