Skip to content

Commit

Permalink
clean and optimized idx and raw io
Browse files Browse the repository at this point in the history
  • Loading branch information
sidharth87 committed May 12, 2017
1 parent 3d658bb commit 6a61cbd
Show file tree
Hide file tree
Showing 21 changed files with 636 additions and 338 deletions.
2 changes: 2 additions & 0 deletions Error_List
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
./tutorial/single_buffer_idx_write -g 34x34x34 -l 34x34x34 -f X2 -t 1 -v VL

mpirun -n 2 ./tutorial/single_buffer_idx_write -g 8x8x8 -l 8x8x4 -f X2 -t 1 -v VL

mpirun -n 10 ./tutorial/single_buffer_single_variable_read -g 656x290x170 -l 328x58x170 -f ABC -t 0 -v 1
42 changes: 21 additions & 21 deletions pidx/PIDX_close.c
Original file line number Diff line number Diff line change
Expand Up @@ -191,31 +191,31 @@ static void PIDX_debug_output(PIDX_file file, int gi, int svi, int evi, int io_t
else if (file->idx->io_type == PIDX_GLOBAL_PARTITION_IDX_IO)
fprintf(stderr, "PIDX_GLOBAL_PARTITION_IDX_IO %s\n", file->idx->filename);

fprintf(stderr, "[%d : %d %d] [%d %d %d : %d]\n", file->idx->current_time_step, file->idx_c->grank, file->idx_c->gnprocs, (int) file->idx->bounds[0], (int) file->idx->bounds[1], (int) file->idx->bounds[2], file->idx->variable_count);
if (file->idx->io_type != PIDX_RAW_IO)
{
fprintf(stderr, "[%d : %d %d] [%d %d %d : %d]\n", file->idx->current_time_step, file->idx_c->grank, file->idx_c->gnprocs, (int) file->idx->bounds[0], (int) file->idx->bounds[1], (int) file->idx->bounds[2], file->idx->variable_count);

if (file->idx->reg_box_set == PIDX_CLOSEST_POWER_TWO)
fprintf(stderr, "Box set using PIDX_CLOSEST_POWER_TWO %d %d %d\n", (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2]);
else if (file->idx->reg_box_set == PIDX_USER_RST_BOX)
fprintf(stderr, "Box set by user (PIDX_USER_RST_BOX) %d %d %d\n", (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2]);
else if (file->idx->reg_box_set == PIDX_BOX_PER_PROCESS)
fprintf(stderr, "Box set automatic for box per process case (PIDX_BOX_PER_PROCESS) %d %d %d\n", (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2]);
else if (file->idx->reg_box_set == PIDX_BOX_FROM_BITSTRING)
fprintf(stderr, "Box set by bitstring (PIDX_BOX_FROM_BITSTRING) %d %d %d\n", (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2]);
if (file->idx->reg_box_set == PIDX_CLOSEST_POWER_TWO)
fprintf(stderr, "Box set using PIDX_CLOSEST_POWER_TWO %d %d %d\n", (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2]);
else if (file->idx->reg_box_set == PIDX_USER_RST_BOX)
fprintf(stderr, "Box set by user (PIDX_USER_RST_BOX) %d %d %d\n", (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2]);
else if (file->idx->reg_box_set == PIDX_BOX_PER_PROCESS)
fprintf(stderr, "Box set automatic for box per process case (PIDX_BOX_PER_PROCESS) %d %d %d\n", (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2]);
else if (file->idx->reg_box_set == PIDX_BOX_FROM_BITSTRING)
fprintf(stderr, "Box set by bitstring (PIDX_BOX_FROM_BITSTRING) %d %d %d\n", (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2]);

fprintf(stderr, "Compression Bit rate set to %f\n", file->idx->compression_bit_rate);
fprintf(stderr, "Compression Bit rate set to %f\n", file->idx->compression_bit_rate);

if (file->idx->endian == 1)
fprintf(stderr, "Little Endian | ");
else if (file->idx->endian == 0)
fprintf(stderr, "Big Endian | ");
if (file->idx->endian == 1)
fprintf(stderr, "Little Endian | ");
else if (file->idx->endian == 0)
fprintf(stderr, "Big Endian | ");

if (file->idx->flip_endian == 1)
fprintf(stderr, "Endian Flipping Done\n");
if (file->idx->flip_endian == 0)
fprintf(stderr, "Endian Flipping Not Done\n");
if (file->idx->flip_endian == 1)
fprintf(stderr, "Endian Flipping Done\n");
if (file->idx->flip_endian == 0)
fprintf(stderr, "Endian Flipping Not Done\n");

if (file->idx->io_type != PIDX_RAW_IO)
{
fprintf(stderr, "Partition count %d = %d x %d x %d Partitio size = %d x %d x %d\n", file->idx_d->partition_count[0] * file->idx_d->partition_count[1] * file->idx_d->partition_count[2], file->idx_d->partition_count[0], file->idx_d->partition_count[1], file->idx_d->partition_count[2], file->idx_d->partition_size[0], file->idx_d->partition_size[1], file->idx_d->partition_size[2]);
fprintf(stderr, "Rst = %d Comp = %d\n", file->idx->enable_rst, file->idx->compression_type);
fprintf(stderr, "Blocks Per File %d Bits per block %d File Count %d\n", file->idx->blocks_per_file, file->idx->bits_per_block, file->idx_d->max_file_count);
Expand Down Expand Up @@ -515,7 +515,7 @@ static void PIDX_debug_output(PIDX_file file, int gi, int svi, int evi, int io_t
}

//grp_rst_hz_chunk_agg_io = grp_rst_hz_chunk_agg_io + rst_all;
fprintf(stderr, "[%s] [%d %d %d : %d %d %d] [%d] [T %d R %d N %d V %d] : [%.4f + %.4f (%.4f = %.4f + %.4f + %.4f) = %.4f] + %.4f [%.4f %.4f]\n", file->idx->filename, (int)file->idx->bounds[0], (int)file->idx->bounds[1], (int)file->idx->bounds[2], (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2], pidx_global_variable, file->idx->current_time_step, file->idx_c->grank, file->idx_c->gnprocs, (evi - svi),
fprintf(stderr, "[RAW] [%s] [%d %d %d : %d %d %d] [%d] [T %d R %d N %d V %d] : [%.4f + %.4f (%.4f = %.4f + %.4f + %.4f) = %.4f] + %.4f [%.4f %.4f]\n", file->idx->filename, (int)file->idx->bounds[0], (int)file->idx->bounds[1], (int)file->idx->bounds[2], (int)file->idx->reg_patch_size[0], (int)file->idx->reg_patch_size[1], (int)file->idx->reg_patch_size[2], pidx_global_variable, file->idx->current_time_step, file->idx_c->grank, file->idx_c->gnprocs, (evi - svi),
group_total,
rst_all,
r1 + r2 + r3,
Expand Down
6 changes: 5 additions & 1 deletion pidx/PIDX_file_create.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,11 @@ PIDX_return_code PIDX_file_create(const char* filename, PIDX_flags flags, PIDX_a

memset((*file)->idx->bitPattern, 0, 512);
memset((*file)->idx->bitSequence, 0, 512);
memset((*file)->idx->reg_patch_size, 0, sizeof(unsigned long long) * PIDX_MAX_DIMENSIONS);
//memset((*file)->idx->reg_patch_size, 0, sizeof(unsigned long long) * PIDX_MAX_DIMENSIONS);
(*file)->idx->reg_patch_size[0] = -1;
(*file)->idx->reg_patch_size[1] = -1;
(*file)->idx->reg_patch_size[2] = -1;


(*file)->idx->reg_box_set = PIDX_BOX_PER_PROCESS;
(*file)->idx->compression_factor = 1;
Expand Down
4 changes: 4 additions & 0 deletions pidx/core/PIDX_agg/PIDX_agg.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ PIDX_return_code PIDX_agg_random_buf_create_multiple_level(PIDX_agg_id id, Agg_b
for (j = 0; j < var_grp->variable[i]->vps * ab->agg_f; j++)
{
id->agg_r[k][i - id->fi][j] = id->idx->random_agg_list[id->idx->random_agg_counter];

if (id->idx->random_agg_counter >= id->idx_c->gnprocs)
id->idx->random_agg_counter = 0;

id->idx->random_agg_counter++;
}
}
Expand Down
37 changes: 28 additions & 9 deletions pidx/io/agg_io.c
Original file line number Diff line number Diff line change
@@ -1,19 +1,27 @@
#include "../PIDX_inc.h"
static int lgi = 0;

static PIDX_return_code PIDX_global_async_io(PIDX_io file, PIDX_file_io_id **io_id, Agg_buffer **agg_buffer, PIDX_block_layout* block_layout_by_level, MPI_File *fp, MPI_Request *request, int svi, int layout_start, int layout_end, int agg_io_level, int file_zero, int mode);
static PIDX_return_code PIDX_global_async_io(PIDX_io file, PIDX_file_io_id **io_id,
Agg_buffer **agg_buffer,
PIDX_block_layout* block_layout_by_level,
MPI_File *fp, MPI_Request *request,
int svi,
int lvi,
int layout_start, int layout_end,
int agg_io_level, int file_zero, int mode);

static PIDX_return_code PIDX_global_aggregate(PIDX_io file, PIDX_agg_id** agg_id,
Agg_buffer** agg_buffer,
PIDX_block_layout* block_layout_by_level,
int svi,
int evi,
int lvi,
int layout_start,
int agg_io_level, int file_status, int agg_mode, int mode);

static PIDX_return_code PIDX_shared_block_aggregate(PIDX_io file, PIDX_shared_block_agg_id* agg_id, Agg_buffer** agg_buffer, PIDX_block_layout* block_layout_by_level, int svi, int mode);

PIDX_return_code data_io(PIDX_io file, int gi, int start_index, int mode)
PIDX_return_code data_io(PIDX_io file, int gi, int local_var_index, int start_index, int end_index, int mode)
{
int ret;
PIDX_variable_group var_grp = file->idx->variable_grp[gi];
Expand All @@ -24,6 +32,7 @@ PIDX_return_code data_io(PIDX_io file, int gi, int start_index, int mode)
var_grp->f0_block_layout_by_level,
idx->fp_file_zero, idx->request_file_zero,
start_index,
local_var_index,
var_grp->f0_start_layout_index, var_grp->f0_end_layout_index,
var_grp->agg_l_f0, 0, mode);
if (ret != PIDX_success)
Expand All @@ -38,6 +47,7 @@ PIDX_return_code data_io(PIDX_io file, int gi, int start_index, int mode)
idx->fp_shared,
idx->request_shared,
start_index,
local_var_index,
var_grp->shared_start_layout_index, var_grp->shared_end_layout_index,
var_grp->agg_l_shared, 1, mode);
if (ret != PIDX_success)
Expand All @@ -52,6 +62,7 @@ PIDX_return_code data_io(PIDX_io file, int gi, int start_index, int mode)
idx->fp_non_shared,
idx->request_non_shared,
start_index,
local_var_index,
var_grp->nshared_start_layout_index, var_grp->nshared_end_layout_index,
var_grp->agg_l_nshared, 2, mode);
if (ret != PIDX_success)
Expand All @@ -64,19 +75,21 @@ PIDX_return_code data_io(PIDX_io file, int gi, int start_index, int mode)
}


static PIDX_return_code PIDX_global_async_io(PIDX_io file, PIDX_file_io_id **io_id, Agg_buffer **agg_buffer, PIDX_block_layout* block_layout_by_level, MPI_File *fp, MPI_Request *request, int svi, int layout_start, int layout_end, int agg_io_level, int file_zero, int mode)
static PIDX_return_code PIDX_global_async_io(PIDX_io file, PIDX_file_io_id **io_id, Agg_buffer **agg_buffer, PIDX_block_layout* block_layout_by_level, MPI_File *fp, MPI_Request *request, int svi, int lvi, int layout_start, int layout_end, int agg_io_level, int file_zero, int mode)
{
int j;
int ret = 0;
int j_1 = 0;
svi = svi - lvi;
//printf("svi = %d\n", svi);

for(j = layout_start ; j < agg_io_level; j++)
{
j_1 = j - layout_start;
Agg_buffer temp_agg = agg_buffer[svi][j_1];
PIDX_block_layout temp_layout = block_layout_by_level[j_1];

io_id[svi][j_1] = PIDX_file_io_init(file->idx, file->idx_d, file->idx_c, svi, svi);
io_id[svi][j_1] = PIDX_file_io_init(file->idx, file->idx_d, file->idx_c, svi + lvi, svi + lvi);

if (file->idx_dbg->debug_do_io == 1)
{
Expand Down Expand Up @@ -108,7 +121,7 @@ static PIDX_return_code PIDX_global_async_io(PIDX_io file, PIDX_file_io_id **io_
}


PIDX_return_code data_aggregate(PIDX_io file, int gi, int start_index, int local_var_index, int agg_mode, int mode )
PIDX_return_code data_aggregate(PIDX_io file, int gi, int local_var_index, int start_index, int end_index, int agg_mode, int mode )
{
int ret = 0;
lgi = gi;
Expand All @@ -123,6 +136,7 @@ PIDX_return_code data_aggregate(PIDX_io file, int gi, int start_index, int local
idx->f0_agg_buffer,
var_grp->f0_block_layout_by_level,
start_index,
end_index,
local_var_index,
var_grp->f0_start_layout_index,
var_grp->agg_l_f0, 2, agg_mode, mode);
Expand All @@ -137,6 +151,7 @@ PIDX_return_code data_aggregate(PIDX_io file, int gi, int start_index, int local
idx->shared_agg_buffer,
var_grp->shared_block_layout_by_level,
start_index,
end_index,
local_var_index,
var_grp->shared_start_layout_index,
var_grp->agg_l_shared, 0, agg_mode, mode);
Expand All @@ -151,6 +166,7 @@ PIDX_return_code data_aggregate(PIDX_io file, int gi, int start_index, int local
idx->nshared_agg_buffer,
var_grp->nshared_block_layout_by_level,
start_index,
end_index,
local_var_index,
var_grp->nshared_start_layout_index,
var_grp->agg_l_nshared, 1, agg_mode, mode);
Expand Down Expand Up @@ -199,6 +215,7 @@ static PIDX_return_code PIDX_global_aggregate(PIDX_io file, PIDX_agg_id** agg_id
Agg_buffer** agg_buffer,
PIDX_block_layout* block_layout_by_level,
int svi,
int evi,
int lvi,
int layout_start,
int agg_io_level, int file_status, int agg_mode, int mode)
Expand All @@ -208,16 +225,18 @@ static PIDX_return_code PIDX_global_aggregate(PIDX_io file, PIDX_agg_id** agg_id
PIDX_time time = file->idx_d->time;

int j_1 = 0;
//int si = 0;
//if (layout_start != 0)
// si = agg_io_level - 1;
svi = svi - lvi;
evi = evi - lvi;

for (j = layout_start; j < agg_io_level; j++)
{
j_1 = j - layout_start;
if (agg_mode == AGG_SETUP_AND_PERFORM || agg_mode == AGG_SETUP)
{
time->agg_init_start[lgi][svi][j] = PIDX_get_time();
agg_id[svi][j_1] = PIDX_agg_init(file->idx, file->idx_d, file->idx_c, svi, svi, lvi);
//printf("svi %d\n", svi);
//agg_id[svi][j_1] = PIDX_agg_init(file->idx, file->idx_d, file->idx_c, svi + lvi, svi + lvi, lvi);
agg_id[svi][j_1] = PIDX_agg_init(file->idx, file->idx_d, file->idx_c, svi + lvi, evi + lvi, lvi);
agg_buffer[svi][j_1] = malloc(sizeof(*(agg_buffer[svi][j_1])));
memset(agg_buffer[svi][j_1], 0, sizeof(*(agg_buffer[svi][j_1])));

Expand Down
4 changes: 2 additions & 2 deletions pidx/io/agg_io.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#ifndef __AGG_IO_H
#define __AGG_IO_H

PIDX_return_code data_io(PIDX_io file, int gi, int start_index, int mode );
PIDX_return_code data_io(PIDX_io file, int gi, int local_var_index, int start_index, int end_index, int mode);

PIDX_return_code data_aggregate(PIDX_io file, int gi, int start_index, int local_variable_index, int agg_mode, int mode );
PIDX_return_code data_aggregate(PIDX_io file, int gi, int local_var_index, int start_index, int end_index, int agg_mode, int mode );

#endif
2 changes: 1 addition & 1 deletion pidx/io/blocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,6 @@ PIDX_return_code populate_global_bit_string(PIDX_io file, int mode)
}
else
{

FILE* agg_file;
//agg_file = fopen(file->idx->agg_list_filename, "r");
agg_file = fopen("agg_list1", "r");
Expand Down Expand Up @@ -967,6 +966,7 @@ PIDX_return_code create_non_shared_block_layout(PIDX_io file, int gi, int hz_lev
var_grp->nshared_block_layout = malloc(sizeof (*var_grp->nshared_block_layout));
memset(var_grp->nshared_block_layout, 0, sizeof (*var_grp->nshared_block_layout));

//printf("var_grp->nshared_layout_count %d %d %d\n", var_grp->f0_layout_count, var_grp->shared_layout_count, var_grp->nshared_layout_count);
var_grp->nshared_block_layout_by_level = malloc(sizeof (*var_grp->nshared_block_layout_by_level) * var_grp->nshared_layout_count);
memset(var_grp->nshared_block_layout_by_level, 0, sizeof (*var_grp->nshared_block_layout_by_level) * var_grp->nshared_layout_count);

Expand Down
16 changes: 8 additions & 8 deletions pidx/io/global_partition_idx_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ PIDX_return_code PIDX_global_partition_idx_write(PIDX_io file, int gi, int svi,
// Setup 7: Setup aggregation buffers
for (li = si; li <= ei; li = li + 1)
{
ret = data_aggregate(file, gi, li, si, AGG_SETUP, PIDX_WRITE);
ret = data_aggregate(file, gi, si, li, li, AGG_SETUP, PIDX_WRITE);
if (ret != PIDX_success)
{
fprintf(stderr,"File %s Line %d\n", __FILE__, __LINE__);
Expand All @@ -120,7 +120,7 @@ PIDX_return_code PIDX_global_partition_idx_write(PIDX_io file, int gi, int svi,
// Setup 8: Performs data aggregation
for (li = si; li <= ei; li = li + 1)
{
ret = data_aggregate(file, gi, li, si, AGG_PERFORM, PIDX_WRITE);
ret = data_aggregate(file, gi, si, li, li, AGG_PERFORM, PIDX_WRITE);
if (ret != PIDX_success)
{
fprintf(stderr,"File %s Line %d\n", __FILE__, __LINE__);
Expand All @@ -134,15 +134,15 @@ PIDX_return_code PIDX_global_partition_idx_write(PIDX_io file, int gi, int svi,
time->io_start[gi][li] = PIDX_get_time();
create_async_buffers(file, gi);

ret = data_io(file, gi, li, PIDX_WRITE);
ret = data_io(file, gi, si, li, li, PIDX_WRITE);
if (ret != PIDX_success)
{
fprintf(stderr,"File %s Line %d\n", __FILE__, __LINE__);
return PIDX_err_file;
}

wait_and_destroy_async_buffers(file, gi);
finalize_aggregation(file, gi, li);
finalize_aggregation(file, gi, li, si);
time->io_end[gi][li] = PIDX_get_time();
}

Expand Down Expand Up @@ -271,7 +271,7 @@ PIDX_return_code PIDX_global_partition_idx_read(PIDX_io file, int gi, int svi, i
// Setup 5: Setup aggregation buffers
for (li = si; li <= ei; li = li + 1)
{
ret = data_aggregate(file, gi, li, si, AGG_SETUP, PIDX_READ);
ret = data_aggregate(file, gi, si, li, li, AGG_SETUP, PIDX_READ);
if (ret != PIDX_success)
{
fprintf(stderr,"File %s Line %d\n", __FILE__, __LINE__);
Expand All @@ -284,7 +284,7 @@ PIDX_return_code PIDX_global_partition_idx_read(PIDX_io file, int gi, int svi, i
{
time->io_start[gi][li] = PIDX_get_time();

ret = data_io(file, gi, li, PIDX_READ);
ret = data_io(file, gi, si, li, li, PIDX_READ);
if (ret != PIDX_success)
{
fprintf(stderr,"File %s Line %d\n", __FILE__, __LINE__);
Expand All @@ -297,13 +297,13 @@ PIDX_return_code PIDX_global_partition_idx_read(PIDX_io file, int gi, int svi, i
// Setup 7: Performs data aggregation
for (li = si; li <= ei; li = li + 1)
{
ret = data_aggregate(file, gi, li, si, AGG_PERFORM, PIDX_READ);
ret = data_aggregate(file, gi, si, li, li, AGG_PERFORM, PIDX_READ);
if (ret != PIDX_success)
{
fprintf(stderr,"File %s Line %d\n", __FILE__, __LINE__);
return PIDX_err_file;
}
finalize_aggregation(file, gi, li);
finalize_aggregation(file, gi, li, si);
}
//

Expand Down
3 changes: 2 additions & 1 deletion pidx/io/hz_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ PIDX_return_code hz_io(PIDX_io file, int gi, int mode)
file->idx_d->time->hz_io_end[lgi][cvi][j] = MPI_Wtime();
}

//printf("X %d %d %d Y %d %d %d\n", var_grp->nshared_start_layout_index, var_grp->agg_l_nshared, var_grp->nshared_end_layout_index, var_grp->shared_start_layout_index, var_grp->agg_l_shared, var_grp->shared_end_layout_index);
for (j = var_grp->agg_l_nshared; j < var_grp->nshared_end_layout_index; j++)
{
file->idx_d->time->hz_io_start[lgi][cvi][j] = MPI_Wtime();
Expand Down Expand Up @@ -364,7 +365,7 @@ static PIDX_return_code encode_and_uncompress(PIDX_io file)

time->hz_start[lgi][cvi] = PIDX_get_time();
// Verify the HZ encoding
//if(file->idx_dbg->debug_hz == 1)
if(file->idx_dbg->debug_hz == 1)
{
ret = HELPER_Hz_encode(file->hz_id);
if (ret != PIDX_success)
Expand Down
Loading

0 comments on commit 6a61cbd

Please sign in to comment.