A straightforward data layout is used in these algorithms for all platforms. The input image is an matrix of integers. We assign tiles of the image as equally as possible among the processors. If p is an even power of two, i.e. , for even d, the processors will be arranged in a logical grid. For future reference, we will denote the number of rows in this logical grid as v and the number of columns as w. For odd d, we assign the number of rows of the logical processor grid to be , and the number of columns to be . Each processor initially owns a tile of size . For future reference, we assign and . We assume that the p processors are labeled consecutively from 0 to p-1 and are assigned in row-major order to the logical processor grid just described.
Several test images have been used to test the correctness and the performance of the algorithms presented here. These test images, shown in Figure 1, are generated at runtime, with images 1-4, 7, and 9, augmented to the needed image size, while images 5, 6, and 8, scaled appropriately. Figure 2 is a , 256 grey-level, image from the Second DARPA Image Understanding Benchmark [47]. The histogramming algorithm is assumed to be correct because , and for regular patterns, it is easy to verify that each equals the percentage of area that grey level i covers in the image. Verifying the connected components algorithm is more difficult. In addition to the DARPA Benchmark Image, we include the most widely used patterns for binary images. A catalog of nine automatically generated scalable images is used, as shown in Figure 1, and include horizontal, vertical, and forward- and back-slanting diagonal bars, a cross, a filled disc, concentric circles with thickness, four squares inset from the four corners, and a dual-spiral pattern, a ``difficult'' image [42].