Advertisement
MateuszGrabarczyk

Untitled

Jun 25th, 2023
1,020
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.84 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include "pvm3.h"
  3.  
  4. void parent(char* programName);
  5. void child();
  6.  
  7. int main(int argc, char* argv[]) {
  8.     if(pvm_parent() == PvmNoParent) parent(argv[0]);
  9.     else child();
  10.     return 0;
  11. }
  12.  
  13. void parent(char* programName) {
  14.     const int SIZE = 200;
  15.     int vectorX[SIZE], vectorY[SIZE];
  16.     int ZD[SIZE], ZU[SIZE];
  17.    
  18.     //W tym miejscu vectorX oraz vectorY powinny zostaΔ‡ zainicjalizowane
  19.    
  20.     int tidmaster;
  21.     int ilhost, ilarch, tid;
  22.     struct pvmhostinfo *info;
  23.    
  24.     tidmaster = pvm_mytid();
  25.    
  26.     pvm_config(&ilhost, &ilarch, &info);
  27.    
  28.     int index = 0;
  29.     for(; index < ilhost; index++) {
  30.         pvm_spawn(programName, 0, PvmTaskHost, info[index].hi_name, 1, &tid);
  31.         pvm_initsend(PvmDataDefault);
  32.         pvm_pkint(&vectorX[index]);
  33.         pvm_pkint(&vectorY[index]);
  34.         pvm_pkint(&index);
  35.         pvm_send(&tid, 100);
  36.        
  37.        
  38.     }
  39.    
  40.     int result, appendIndex;
  41.     while(index < SIZE) {
  42.         pvm_recv(-1, 200);
  43.         pvm_upkint(&result, 1, 1);
  44.         pvm_upkint(&appendIndex, 1, 1);
  45.         pvm_upkint(&tid, 1, 1);
  46.        
  47.         if(result > 0) {
  48.             ZD[appendIndex] = result;
  49.             ZU[appendIndex] = 999;
  50.            
  51.         } else if (result < 0) {
  52.             ZD[appendIndex] = 999;
  53.             ZU[appendIndex] = result;
  54.            
  55.         } else {
  56.             ZD[appendIndex] = 999;
  57.             ZU[appendIndex] = 999;
  58.            
  59.         }
  60.            
  61.         pvm_initsend(PvmDataDefault);
  62.         pvm_pkint(&vectorX[index]);
  63.         pvm_pkint(&vectorY[index]);
  64.         pvm_pkint(&index);
  65.         pvm_send(&tid, 100);
  66.         index++;
  67.        
  68.     }
  69.    
  70.     int i = 0;
  71.     for(; i < ilhost; i++) {
  72.         pvm_recv(-1, 200);
  73.         pvm_upkint(&result, 1, 1);
  74.         pvm_upkint(&appendIndex, 1, 1);
  75.         pvm_upkint(&tid, 1, 1);
  76.        
  77.         if(result > 0) {
  78.             ZD[appendIndex] = result;
  79.             ZU[appendIndex] = 999;
  80.            
  81.         } else if (result < 0) {
  82.             ZD[appendIndex] = 999;
  83.             ZU[appendIndex] = result;
  84.            
  85.         } else {
  86.             ZD[appendIndex] = 999;
  87.             ZU[appendIndex] = 999;
  88.            
  89.         }
  90.        
  91.         pvm_kill(tid);
  92.        
  93.     }
  94.    
  95.     pvm_exit();
  96.     exit(0);
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement