Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Replace int by size_t.
[simgrid.git] / teshsuite / smpi / macro-partial-shared-communication / macro-partial-shared-communication.c
index 69841a8..440a41e 100644 (file)
 #include <assert.h>
 
 // Set the elements between buf[start] and buf[stop-1] to (i+value)%256
-void set(uint8_t *buf, int start, int stop, uint8_t value) {
-  for(int i = start; i < stop; i++) {
+void set(uint8_t *buf, size_t start, size_t stop, uint8_t value) {
+  for(size_t i = start; i < stop; i++) {
     buf[i] = (i+value)%256;
   }
 }
 
 // Return the number of times that an element is equal to (i+value)%256 between buf[start] and buf[stop-1].
-int count_all(uint8_t *buf, int start, int stop, uint8_t value) {
-  int occ = 0;
-  for(int i = start ; i < stop ; i++) {
+int count_all(uint8_t *buf, size_t start, size_t stop, uint8_t value) {
+  size_t occ = 0;
+  for(size_t i = start ; i < stop ; i++) {
     if(buf[i] == (i+value)%256) {
       occ ++;
     }
@@ -29,18 +29,18 @@ int count_all(uint8_t *buf, int start, int stop, uint8_t value) {
 }
 
 // Return true iff the values from buf[start] to buf[stop-1] are all equal to (i+value)%256.
-int check_all(uint8_t *buf, int start, int stop, uint8_t value) {
-  int occ = count_all(buf, start, stop, value);
+int check_all(uint8_t *buf, size_t start, size_t stop, uint8_t value) {
+  size_t occ = count_all(buf, start, stop, value);
   return occ == stop-start;
 }
 
 // Return true iff "enough" elements are equal to (i+value)%256 between buf[start] and buf[stop-1].
-int check_enough(uint8_t *buf, int start, int stop, uint8_t value) {
+int check_enough(uint8_t *buf, size_t start, size_t stop, uint8_t value) {
   int page_size = 0x1000;
-  int size = stop-start;
+  size_t size = stop-start;
   if(size <= 2*page_size) // we are not sure to have a whole page that is shared
     return 1;
-  int occ = count_all(buf, start, stop, value);
+  size_t occ = count_all(buf, start, stop, value);
   return occ >= size - 2*page_size;
 }
 
@@ -49,8 +49,8 @@ int main(int argc, char *argv[])
   MPI_Init(&argc, &argv);
   int rank;
   int size;
-  int mem_size = 0x10000000;
-  int shared_blocks[] = {
+  size_t mem_size = 0x10000000;
+  size_t shared_blocks[] = {
     0,         0x1234567,
     0x1300000, 0x1300010,
     0x3456789, 0x3457890,
@@ -58,7 +58,7 @@ int main(int argc, char *argv[])
     0x5555565, 0x5600000,
     0x8000000, 0x10000000
   };
-  int nb_blocks = (sizeof(shared_blocks)/sizeof(int))/2;
+  int nb_blocks = (sizeof(shared_blocks)/sizeof(size_t))/2;
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
   MPI_Comm_size(MPI_COMM_WORLD, &size);
   //Let's Allocate a shared memory buffer
@@ -71,8 +71,8 @@ int main(int argc, char *argv[])
   // Even processes write their rank in private blocks
   if(rank%2 == 0) {
     for(int i = 0; i < nb_blocks-1; i++) {
-      int start = shared_blocks[2*i+1];
-      int stop = shared_blocks[2*i+2];
+      size_t start = shared_blocks[2*i+1];
+      size_t stop = shared_blocks[2*i+2];
       set(buf, start, stop, rank);
     }
   }
@@ -88,10 +88,10 @@ int main(int argc, char *argv[])
   // Odd processes verify that they successfully received the message
   if(rank%2 == 1) {
     for(int i = 0; i < nb_blocks-1; i++) {
-      int start = shared_blocks[2*i+1];
-      int stop = shared_blocks[2*i+2];
+      size_t start = shared_blocks[2*i+1];
+      size_t stop = shared_blocks[2*i+2];
       int comm = check_all(buf, start, stop, rank-1);
-      printf("[%d] The result of the (normal) communication check for block (0x%x, 0x%x) is: %d\n", rank, start, stop, comm);
+      printf("[%d] The result of the (normal) communication check for block (0x%lx, 0x%lx) is: %d\n", rank, start, stop, comm);
     }
     memset(buf, rank, mem_size);
   }
@@ -111,10 +111,10 @@ int main(int argc, char *argv[])
   // Odd processes verify that they successfully received the message
   if(rank%2 == 1) {
     for(int i = 0; i < nb_blocks-1; i++) {
-      int start = shared_blocks[2*i+1];
-      int stop = shared_blocks[2*i+2];
+      size_t start = shared_blocks[2*i+1];
+      size_t stop = shared_blocks[2*i+2];
       int comm = check_all(buf, start, stop, rank-1);
-      printf("[%d] The result of the (shifted) communication check for block (0x%x, 0x%x) is: %d\n", rank, start, stop, comm);
+      printf("[%d] The result of the (shifted) communication check for block (0x%lx, 0x%lx) is: %d\n", rank, start, stop, comm);
     }
   }