1. A method of processing video comprising: a. configuring a plurality of processing elements into a two-dimensional array of processing elements such that each processing element includes a plurality of vector registers, a plurality of block registers, a plurality of scalar registers, and a plurality of arithmetic logic units, wherein a data path of each processing element includes a set of processing element slices each coupled to one arithmetic logic unit such that each arithmetic logic unit receives a specified portion of each vector register as input; b. configuring a video stream into data blocks; c. loading the data blocks into the plurality of vector registers within each processing element; d. reading the specified portions of each vector register by each of the corresponding arithmetic logic units within all processing elements simultaneously; and e. processing the read portions by the arithmetic logic units such that the data blocks from the plurality of vector registers are processed in parallel.