OpenWP state and limitations
As said in the introduction, OpenWP is in its very early stage of
development and
has a bunch of limitations, some that will soon be resolved, some that
probably
won't. Here are some of the limitations we can think of:
- for now only sequence, parallel split, and synchronize are
handled. OpenWP doesn't yet handle parallel sections explicitely (just
parallel loops),
but a similar effect is obtained by indicating dependencies of the
parallel tasks. It's just less formal and should be resolved soon.
Choices and merges aren't handled yet.
- data must be Serializable as it's stored in distant
location, usually in files. This probably won't change.
- arrays that are intended to be split will be on one
dimension only (this should be
resolved)
- in parallel loops computation is done on sub-arrays, and
for now
the index value should not be part of the computation itself. for
example, a simple init : for (int i = 0 ; i < u.length ; i++){
u[i]=i } will result in an incorrect value for u because each
sub
array will have a value ranging from 0 to u.length/number of subarrays.
- arrays can't be accessed in a random way and, more
important, can't be updated in a random way. So arrays must be split
into smaller arrays, each task handling one piece of array.
- openWP generated method must be static
- for now CompileAndLaunch program only handles a single java
program file, which should contain only one class
- the execution can't be dynamic (can't handle dynamic
excution without a priori knowledge, see workflow
patterns site)
Next steps
The next steps of development are toward taking care of memory access.
For now data is stored directly into the DHT, we have to add an
indirection level to put URIs into the DHT, then implement accessors to
retreive/store data into the storage. We also have to find a definitive
way to split loops, even if openWP is not primarily intended to handle
such loops (which will be preferably handled with OpenMP).