C Ring_In (nur fuer Prozessoren ICH > 0) C Ring_Send0 (fuer Prozessor 0) C Routine zum sequentiellen Einlesen von NProc Datenpaketen C in den Hypercube unter Benutzung des Ringes C C Es wird davon ausgegangen, dass z.B. Daten der einzelnen C Prozessoren ueber Ring_Out in ein File geschrieben wurden C und nun wieder in dieser Reihenfolge eingelesen werden, C so dass bei gleicher Prozessoranzahl die Daten wieder C genau so verteilt sind wie vor Ring_Out C Die Pakete fuer die einzelnen Prozessoren koennen C unterschiedlich lang sein - dafuer ist Prozessor 0 C verantwortlich. C C !! Erfordert ein separates Vorgehen auf Prozessor 0 !! C (den Nproc-1 maligen Aufruf von "Ring_Send0" zur Weitergabe C der Pakete an die Prozessoren i) C Das fuer Prozessor 0 bestimmte Paket, das bei Ring_Out C i.a. als erstes ausgegeben wird, darf nicht durch C Ring_Send0 versendet werden. Wenn Proz. 0 dieses wegen C Speicherplatzmangel nicht aufheben kann, muss eben der C Anfang des Files ein zweites Mal eingelesen werden. C SUBROUTINE Ring_In(N,B,MaxB) DIMENSION B(*) INCLUDE 'include/trnet.inc' NPI=NProc-ICHRing DO I=1,NPI CALL Recv_Chan(Nint,B,Lback) IF (I .LT. NPI) CALL Send_Chan(Nint,B,Lforw) ENDDO N=Nint RETURN END C ---------------------------------------------------------- C Routine zum Senden von Datenpaketen (N,B) von Proz. 0 C ueber den Prozessor-Ring im Hypercube C C !!! Diese Routine muss (Nproc-1) mal aufgerufen werden !!! C SUBROUTINE Ring_Send0(N,B,MaxB) INCLUDE 'include/trnet.inc' DIMENSION B(*) CALL Send_Chan(N,B,Lforw) RETURN END