1. A computer implemented method for assigning executable functions to available processors in a multiprocessor environment comprising a processing architecture selected from the group consisting of one or more CPUs, one or more GPUs and combinations thereof, the method comprising: providing an input source comprising instructions and data; breaking the input source into data oriented cell and interface objects with processing attributes; interrogating the processing architecture to ascertain available processor resources and creating a task graph based on available processor resources and the processing attributes of cell and interface objects; using the cell and interface processing attributes to assign the cell and interface objects to the processing architecture; carrying out the assigning step using the processing architecture and the cell and interface processing attributes to create the task graph; organizing the input source into a problem representation where the problem representation defines the relationships between the cell objects, interface objects (with associated processing attributes) and task objects; using the cell objects, interface objects (with associated processing attributes) and task objects in conjunction with information on the multiprocessing environment in the creation of the task graph; in the problem representation, using a directory structure to relate task objects to specific cell objects and interface objects and directing what computer instructions will operate on what data in the multiprocessing environment; and producing output data.