[BACK]Return to ox.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / io

Diff for /OpenXM_contrib2/asir2000/io/ox.c between version 1.23 and 1.24

version 1.23, 2003/12/10 07:37:40 version 1.24, 2003/12/11 05:48:04
Line 44 
Line 44 
  * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY   * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  * $OpenXM: OpenXM_contrib2/asir2000/io/ox.c,v 1.22 2003/12/10 05:39:58 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/io/ox.c,v 1.23 2003/12/10 07:37:40 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 146  static int ox_asir_available_sm[] = {
Line 146  static int ox_asir_available_sm[] = {
         SM_mathcap, SM_setMathcap, SM_nop,          SM_mathcap, SM_setMathcap, SM_nop,
         SM_beginBlock, SM_endBlock,          SM_beginBlock, SM_endBlock,
         SM_set_rank_102, SM_tcp_accept_102, SM_tcp_connect_102, SM_reset_102,          SM_set_rank_102, SM_tcp_accept_102, SM_tcp_connect_102, SM_reset_102,
           SM_bcast_102, SM_reduce_102,
         0          0
 };  };
   
Line 532  void ox_send_data_102(int rank,pointer p)
Line 533  void ox_send_data_102(int rank,pointer p)
         end_critical();          end_critical();
 }  }
   
 void ox_bcast_102(int root,Obj *rp)  void ox_bcast_102(int root)
 {  {
         Obj data;          Obj data;
         int r,mask,id,src,dst;          int r,mask,id,src,dst;
   
         data = *rp;  
         r = myrank_102-root;          r = myrank_102-root;
           if ( r == 0 )
                   data = (Obj)asir_pop_one();
   
         if ( r < 0 ) r += nserver_102;          if ( r < 0 ) r += nserver_102;
         for ( mask = 1; mask < nserver_102; mask <<= 1 )          for ( mask = 1; mask < nserver_102; mask <<= 1 )
                 if ( r&mask ) {                  if ( r&mask ) {
Line 553  void ox_bcast_102(int root,Obj *rp)
Line 556  void ox_bcast_102(int root,Obj *rp)
                         if ( dst >= nserver_102 ) dst -= nserver_102;                          if ( dst >= nserver_102 ) dst -= nserver_102;
                         ox_send_data_102(dst,data);                          ox_send_data_102(dst,data);
                 }                  }
         *rp = data;          asir_push_one(data);
 }  }
   
 /* func : an arithmetic funcion func(vl,a,b,*c) */  /* func : an arithmetic funcion func(vl,a,b,*c) */
   
 void ox_reduce_102(int root,void (*func)(),Obj data,Obj *rp)  void ox_reduce_102(int root,void (*func)())
 {  {
         Obj data0,t;          Obj data,data0,t;
         int r,mask,id,src,dst;          int r,mask,id,src,dst;
   
         r = myrank_102-root;          r = myrank_102-root;
         if ( r < 0 ) r += nserver_102;          if ( r < 0 ) r += nserver_102;
           data = (Obj)asir_pop_one();
         for ( mask = 1; mask < nserver_102; mask <<= 1 )          for ( mask = 1; mask < nserver_102; mask <<= 1 )
                 if ( r&mask ) {                  if ( r&mask ) {
                         dst = (r-mask)+root;                          dst = (r-mask)+root;
Line 580  void ox_reduce_102(int root,void (*func)(),Obj data,Ob
Line 584  void ox_reduce_102(int root,void (*func)(),Obj data,Ob
                                 (*func)(CO,data,data0,&t); data = t;                                  (*func)(CO,data,data0,&t); data = t;
                         }                          }
                 }                  }
         if ( !r )          asir_push_one(r?0:data);
                 *rp = data;  
         else  
                 *rp = 0;  
 }  }
   
 void ox_send_cmd(int s,int id)  void ox_send_cmd(int s,int id)

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.24

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>