Execution of programs with data parallel language constructs is either based on the fork/join or on the SPMD model. Whereas the former executes a program sequentially and confines parallel activity to the data parallel constructs, the latter executes the whole program in parallel: while data parallel constructs are performed cooperatively, the remaining code is replicated. However, in the presence of I/O not all operations may actually be replicated without changing the programs extensional behaviour. Consequently, even SPMD-style parallel execution contains pockets of sequential execution, and the two execution models differ mostly in the default execution mode. Which execution model is better suited depends on an individual programs characteristics. Therefore, we propose a hybrid execution model that combines the advantages of fork/join- and SPMD-style execution. The hybrid model adapts itself to the needs of the program compiled. While some program parts are effectively executed fo...