Define mappers, reducers and the data structures that's been processed using the provided framework.
(Optinally)Define how to partition the data in order to distribute the data into multiple machines.
1. Specify how camera, lighting, transformation, texture, alpha_blending and all sorts of graphics setting are set up.
2. Specify list of primitives to be drawn in the scene and their properties like positions, normals and texture coordinates.
1. From programmer's input, figure out all the math for setting camera, lightning and so on.
2. Communicate with GPU to take advantage of its Graphics-specific units and parallelism to make rasterization more efficient.
@Khryl. I like your breakdown, but in modern OpenGL (e.g., OpenGL ES), there is no concept of a camera, lighting, or materials. This might seem unintuitive, but it's true!
I'll take a stab at modern OpenGL:
@hofstee. What do you mean by: "make sure the final pixels agree with what the programmer has defined?" That sounds like "meet the OpenGL specification" to me.
@kayvonf I need a better way to describe per-sample processing stage of the pipeline.
As an addition to MapReduce, parallelism is expressed by the programmer through the map and reduce functions. If most of the keys generated by the mappers map to the same reducer, then the program will be less parallel compared to a version which distributes keys across several reducers. The framework takes care of difficult issues that the programmer would like to avoid like fault tolerance - Failed map tasks and incomplete reduce tasks are re-run by the master, reduce tasks which have completed need not be re-run (output is available via HDFS).
Programmer's Responsibility: Define what data you want to manipulate/read/write in the form of a query. (for instance, select * from users where name='fleventyfive')
System's Responsibility: Decide how the data is to be manipulated/read/written by developing a query plan, optimizing the query, building executors, accessing indexes, updating database state, and finally accessing the data store.
Programmer's Responsibility: Describing the hardware of the digital circuit.
System's Responsibility: Deciding where/how this hardware is created on the FPGA