The Virtual Interface Architecture

This chapter will illustrate how to use VIPL by presenting an example application. The application shows the use of Send, Receive, and RDMA-Write operations. It also demonstrates how to open and close a VI NIC, create and destroy VIs, connect and disconnect VIs, and register and deregister memory. After this chapter, the reader will be ready to write simple VIPL programs.
The application illustrated in this chapter creates is a simple crossword puzzle solver. It consists of two programs: a client program that issues requests and a server program that replies with the answers.
The puzzle is an N x M array of characters in the client s address space. To show the use of RDMA-Write, the replies are written directly into the array by the server program.
To make things simple, the puzzle is in the form of a word square. This allows the use of across answers only. Performing an RDMA-Write of the across answers (i.e., rows of characters) is straightforward since they occupy contiguous bytes in memory. Handling down answers (i.e., columns of characters) would be more complicated as the letters in the word square are not stored in adjacent memory locations. You may remember from Chapter 3 that RDMA-Write does not support scattering the result of a write into non-contiguous memory.
Figure 6.1 shows the exchange of data between the client and server programs. The client uses a Send operation to transmit a clue and the starting address in the puzzle array to place the...