As in the case of PFS, blocking and nonblocking versions of contiguous reads and writes can be implemented by directly using their PIOFS counterparts. Noncontiguous accesses can be implemented, in some cases, by using the logical views supported by PIOFS. In other cases, it may be necessary to implement noncontiguous accesses either in terms of several contiguous accesses or by using data sieving. Since PIOFS does not directly support collective I/O, the ADIO implementation can use two-phase I/O for improving performance.