views:

696

answers:

7

Hi,

I hope this is the right place to ask[1], but I've read a lot of good comments on other topics here so I'll just ask. At the moment I'm searching for a topic for my dissertation (Ph.d in non-german countries I think), which must have to do something with parallelism or concurrency, etc. but otherwise I'm quite free to chose what I'm interested in. Also Everything with GPU's is not reasonable, because a colleague of me does already research on this topic and we'd like to have something else for me :)

So, the magic questions is: What would you say are interesting topics in this area? Personally I'm interested in parallel functional programming languages and virtual machines in general but I'd say that a lot of work has been already done there or is actively researched (e.g. in the Haskell community).

I'd greatly appreciate any help in pointing me to other interesting topics.

Best regards, Michael

PS: I've already looked at http://stackoverflow.com/questions/212253/what-are-the-developments-going-on-in-all-languages-in-parallel-programming-area but there weren't a lot of answers.

[1] I've already asked at http://lambda-the-ultimate.org but the response was unfortunately not as much as expected.

+2  A: 

Erlang programming!

Rob Wells
+5  A: 

Another reseach area is automated parallelization. That is to say, given a sequence of instructions S0..Sn, come up with multiple sequences that perform the same work in less steps.

MSalters
You will almost always end up with more steps, but performed in parallel thus faster in a multi processor environment.But indeed a very interesting subject.
Glenner003
I've seen work that is only a few years old involving a hacked JVM that rewrites classes on the fly to run on a cluster, automating parallelization just like that.
Karl
+1  A: 

Parallel processing and rules engines are both high-visibility topics in the commercial/industrial computing world. So, how about looking at parallel implementations of the Rete algorithm (introductory descriptions here and here), the foundation under many commercial busines rules engines? Are there techniques for building Rete networks that are better suited for parallelization? Could a "vanilla" Rete network be refactored into multiple networks that could be executed more effectively in parallel? Etc.

joel.neely
Very Cool.I guess I have to read my DDJ more.
jim
+2  A: 

Software transactional memory?

Willie Wheeler
+1 And hardware transactional memory, as well
Chris O
+1  A: 

Parallelism friendly common-application features. Right now, parallelism has been heavily focused on scientific computing and programming languages, but not so much on consumer applications or consumer-application friendly features/data structures/design patterns, and these will be very important in a multi-core world.

John the Statistician
A: 

You mentioned Haskell and you surely has stumbled upon Data Parallel Haskell. Since Big Data Analysis is a big word lately and given that the Map/Reduce niche is overcrowded, I think that DPH is a good area of research.

ancechu
A: 

From the top of my head:

  1. Load balancing & how to achieve the best level of parallelization. I think it can be very good starting point for PhD because here you can propose new methodology and compare it with real values in hand (number of steps - that was already mentioned, CPU usage, memory usage etc) in general or for particular algorithm or set of tasks (like image processing for example).

  2. Parallel Garbage Collection. There are lot of algorithms for collection, there are a lot algorithms to present objects in a memory. For example, there is a recent work from Haskell comunity about Parallel GC: http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel-gc/index.htm Then again, there is a good way to present your resutls and compare it with others and it gives you the flexibility in the end - you can focus on concurrent data structures later, or synchronizaiton primitives or algorithms etc.

Andrei Taptunov