1. A method for performing a transform on an input data set having a number N of points, the method comprising: defining, with a computer system, a thread array having a plurality of threads, each thread configured to execute a same program on the input data set, each thread having a unique thread identifier; and executing the thread array with the computer system, wherein execution of the thread array includes, for each thread: reading at least two input data values of the input data set from respective source locations, wherein the source locations are determined based at least in part on the unique thread identifier; performing a butterfly calculation using the at least two input data values to compute at least two new data values; and writing the at least two new data values to respective destination locations, wherein the destination locations are determined based at least in part on the unique thread identifier.