Traditionally, a programmer's role has been reduced to designing computer vision algorithms and coding them in a machine independent language since the knowledge of the architecture has been implicit in the compiler. However, advances in the design of computing systems have resulted in the appearance of a wide range of different architectures ranging from high performance, single chip ALUs to large systems of communicating processors. The efficient use of each of these machines requires detailed knowledge of the architecture. Presently, the programmer must employ detailed knowledge of the architecture in writing the high level language program to run on any of these novel architectures. As a result, these programs are tailored to a specific computer and must be rewritten for other computers. Until now, architectural knowledge has been implicit in the high level language compilers and is not easily changed. A more promising approach is to develop compilers which use heuristic advice and architectural descriptions to guide code generation. With such a system, the high level statement of the program will be substantially machine independent and the compiler will resume its proper role as the architectural expert. In this paper we present a compiler in which architectural information is represented as a rule base and show examples of code generation for low level image processing algorithms including edge relaxation labeling, FFT, and histogram based thresholding. The input language is C supplemented with a distributed data storage class and concurrent assignments. The examples shown illustrate that the algorithms can be developed without knowledge of the target processor(s) or their interconnection network. Only a few additional declarations have to be added to any program to specify the target architecture. Currently, the compiler generates message passing C code suitable for distributed memory parallel computers.