A system comprising (i) a block device driver, (ii) a vector processor, (iii) one or more other processors, (iv) main memory, (v) pinned memory, (vi) one or more storage devices, and (vii) a data bus, wherein the pinned memory is accessible by the vector processor and the one or more other processors directly over the data bus, and wherein the block device driver is configured to run on the vector processor or the one or more other processors, the system configured to:
- receive, by the block device driver, an instruction to read data from the one or more storage devices;
- write the data from the one or more storage devices to a first memory location;
- perform, by the vector processor, one or more invertible transforms on the data at the first memory location;
- and
- copy the data from the first memory location to a second memory location,
- wherein the first memory location of the data corresponds to a location in pinned memory, and
- wherein the second memory location of the data corresponds to a location in the main memory that cannot be accessed by the vector processor via the data bus.