Abstract:
Benes networks are used in SIMD single instruction multiple data parallel processing systems to provide interprocessor communication. The invention describes an algorithm which will allow these networks to be used in presence of several faults, without reducing their interconnection capability.

Description:
FIELD OF THE INVENTION 
     Benes networks are used in SIMD parallel processing systems to provide interprocessor communication and in telecommunication networks as switches. The present invention is an algorithm which will allow these networks to be used in the presence of several faults, without reducing their interconnection capability. 
     BACKGROUND OF THE INVENTION 
     Benes networks can be used to provide connectivity among processors or between processors and memory modules in Single Instruction Multiple Data (SIMD) parallel computers. The most widely known example of such application is the IBM&#39;s GF11 parallel computer where 576 processors are connected together using a 576×576 Benes network. This network has three stages of 24×24 crossbar switches with 24 switches in each stage. Benes networks can realize arbitrary permutations (any one-to-one connection between their inputs and outputs). However, these networks are not self routing and the switch settings (permutation realized by the individual switches) for each switch in the network must be determined and loaded into the switch before the movement of the data can be initiated. Many algorithms are known for determining the switch settings of a Benes network to realize a given permutation, such as, for instance, the ones described in M. C. Paull, &#34;Reswitching of Connection Networks,&#34; The Bell System Tech. Journal Vol. 41, May 1962, pp. 833-857; H. R. Ramanujam, &#34;Decomposition of Permutation Networks,&#34; IEEE Trans. Comput. C-22(7), July 1973, pp. 639-643 and A. Waksman, &#34;A Permutation Network,&#34; JACM 15(1), January 1978, pp. 159-163. 
     The switch settings in a Benes network that realize a given permutation are not unique. This observation, and the fact that most SIMD machines are designed with some spare processors, and consequently larger networks with extra input and output ports to connect these spare processors, can be used advantageously in accordance with the present invention to avoid faulty data paths in a Benes network. 
     SUMMARY OF THE INVENTION 
     The present invention is a method for assigning switch settings in a multistage Benes network having k stages, k being an odd number greater than 1, and having N switches of size M×M in the first and last stage of the Benes network, such that faulty connections and links are not used, comprising: 
     a) if k&gt;3 then 
     1) partition switches in the k-2 middle stages of the Benes network into M subnetworks, each subnetwork being a k-2 stage Benes network of size N×N connected to each switch in the first and the last stage of the Benes network; 
     2) finding an initial switch setting for the first and last stages of the Benes network and the permutations to be realized by the subnetworks comprising the middle stages, using both faulty and good components and links; 
     3) for each set of connections routed through a subnetwork by the initial switch setting, finding the set of subnetworks which can perform in a fault free manner the permutation used to route the set of connections by recursively applying the method of this claim, and also route the connections without using faulty components or links of the Benes network external to the subnetwork; 
     4) pairing each set of connections routed through a subnetwork in the initial switch setting to a subnetwork which can route that set of connections in a fault free manner; 
     5) rearranging the switch setting in the first and last stage of the Benes network to reflect the new paring; 
     b) if k=3 then 
     1) finding an initial switch setting for the switches of the network using both good and faulty components and links; 
     2) for each set of connections routed through a middle stage switch in the initial switch setting, finding the set of middle stage switches which route these connections without using faulty components or links; 
     3) pairing each set of connections routed through a middle stage switch in the initial switch setting to a middle stage switch which can route that set of connections in a fault free manner; 
     4) rearranging the switch setting in the first and last stage of the Benes network to reflect the new paring. 
    
    
     FIGURES 
     FIG. 1 is a three stage Benes network. 
     FIGS. 2-4 are flow diagrams describing various embodiments of the method of the present invention. 
    
    
     DETAILED DESCRIPTION 
     Fault Model 
     FIG. 1 is a three stage Benes network. While the following description is directed to a Benes network having three stages, it will be understood by those skilled in the art that the invention is applicable to Benes networks with more than three stages. 
     The network of FIG. 1 comprises a number √n of first stage switches S 0 ,0 . . . S 0 ,√n-1 and a number √n of third stage switches S 2 , 0  . . . S 2 ,√n-1. The Benes network of FIG. 1 is further characterized by having a number √n of middle stage switches S 1 ,0 . . . S 1 ,√n-1. Each switch in the network of FIG. 1 has a number √n of inputs and a number √n of outputs. A plurality of links 2 connect outputs of first stage switches to inputs of middle stage switches, and a plurality of links 4 connect outputs of middle stage switches to inputs of third stage switches. In the network of FIG. 1, there are n links 2 and n links 4. 
     Two types of faults can occur in a three stage Benes network, like the one shown in FIG. 1. The first type of fault is the malfunctioning of a link 2 between either the first stage and the middle stage, or a link 4 between the middle stage and the third stage. In an n×n Benes network there are n links between consecutive stages, and any number of them can be faulty. The present invention does not deal with the failures of links entering the first stage of a network or of the links leaving the last stage because such failures force the loss of a processor and are considered as processor faults. 
     The second type of fault is the failure of an √n×√n switch to communicate from its input i to its output j, where 0≦i,j&lt;√n (the inputs and outputs of switches in FIG. 1 are numbered from 0 to √n-1). Each switch has n such input-output pairs and any number of them can be faulty. 
     Failure of a link in a Benes network has the same effect on the connection capability of the network as √n failures on either the switch driving the link or the switch receiving data from it. If the failing link is connected to the output `O` of the switch driving it, then the link failure has the same effect as the failure of the switch to connect any of its inputs to output `O`. Similarly, if the failing link is connected to Input I of the switch that receives data from it, then the link failure has the same effect as the failure of the receiving switch to connect its input I to any of its outputs. 
     A link failure will be represented herein as √n failures in the switch that drives it. Thus, all the network faults can be represented as a set of forbidden input to output connections for each switch in the network. 
     Terminology 
     A typical three stage n×n Benes network, such as the one shown in FIG. 1, has 3 stages of √n×√n switches with √n switches in each stage. These switches are denoted as S i ,j, and in a preferred embodiment, 0≦i&lt;3 and 0≦j&lt;√n. The permutation to be performed by the Benes network will be denoted by π. Let σ be a pattern of switch settings that make the network perform the permutation π. For a given permutation π, σ is not unique. 
     Each switch in the Benes network is capable of performing any permutation between its √n inputs and its √n outputs. The switch settings of a Benes network refer to these permutations being performed by the switches. The permutation specified for switch S i ,j by the switch setting σ will be denoted as P i ,j.sup.σ. 
     In the next section, a set (collection) of switch settings is considered, all of which settings make the Benes network perform a given permutation π. This set is denoted by Σ, its cardinality is denoted as |Σ|, and its members are represented as σ k! for 0≦k&lt;|Σ|. We use σ 0! to denote an initial set of switch settings obtained by using one of the known algorithms, some of which are discussed in V. E. Benes, &#34;Mathematical Theory of Connecting Networks and Telephone Traffic&#34;, Academic Press, NY, 1935; Paull, &#34;Reswitching of Connection Networks,&#34; Bell Sys. Tech. J., vol. 41, May 1962, pp 833-857; Ramannajam, &#34;Decomposition of Permutation Networks&#34;, IEEE Trans. Comput. C-22(7), July 1973, pp. 639-643; and Waksman, &#34;A Permutation Network&#34;, JACM 15(1), January 1978, pp. 159-63. The set Σ does not contain all the switch settings which make the network perform permutation P i ,j.sup.σ. It is a much smaller subset which can be easily derived from σ 0! as explained below. 
     Finding Fault Free Switch Settings 
     It is quite possible that the switch setting σ 0!, obtained by using one of the known algorithms, makes use of faulty input-output connections in some switches. This section discusses how a switch setting that does not use faulty input-connections in any switch can be derived from σ 0!. 
     First define Σ by describing how all elements in it can be systematically derived from σ 0!. Enumerating all switch settings in Σ, and checking if any of them avoids faulty input-output connections in all switches is a formidable task. In accordance with the present invention, however, the well known Stable Marriage Algorithm from combinatorial analysis can be used to select a suitable element of Σ without incurring the penalty of enumerating Σ. The next section defines the set Σ, the search space. The &#34;Selection Algorithm&#34; section describes the Stable Marriage Algorithm. 
     The Search Space 
     A network input I is connected to the first stage switch S 0 ,I div √n and the network output O is connected to the last stage switch S 2 ,0 div √n (for integer x and y, x div y and x mod y denote the whole part and the remainder respectively of the result of the division of x by y). If the connection from network input I to output O goes through middle stage switch S 1 ,k, then the following must hold true for ##EQU1## 
     Given a switch setting σ 0! for the Benes network, we can define (√n)| switch settings which make the network perform the same permutation as σ 0!. Consider the (√n)| permutations possible between the √n inputs and √n outputs of the switches used in the network. Let M denote an arbitrary permutation of this type and let M(j) denote the output to which the j th  input is mapped by M. We can take all the input-output connections which go through middle stage switch k, S 1 ,k (for 0≦k&lt;√n), in σ 0! and route them through the middle stage switch S 1 ,M(k). Let σ m! denote the new switch settings we derive from σ 0! and M in this manner. Then the permutation specified for the switches by σ m! are given by the following equations: 
     
         P.sub.0,j.sup.σ m! =MXP.sub.0,j.sup.σ 0! 
    
     
         P.sub.1,j.sup.σ m! =P.sub.1,M j!.sup.σ 0!      (2) 
    
     
         P.sub.2,j.sup.σ m! =P.sub.2,j.sup.σ 0! XM.sup.-1 
    
     In the above equations, the X symbol denotes the composition of two permutations, in the usual sense of function composition with the right permutation applied first. The first and the third equations show how the settings of the switches in the first and the third stages change so that all input-output connections which used a middle stage switch S 1 ,k in σ 0!, now use the switch S 1 ,M(k) in σ m!. Thus the search space Σ consists of the (√n)| distinct values of σ m! derived from the (√n)| distinct values possible for M. 
     Selection Algorithm 
     Let Π k  denote the input-output connections that are routed through the middle stage switch S l ,k in σ 0!. Now for each Π k  we make a list l k  of middle stage switches. A middle stage switch S l ,x is in l k  if no faulty switch connections are used by the network connections in Π k  when they are routed through S i ,x. 
     By using Philip Hall&#39;s theorem (Hall, &#34;Combinatorial Theory&#34;, Blaisdell Publishing Company, 1967) on distinct representatives, we can determine whether a √n→√n permutation M, and therefore a corresponding switch setting σ m! as defined in the preceding section, exists such that σ m! avoids the faulty connections in all switches. According to the theorem, at least one such permutation M exists if and only if: 
     For all values of k (0≦k&lt;√n), and any choice of k element set {Π i0 , Π i1 , . . . Π ik-1  }, the union of the corresponding l i  lists (l i0 ,l i1 , . . . , l ik-1 ) has at least k distinct middle stage switches in it. 
     The following algorithm can be used to determine whether a suitable value for M exists, and to find that value. Recall that the permutation M is a pairing between √n sets of connections Π i , 0≦k&lt;√n and √n middle stage switches. We start with an empty list and invoke the following procedure repeatedly to add a new {Π i ,S 1 ,j } pair to the list, until all Π i  s are paired off. The procedure follows: 
     Choose an unpaired Π i  and label it as Π i .sbsb.0. If l i .sbsb.0 has an unpaired middle stage switch, then this switch can be paired with Π i .sbsb.0. Otherwise, pick an already paired middle stage switch from l i .sbsb.0, and denote it by S 1 ,i.sbsb.1. Let Π i .sbsb.1 be the partner of S l ,i.sbsb.l. (If M exists, then l i .sbsb.0 is not empty according to Hall&#39;s theorem with k=1.) 
     Now the combined lists of Π i .sbsb.0 and Π i .sbsb.1, i.e. l i .sbsb.0 ∪l i .sbsb.l, contain at least one more middle stage switch S 1 ,i.sbsb.2 (Hall&#39;s theorem with k=2). If S 1 ,i.sbsb.2 is also paired, we find its partner Π i .sbsb.2 and search the list l i .sbsb.0 ∪l i .sbsb.1 ∪l i .sbsb.2 for a third middle stage switch S 1 ,i.sbsb.3. If S 1 ,i.sbsb.3 is also paired, we repeat the process of: 1) finding the partners of the paired S l ,i.sbsb.s, 2) merging the l i  lists of all such partners and Π i .sbsb.0, and 3) finding a new S 1 ,i.sbsb.s from this merged list, until we find an S l ,i.sbsb.s which is unpaired. Success is guaranteed at each step in this process due to Hall&#39;s theorem (if M exists), and the process must terminate because at least one S 1 ,i is unpaired. 
     Each S 1 ,i.sbsb.n found in the preceding step appears on the list l i .sbsb.m of at least one Π i .sbsb.m, with m&lt;n. We choose an index n with an initial value of s where S 1 ,i.sbsb.s is the switch found in the last iteration of the previous step. S 1 ,i.sbsb.n is unpaired but on the list of Π i .sbsb.m, with m&lt;n. We pair S 1 ,i.sbsb.n and Π i .sbsb.m, thereby leaving S 1 ,i.sbsb.m unpaired (if m≠0). If m≠0 then n is set to m, and the step defined by the two preceding sentences is repeated until m becomes 0. At this point we have added a new {Π i ,S 1 ,j } pair to our list (by possibly changing the pairing pattern of the existing pairs). 
     Implementation 
     Appendix A is a Pascal program which implements the algorithm of this invention. 
     The Benes network used in this program is of size 576×576, comprising three stages of 24×24 switches with 24 switches in each stage. 
     The array permspec specifies the permutation to be performed by the network. Record i of the permspec array has two fields, the valid field indicating whether the input i is in use, and the opn field indicating the output of the network to which it connects. 
     The array switch specifies the switch setting or configuration for each switch in the Benes network, and the faults present in the switch. switch i,j! is the j th  switch of the i th  stage. Three fields in switch i,j!, perm, inuse, and mux --  fault, are arrays themselves, and the k th  entry of each relates to the k th  input of the switch. perm k! specifies the switch output to which the k th  switch input is connected when inuse k! is true. mux --  fault k! specifies the set of outputs of the switch which can not be connected to input k because of the faults in the switch. Finally, link --  faults specifies the set of switch outputs which can not be used because they are connected to faulty output links. 
     The main program starting at line 301 first calls the permute procedure to generate a permutation to be performed by the network. This procedure initializes the permspec array. Then procedure gen --  err is called to generate a list of faults in the network. This routine initializes the mux --  faults and link --  fault variables in the switches. It also reflects the link --  faults as mux --  faults in the preceding switch. Then the procedure set --  lswits is called to find the initial switch setting, σ 0!, also referred to as initial routing, for the switches of the Benes network to realize the permutation permspec. In determining the initial routing, link --  faults and mux --  faults are not avoided. 
     The procedure ls2ps --  assign then pairs each set of connections going through a middle stage switch in the initial routing with a middle stage switch which can route the whole set of connections without using the faulty components of the network. To simplify the following discussion, we will refer to the set of connections routed through the middle stage switch i by the initial routing as connections of logical switch i, and the pairing of these connections with the middle stage switch j as assignment of logical switch i to physical switch j. The condition in line 321 of Appendix A checks for the successful completion of the above pairing for all logical switches, and if this pairing is successful, then the routine set --  pswits rearranges the initial switch setting found by set --  lswits to reflect the pairing determined by ls2ps --  assign. The pairing defines the permutation m of the preceding section, and the set --  pswits computes σ m! from M and σ 0! using equation set 2. 
     The procedure ls2ps --  assign computes the array ls2ps --  mar. The value j in the i th  entry of this array indicates that logical switch i is assigned to physical switch j. The procedure starts by building the array marriage --  graph, the i th  entry of which is the set of all physical switches through which the connections of logical switch i can be routed in a fault free manner. All entries in marriage --  graph are first initialized to be the set of all middle stage switches (physical switches). Then for each connection i, O≦i&lt;576, we check to see if it can be routed through the physical switch j, O≦j&lt;24 in a fault free manner (lines 97-111). If connection i can not be routed through the physical switch j in a fault free manner, and it belongs to logical switch m, then j is deleted from marriage --  graph m! indicating that logical switch m can not be paired with physical switch j. 
     Once the marriage --  graph has been computed, we pair each logical switch i to a physical switch j which is a member of marriage --  graph i! (lines 135-233 in Appendix A). This loop essentially implements the stable marriage algorithm. 
     Note that when pairing a logical switch i to some physical switch, the previously paired logical switches may have to be paired again with different physical switches. 
     To perform the above pairing, we maintain a list of physical switches which have not been paired to any logical switch. This list is maintained as the set avail --  swits. We also maintain two lists chain LS,.! and chain PS,.!. When pairing logical switch i to a physical switch, we also maintain a list of candidate physical switches as the set know --  set and a list of physical switches not to be used as the set avoid --  set. 
     When finding a physical switch to be paired with a logical switch i, chain LS,0! is initialized to i, know --  set is initialized to marriage --  graph i!, and avoid --  set is initialized to be empty. In addition to i, chain LS,.! grows to include the list of logical switches for which the logical switch to physical switch pairing must be reassigned in order to complete the pairing for i. For the already paired logical switch chain LS,m!, chain PS,m! indicates the physical switch to which it was previously paired. know --  set is the union of the marriage --  graph entries of all the logical switches in chain LS,.! and avoid --  set is the set of all physical switches in chain PS,.!. 
     After initializing chain LS,0!, in lines 145-166 of the program we repeatedly add more logical switches to it until there is a physical switch in know --  set which is also in the avail --  set. Once this condition is reached the pairing can be performed in lines 195-219 of the program. The logical switch added to chain LS,.! is selected from the logical switches already paired to a physical switch in the know --  set. 
     Once we find a physical switch in the above step which is in both the know --  set and the avail --  set, it is assigned to the logical switch chain LS,k!. If k=0, then we have paired the logical switch i. Otherwise we have freed the physical switch chain PS,k! to be paired with some logical switch chain LS,l! for l&lt;k. This step is repeated until logical switch i eventually gets paired with some physical switch. 
     Appendix B is a listing of all the pascal procedures needed to support the main program of Appendix A. 
     While the above discussion assumed that switches in all three stages were of identical size, it will be understood by those skilled in the art that the invention is applicable to three stage Benes networks in which the size of the middle stage switches is different than that of the first and third stage switches, as described in the summary of this invention. Similarly, for networks with more than three stages, switches in each pair of stages comprising two stages at the same distance from the middle stage can have a different size. 
     FIGS. 2-4 are flow diagrams describing various embodiments of the present invention. ##SPC1##