1. A method of generating pseudo-random numbers, comprising: in a runtime system configured to run on a parallel-processing computer system that includes a first processor and a plurality of co-processors and memory storing one or more programs for execution by the first processor and the plurality of co-processors, at runtime: receiving one or more operation requests from an application, the one or more operation requests comprising requests for a plurality of pseudo-random number sub-streams; selecting respective ones of the plurality of co-processors for executing the pseudo-random number generators; generating a plurality of sub-streams of pseudo-random numbers, wherein the sub-streams are generated in parallel by the selected co-processors; and providing the plurality of sub-streams to respective co-processors, wherein each co-processor is configured to employ one of the plurality of sub-streams to execute the application; wherein generating the plurality of sub-streams comprises: in the first processor, storing a state associated with a first element in a respective sub-stream of the plurality of sub-streams; in the first processor, advancing the state; providing the advanced state to a respective co-processor of the plurality of co-processors, wherein the respective co-processor calculates a second element in the respective sub-stream in accordance with the advanced state; and at one of the plurality of co-processors: computing, for a sub-stream, an index location; and reading, from an indexed table, a value stored at the computed index location, wherein the indexed table for a respective sub-stream is stored in a texture memory of one of the co-processors that is a graphics processing unit.