Architectural Adaptability in Parallel Programming via Control Abstraction