RCCE_test.c 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //#include <string.h>
  2. #include <stdio.h>
  3. #include "RCCE.h"
  4. #define max(x,y) ((x)>(y)?(x):(y))
  5. #define LINE_SIZE 8 //number of bytes
  6. int RCCE_APP(int argc, char **argv){
  7. int ME, NUES, i, dummy=0;
  8. int *sig_array, *sig_array_local, sig_source, *sig_read_ar;
  9. RCCE_FLAG flag_rec_sig,flag_send_sig;
  10. RCCE_FLAG_STATUS receiver_status;
  11. int error, str_len;
  12. char error_str[64];
  13. RCCE_init(&argc, &argv);
  14. // RCCE_debug_set(RCCE_DEBUG_ALL);
  15. ME = RCCE_ue();
  16. NUES = RCCE_num_ues();
  17. RCCE_flag_alloc(&flag_rec_sig);
  18. RCCE_flag_alloc(&flag_send_sig);
  19. RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_SET, ME);
  20. RCCE_flag_write(&flag_send_sig, RCCE_FLAG_UNSET, ME);
  21. sig_array = (int *) RCCE_malloc(NUES * LINE_SIZE * sizeof(int));//NUES * NUES
  22. sig_array_local = (int *) malloc(LINE_SIZE * sizeof(int));
  23. sig_read_ar = (int *) malloc(LINE_SIZE * sizeof(int));
  24. for (i=0; i<LINE_SIZE; i++)
  25. sig_array_local[i] = (ME+1) * 100;
  26. //for (i=0; i<NUES; i++) {
  27. //RCCE_get((t_vcharp)(&sig_read_ar), (t_vcharp)(&sig_array), NUES * sizeof(int), ME);
  28. //printf("I am %d and init signal of %d is %d\n",ME,i,sig_array_local[i]);
  29. //}
  30. /*
  31. if (ME == 0) sig_source = 0;
  32. else if (ME == 1) sig_source = 100;
  33. else if (ME == 2) sig_source = 200;
  34. else sig_source = 300;
  35. */
  36. //for (i=0; i<NUES; i++)
  37. //if (ME == 0) {//ME*NUES
  38. error = RCCE_put((t_vcharp)(&sig_array[ME*LINE_SIZE]), (t_vcharp)(&sig_array_local[0]), LINE_SIZE * sizeof(int), ME);
  39. if (error != RCCE_SUCCESS) {
  40. RCCE_error_string(error, error_str, &str_len);
  41. printf("I am %d and i got an error in put with descr %s\n",ME,error_str);
  42. }
  43. //RCCE_put((t_vcharp)(sig_array), (t_vcharp)(&sig_source), NUES*sizeof(int), ME);
  44. RCCE_get((t_vcharp)(&sig_read_ar[0]), (t_vcharp)(&sig_array[ME*LINE_SIZE]), LINE_SIZE * sizeof(int), ME);
  45. for (i=0; i<LINE_SIZE; i++) {
  46. //RCCE_get((t_vcharp)(&sig_read_ar), (t_vcharp)(&sig_array), NUES * sizeof(int), ME);
  47. printf("I am %d and signal of %d is %d\n",ME,i,sig_read_ar[i]);
  48. }
  49. //}
  50. //}
  51. RCCE_barrier(&RCCE_COMM_WORLD);
  52. /*if (ME == 0) {
  53. for (i=0; i<100000; i++)
  54. dummy++;
  55. printf("I am 0 and i finished my first round my source is %d\n",sig_source);
  56. //RCCE_wait_until(flag_rec_sig, RCCE_FLAG_UNSET);
  57. //RCCE_wait_until(flag_send_sig, RCCE_FLAG_SET);
  58. RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_UNSET, ME);
  59. for (i=0; i<NUES; i++) {
  60. RCCE_get((t_vcharp)(&sig_read), (t_vcharp)(&sig_array[i]), sizeof(int), ME);
  61. printf("I am %d and signal of %d is %d\n",ME,i,sig_read);
  62. }
  63. RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_SET, ME);
  64. } else {
  65. RCCE_flag_read(flag_rec_sig, &receiver_status, 0);
  66. if (receiver_status == RCCE_FLAG_UNSET) printf("I am %d kai gamietai to sumpan\n",ME);
  67. while (receiver_status == RCCE_FLAG_UNSET) {//unable to send sig
  68. //printf("I am %d and flag_rec_sig is taken");
  69. RCCE_flag_read(flag_rec_sig, &receiver_status, 0);
  70. }
  71. //RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_SET, 0);
  72. RCCE_put((t_vcharp)(&sig_array[ME]),(t_vcharp)(&sig_source), sizeof(int), 0);
  73. //RCCE_flag_write(&flag_rec_sig, RCCE_FLAG_UNSET, 0);
  74. //RCCE_flag_write(&flag_send_sig, RCCE_FLAG_SET, 0);
  75. printf("I am %d and i have sent my signal %d\n",ME,sig_source);
  76. }*/
  77. RCCE_finalize();
  78. return(0);
  79. }