Parallelism is easy to express for single channel applications. All you need is to map different blocks of data onto different processes. The detailed mapping of which process gets which block is not important since single channel algorithms don't involve communication beyond loading initial input data and writing final results. All participating processes read from a logically shared file using independent file pointers. Thus, each process reads each record.
Many applications follow a replicated data, SPMD structure.
For these applications, every node needs to initialize the replicated data to the same value. It is possible to have one node read this data from a file and then broadcast that data to all the other nodes. Every node has its own independent file pointer into a logically shared file. Every node then executes the same input operations to load its own copy of the data. This lets the programmer move the input portion of their code onto a parallel machine with very little effort.