/*       printf("comm = %d iam = %d lstride = %d coreID = %d iamIOtask = %i \n",comm, iam,lstride,coreId,(*iamIOtask)); */
 
#if defined(BGQDONT)
#include <pio.h>
#include <pio_internal.h>
#include <math.h>
#include <kernel/process.h>
#include <kernel/location.h>
#include <firmware/include/personality.h>
#include <mpix.h>
#define   Personality                    Personality_t
int rank;
int np;
int my_name_len;
char my_name[255];
void identity(const MPI_Comm comm, int *iotask)
  MPIX_Hardware_t hw;
  char message[100];
   /* Number of MPI tasks per Pset */
   int coreId;
   int *TasksPerPset;
   int *tmp;
   int i,ierr;
   Personality_t pers;
   MPI_Comm_rank(comm,&rank);
   MPI_Comm_size(comm,&np);
   MPI_Get_processor_name(my_name, &my_name_len);
   MPIX_Hardware(&hw);
   Kernel_GetPersonality(&pers, sizeof(pers));
   int numIONodes,numPsets,numNodesInPset,rankInPset;
   int numpsets, psetID, psetsize, psetrank;
   bgq_pset_info (comm, &numpsets, &psetID, &psetsize, &psetrank);
   numIONodes = numpsets; 
   numNodesInPset = psetsize; 
   rankInPset = rank; 
   numPsets = numpsets; 
   if(rank == 0) { printf("number of IO nodes in block: %i \n",numIONodes);}
   if(rank == 0) { printf("number of Psets in block : %i \n",numPsets);}