1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
/* Write a lot of text
*/
#include <stdio.h>
#include <string.h>
#include "adios.h"
#include "adios_types.h"
#ifdef DMALLOC
#include "dmalloc.h"
#endif
int main (int argc, char ** argv)
{
char filename [256];
int rank, size, i, j, step, block;
int Offset;
int NX = 2; // number of records written per step per process
int Width=20;
int sub_blocks = 2; // number of record-blocks written per process in one step
int steps = 3;
char t[NX][Width];
MPI_Comm comm = MPI_COMM_WORLD;
/* ADIOS variables declarations for matching gwrite_temperature.ch */
int adios_err;
uint64_t adios_groupsize, adios_totalsize;
int64_t adios_handle;
MPI_Init (&argc, &argv);
MPI_Comm_rank (comm, &rank);
MPI_Comm_size (comm, &size);
//Global_bounds = sub_blocks * NX * size;
strcpy (filename, "steps.bp");
adios_init_noxml (comm);
adios_set_max_buffer_size (1);
int64_t m_adios_group;
int64_t m_adios_file;
adios_declare_group (&m_adios_group, "steps", "", adios_stat_default);
adios_select_method (m_adios_group, "MPI", "", "");
adios_define_var (m_adios_group, "NX" ,"", adios_integer ,0, 0, 0);
adios_define_var (m_adios_group, "Width" ,"", adios_integer ,0, 0, 0);
adios_define_var (m_adios_group, "nproc" ,"", adios_integer ,0, 0, 0);
for (i=0;i<sub_blocks;i++) {
adios_define_var (m_adios_group, "record" ,"", adios_byte ,"NX,Width", "", "");
}
for (step=0; step<steps; step++) {
adios_open (&m_adios_file, "steps", filename, "a", comm);
adios_groupsize = sub_blocks * (4 + 4 + 4 + (uint64_t) NX * (uint64_t)Width);
adios_group_size (m_adios_file, adios_groupsize, &adios_totalsize);
adios_write(m_adios_file, "nproc", (void *) &size);
adios_write(m_adios_file, "NX", (void *) &NX);
adios_write(m_adios_file, "Width", (void *) &Width);
/* now we will write the data for each sub block */
for (block=0;block<sub_blocks;block++) {
for (i = 0; i < NX; i++)
//print 19 chars here + '\0'
sprintf (t[i], "r%2d b%2d s%2d i%2d ", rank, block, step, i);
adios_write(m_adios_file, "record", t);
}
adios_close (m_adios_file);
}
MPI_Barrier (comm);
adios_finalize (rank);
MPI_Finalize ();
return 0;
}
|