A DSL based toolchain for design space exploration in structured parallel programming