Loading source/adios2/toolkit/sst/cp/cp_common.c +2 −2 Original line number Diff line number Diff line Loading @@ -295,9 +295,9 @@ static FMField TimestepMetadataList[] = { FMOffset(struct _TimestepMetadataMsg *, CohortSize)}, {"formats", "*FFSFormatBlock", sizeof(struct FFSFormatBlock), FMOffset(struct _TimestepMetadataMsg *, Formats)}, {"metadata", "(*SstBlock)[cohort_size]", sizeof(struct _SstBlock), {"metadata", "SstBlock[cohort_size]", sizeof(struct _SstBlock), FMOffset(struct _TimestepMetadataMsg *, Metadata)}, {"attribute_data", "(*SstBlock)[cohort_size]", sizeof(struct _SstBlock), {"attribute_data", "SstBlock[cohort_size]", sizeof(struct _SstBlock), FMOffset(struct _TimestepMetadataMsg *, AttributeData)}, {"TP_TimestepInfo", "(*DP_STRUCT)[cohort_size]", 0, FMOffset(struct _TimestepMetadataMsg *, DP_TimestepInfo)}, Loading source/adios2/toolkit/sst/cp/cp_internal.h +2 −2 Original line number Diff line number Diff line Loading @@ -296,8 +296,8 @@ typedef struct _TimestepMetadataMsg int Timestep; int CohortSize; FFSFormatList Formats; SstData *Metadata; SstData *AttributeData; SstData Metadata; SstData AttributeData; void **DP_TimestepInfo; } * TSMetadataMsg; Loading source/adios2/toolkit/sst/cp/cp_reader.c +4 −1 Original line number Diff line number Diff line Loading @@ -1050,7 +1050,10 @@ extern SstStatusValue SstAdvanceStep(SstStream Stream, SstStepMode mode, Stream->ReaderTimestep = Entry->MetadataMsg->Timestep; SstFullMetadata Mdata = malloc(sizeof(struct _SstFullMetadata)); Mdata->WriterCohortSize = Entry->MetadataMsg->CohortSize; Mdata->WriterMetadata = Entry->MetadataMsg->Metadata; Mdata->WriterMetadata = malloc(sizeof(Mdata->WriterMetadata[0]) * Mdata->WriterCohortSize); for (int i = 0; i < Mdata->WriterCohortSize; i++) { Mdata->WriterMetadata[i] = &Entry->MetadataMsg->Metadata[i]; } if (Stream->DP_Interface->TimestepInfoFormats == NULL) { // DP didn't provide struct info, no valid data Loading source/adios2/toolkit/sst/cp/cp_writer.c +9 −4 Original line number Diff line number Diff line Loading @@ -1309,15 +1309,20 @@ extern void SstInternalProvideTimestep( Msg->Timestep = Timestep; /* separate metadata and DP_info to separate arrays */ Msg->Metadata = malloc(Stream->CohortSize * sizeof(SstData)); Msg->AttributeData = malloc(Stream->CohortSize * sizeof(SstData)); Msg->Metadata = malloc(Stream->CohortSize * sizeof(Msg->Metadata[0])); Msg->AttributeData = malloc(Stream->CohortSize * sizeof(Msg->Metadata[0])); Msg->DP_TimestepInfo = malloc(Stream->CohortSize * sizeof(Msg->DP_TimestepInfo[0])); int NullCount = 0; for (int i = 0; i < Stream->CohortSize; i++) { Msg->Metadata[i] = pointers[i]->Metadata; Msg->AttributeData[i] = pointers[i]->AttributeData; Msg->Metadata[i] = *(pointers[i]->Metadata); if (pointers[i]->AttributeData) { Msg->AttributeData[i] = *(pointers[i]->AttributeData); } else { Msg->AttributeData[i].DataSize = 0; Msg->AttributeData[i].block = NULL; } Msg->DP_TimestepInfo[i] = pointers[i]->DP_TimestepInfo; if (pointers[i]->DP_TimestepInfo == NULL) NullCount++; Loading source/adios2/toolkit/sst/cp/ffs_marshal.c +14 −14 Original line number Diff line number Diff line Loading @@ -1393,17 +1393,17 @@ static void LoadAttributes(SstStream Stream, TSMetadataMsg MetaData) void *BaseData; FFSTypeHandle FFSformat; if (MetaData->AttributeData[WriterRank]->DataSize == 0) if (MetaData->AttributeData[WriterRank].DataSize == 0) return; FFSformat = FFSTypeHandle_from_encode( Stream->ReaderFFSContext, MetaData->AttributeData[WriterRank]->block); MetaData->AttributeData[WriterRank].block); if (!FFShas_conversion(FFSformat)) { FMContext FMC = FMContext_from_FFS(Stream->ReaderFFSContext); FMFormat Format = FMformat_from_ID( FMC, MetaData->AttributeData[WriterRank]->block); FMC, MetaData->AttributeData[WriterRank].block); FMStructDescList List = FMcopy_struct_list(format_list_of_FMFormat(Format)); FMlocalize_structs(List); Loading @@ -1414,20 +1414,20 @@ static void LoadAttributes(SstStream Stream, TSMetadataMsg MetaData) if (FFSdecode_in_place_possible(FFSformat)) { FFSdecode_in_place(Stream->ReaderFFSContext, MetaData->AttributeData[WriterRank]->block, MetaData->AttributeData[WriterRank].block, &BaseData); } else { int DecodedLength = FFS_est_decode_length( Stream->ReaderFFSContext, MetaData->AttributeData[WriterRank]->block, MetaData->AttributeData[WriterRank]->DataSize); MetaData->AttributeData[WriterRank].block, MetaData->AttributeData[WriterRank].DataSize); BaseData = malloc(DecodedLength); FFSBuffer decode_buf = create_fixed_FFSBuffer(BaseData, DecodedLength); FFSdecode_to_buffer(Stream->ReaderFFSContext, MetaData->AttributeData[WriterRank]->block, MetaData->AttributeData[WriterRank].block, decode_buf); } if (DumpMetadata == -1) Loading Loading @@ -1560,20 +1560,20 @@ static void BuildVarList(SstStream Stream, TSMetadataMsg MetaData, calloc(sizeof(Info->DataFieldLists[0]), Stream->WriterCohortSize); } if (!MetaData->Metadata[WriterRank]->block) if (!MetaData->Metadata[WriterRank].block) { fprintf(stderr, "FAILURE! MetaData->Metadata[WriterRank]->block == " "NULL for WriterRank = %d\n", WriterRank); } FFSformat = FFSTypeHandle_from_encode( Stream->ReaderFFSContext, MetaData->Metadata[WriterRank]->block); Stream->ReaderFFSContext, MetaData->Metadata[WriterRank].block); if (!FFShas_conversion(FFSformat)) { FMContext FMC = FMContext_from_FFS(Stream->ReaderFFSContext); FMFormat Format = FMformat_from_ID(FMC, MetaData->Metadata[WriterRank]->block); FMformat_from_ID(FMC, MetaData->Metadata[WriterRank].block); FMStructDescList List = FMcopy_struct_list(format_list_of_FMFormat(Format)); FMlocalize_structs(List); Loading @@ -1584,17 +1584,17 @@ static void BuildVarList(SstStream Stream, TSMetadataMsg MetaData, if (FFSdecode_in_place_possible(FFSformat)) { FFSdecode_in_place(Stream->ReaderFFSContext, MetaData->Metadata[WriterRank]->block, &BaseData); MetaData->Metadata[WriterRank].block, &BaseData); } else { int DecodedLength = FFS_est_decode_length( Stream->ReaderFFSContext, MetaData->Metadata[WriterRank]->block, MetaData->Metadata[WriterRank]->DataSize); Stream->ReaderFFSContext, MetaData->Metadata[WriterRank].block, MetaData->Metadata[WriterRank].DataSize); BaseData = malloc(DecodedLength); FFSBuffer decode_buf = create_fixed_FFSBuffer(BaseData, DecodedLength); FFSdecode_to_buffer(Stream->ReaderFFSContext, MetaData->Metadata[WriterRank]->block, decode_buf); MetaData->Metadata[WriterRank].block, decode_buf); } if (DumpMetadata == -1) { Loading Loading
source/adios2/toolkit/sst/cp/cp_common.c +2 −2 Original line number Diff line number Diff line Loading @@ -295,9 +295,9 @@ static FMField TimestepMetadataList[] = { FMOffset(struct _TimestepMetadataMsg *, CohortSize)}, {"formats", "*FFSFormatBlock", sizeof(struct FFSFormatBlock), FMOffset(struct _TimestepMetadataMsg *, Formats)}, {"metadata", "(*SstBlock)[cohort_size]", sizeof(struct _SstBlock), {"metadata", "SstBlock[cohort_size]", sizeof(struct _SstBlock), FMOffset(struct _TimestepMetadataMsg *, Metadata)}, {"attribute_data", "(*SstBlock)[cohort_size]", sizeof(struct _SstBlock), {"attribute_data", "SstBlock[cohort_size]", sizeof(struct _SstBlock), FMOffset(struct _TimestepMetadataMsg *, AttributeData)}, {"TP_TimestepInfo", "(*DP_STRUCT)[cohort_size]", 0, FMOffset(struct _TimestepMetadataMsg *, DP_TimestepInfo)}, Loading
source/adios2/toolkit/sst/cp/cp_internal.h +2 −2 Original line number Diff line number Diff line Loading @@ -296,8 +296,8 @@ typedef struct _TimestepMetadataMsg int Timestep; int CohortSize; FFSFormatList Formats; SstData *Metadata; SstData *AttributeData; SstData Metadata; SstData AttributeData; void **DP_TimestepInfo; } * TSMetadataMsg; Loading
source/adios2/toolkit/sst/cp/cp_reader.c +4 −1 Original line number Diff line number Diff line Loading @@ -1050,7 +1050,10 @@ extern SstStatusValue SstAdvanceStep(SstStream Stream, SstStepMode mode, Stream->ReaderTimestep = Entry->MetadataMsg->Timestep; SstFullMetadata Mdata = malloc(sizeof(struct _SstFullMetadata)); Mdata->WriterCohortSize = Entry->MetadataMsg->CohortSize; Mdata->WriterMetadata = Entry->MetadataMsg->Metadata; Mdata->WriterMetadata = malloc(sizeof(Mdata->WriterMetadata[0]) * Mdata->WriterCohortSize); for (int i = 0; i < Mdata->WriterCohortSize; i++) { Mdata->WriterMetadata[i] = &Entry->MetadataMsg->Metadata[i]; } if (Stream->DP_Interface->TimestepInfoFormats == NULL) { // DP didn't provide struct info, no valid data Loading
source/adios2/toolkit/sst/cp/cp_writer.c +9 −4 Original line number Diff line number Diff line Loading @@ -1309,15 +1309,20 @@ extern void SstInternalProvideTimestep( Msg->Timestep = Timestep; /* separate metadata and DP_info to separate arrays */ Msg->Metadata = malloc(Stream->CohortSize * sizeof(SstData)); Msg->AttributeData = malloc(Stream->CohortSize * sizeof(SstData)); Msg->Metadata = malloc(Stream->CohortSize * sizeof(Msg->Metadata[0])); Msg->AttributeData = malloc(Stream->CohortSize * sizeof(Msg->Metadata[0])); Msg->DP_TimestepInfo = malloc(Stream->CohortSize * sizeof(Msg->DP_TimestepInfo[0])); int NullCount = 0; for (int i = 0; i < Stream->CohortSize; i++) { Msg->Metadata[i] = pointers[i]->Metadata; Msg->AttributeData[i] = pointers[i]->AttributeData; Msg->Metadata[i] = *(pointers[i]->Metadata); if (pointers[i]->AttributeData) { Msg->AttributeData[i] = *(pointers[i]->AttributeData); } else { Msg->AttributeData[i].DataSize = 0; Msg->AttributeData[i].block = NULL; } Msg->DP_TimestepInfo[i] = pointers[i]->DP_TimestepInfo; if (pointers[i]->DP_TimestepInfo == NULL) NullCount++; Loading
source/adios2/toolkit/sst/cp/ffs_marshal.c +14 −14 Original line number Diff line number Diff line Loading @@ -1393,17 +1393,17 @@ static void LoadAttributes(SstStream Stream, TSMetadataMsg MetaData) void *BaseData; FFSTypeHandle FFSformat; if (MetaData->AttributeData[WriterRank]->DataSize == 0) if (MetaData->AttributeData[WriterRank].DataSize == 0) return; FFSformat = FFSTypeHandle_from_encode( Stream->ReaderFFSContext, MetaData->AttributeData[WriterRank]->block); MetaData->AttributeData[WriterRank].block); if (!FFShas_conversion(FFSformat)) { FMContext FMC = FMContext_from_FFS(Stream->ReaderFFSContext); FMFormat Format = FMformat_from_ID( FMC, MetaData->AttributeData[WriterRank]->block); FMC, MetaData->AttributeData[WriterRank].block); FMStructDescList List = FMcopy_struct_list(format_list_of_FMFormat(Format)); FMlocalize_structs(List); Loading @@ -1414,20 +1414,20 @@ static void LoadAttributes(SstStream Stream, TSMetadataMsg MetaData) if (FFSdecode_in_place_possible(FFSformat)) { FFSdecode_in_place(Stream->ReaderFFSContext, MetaData->AttributeData[WriterRank]->block, MetaData->AttributeData[WriterRank].block, &BaseData); } else { int DecodedLength = FFS_est_decode_length( Stream->ReaderFFSContext, MetaData->AttributeData[WriterRank]->block, MetaData->AttributeData[WriterRank]->DataSize); MetaData->AttributeData[WriterRank].block, MetaData->AttributeData[WriterRank].DataSize); BaseData = malloc(DecodedLength); FFSBuffer decode_buf = create_fixed_FFSBuffer(BaseData, DecodedLength); FFSdecode_to_buffer(Stream->ReaderFFSContext, MetaData->AttributeData[WriterRank]->block, MetaData->AttributeData[WriterRank].block, decode_buf); } if (DumpMetadata == -1) Loading Loading @@ -1560,20 +1560,20 @@ static void BuildVarList(SstStream Stream, TSMetadataMsg MetaData, calloc(sizeof(Info->DataFieldLists[0]), Stream->WriterCohortSize); } if (!MetaData->Metadata[WriterRank]->block) if (!MetaData->Metadata[WriterRank].block) { fprintf(stderr, "FAILURE! MetaData->Metadata[WriterRank]->block == " "NULL for WriterRank = %d\n", WriterRank); } FFSformat = FFSTypeHandle_from_encode( Stream->ReaderFFSContext, MetaData->Metadata[WriterRank]->block); Stream->ReaderFFSContext, MetaData->Metadata[WriterRank].block); if (!FFShas_conversion(FFSformat)) { FMContext FMC = FMContext_from_FFS(Stream->ReaderFFSContext); FMFormat Format = FMformat_from_ID(FMC, MetaData->Metadata[WriterRank]->block); FMformat_from_ID(FMC, MetaData->Metadata[WriterRank].block); FMStructDescList List = FMcopy_struct_list(format_list_of_FMFormat(Format)); FMlocalize_structs(List); Loading @@ -1584,17 +1584,17 @@ static void BuildVarList(SstStream Stream, TSMetadataMsg MetaData, if (FFSdecode_in_place_possible(FFSformat)) { FFSdecode_in_place(Stream->ReaderFFSContext, MetaData->Metadata[WriterRank]->block, &BaseData); MetaData->Metadata[WriterRank].block, &BaseData); } else { int DecodedLength = FFS_est_decode_length( Stream->ReaderFFSContext, MetaData->Metadata[WriterRank]->block, MetaData->Metadata[WriterRank]->DataSize); Stream->ReaderFFSContext, MetaData->Metadata[WriterRank].block, MetaData->Metadata[WriterRank].DataSize); BaseData = malloc(DecodedLength); FFSBuffer decode_buf = create_fixed_FFSBuffer(BaseData, DecodedLength); FFSdecode_to_buffer(Stream->ReaderFFSContext, MetaData->Metadata[WriterRank]->block, decode_buf); MetaData->Metadata[WriterRank].block, decode_buf); } if (DumpMetadata == -1) { Loading