 There are different conceptual models to deal with the problem, for example using a coordination language and program building blocks (programming libraries or higher order functions).Each block can have a different native implementation for each processor type.Users simply program using these abstractions and an intelligent compiler chooses the best implementation based on the context.