RCCE_test.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //#include <string.h>
  2. #include <stdio.h>
  3. #include "RCCE.h"
  4. #define max(x,y) ((x)>(y)?(x):(y))
  5. int RCCE_APP(int argc, char **argv){
  6. int ME, NUES, i, dummy=0;
  7. int *sig_array, sig_source, sig_read;
  8. RCCE_FLAG flag_rec_sig,flag_send_sig;
  9. RCCE_FLAG_STATUS receiver_status;
  10. RCCE_init(&argc, &argv);
  11. // RCCE_debug_set(RCCE_DEBUG_ALL);
  12. ME = RCCE_ue();
  13. NUES = RCCE_num_ues();
  14. RCCE_flag_alloc(&flag_rec_sig);
  15. RCCE_flag_alloc(&flag_send_sig);
  16. RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_SET, ME);
  17. RCCE_flag_write(&flag_send_sig, RCCE_FLAG_UNSET, ME);
  18. sig_array = (int *) RCCE_malloc(NUES * sizeof(int));
  19. if (ME == 0) sig_source = 0;
  20. else if (ME == 1) sig_source = 100;
  21. else if (ME == 2) sig_source = 200;
  22. else sig_source = 300;
  23. //for (i=0; i<NUES; i++)
  24. // RCCE_put((t_vcharp)(&sig_array[i]), (t_vcharp)(&sig_source), 32, ME);
  25. RCCE_put((t_vcharp)(sig_array), (t_vcharp)(&sig_source), NUES*sizeof(int), ME);
  26. for (i=0; i<NUES; i++) {
  27. RCCE_get((t_vcharp)(&sig_read), (t_vcharp)(&sig_array[i]), 32, ME);
  28. printf("I asdam %d and signal of %d is %d\n",ME,i,sig_read);
  29. }
  30. RCCE_barrier(&RCCE_COMM_WORLD);
  31. if (ME == 0) {
  32. for (i=0; i<100000; i++)
  33. dummy++;
  34. printf("I am 0 and i finished my first round my source is %d\n",sig_source);
  35. //RCCE_wait_until(flag_rec_sig, RCCE_FLAG_UNSET);
  36. //RCCE_wait_until(flag_send_sig, RCCE_FLAG_SET);
  37. RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_UNSET, ME);
  38. for (i=0; i<NUES; i++) {
  39. RCCE_get((t_vcharp)(&sig_read), (t_vcharp)(&sig_array[i]), sizeof(int), ME);
  40. printf("I am %d and signal of %d is %d\n",ME,i,sig_read);
  41. }
  42. RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_SET, ME);
  43. } else {
  44. RCCE_flag_read(flag_rec_sig, &receiver_status, 0);
  45. if (receiver_status == RCCE_FLAG_UNSET) printf("I am %d kai gamietai to sumpan\n",ME);
  46. while (receiver_status == RCCE_FLAG_UNSET) {//unable to send sig
  47. //printf("I am %d and flag_rec_sig is taken");
  48. RCCE_flag_read(flag_rec_sig, &receiver_status, 0);
  49. }
  50. //RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_SET, 0);
  51. RCCE_put((t_vcharp)(&sig_array[ME]),(t_vcharp)(&sig_source), sizeof(int), 0);
  52. //RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_UNSET, 0);
  53. //RCCE_flag_write(&flag_send_sig, RCCE_FLAG_SET, 0);
  54. printf("I am %d and i have sent my signal %d\n",ME,sig_source);
  55. }
  56. RCCE_finalize();
  57. return(0);
  58. }