1. A method for an accelerator to store data in a buffer, the method comprising: receiving, a first request, by the accelerator, to process data associated with a first task dispatched by a first application; requesting a first data for the first task in a first range of addresses from a memory, wherein the first range of addresses are mapped to a second range of addresses in a first virtual space assigned to the first application; receiving the first data; storing the first data in the buffer; receiving, a second request, by the accelerator, to process data associated with a second task dispatched by a second application; requesting for the second application at least some second data in a third range of addresses from the memory, wherein the third range of addresses is mapped to a fourth range of addresses in a second virtual space assigned to the second application; receiving a portion of the second data; and storing the portion of the second data in the buffer.