Changeset 2480


Ignore:
Timestamp:
Oct 18, 2012, 6:20:37 PM (7 years ago)
Author:
ksherdy
Message:

Updated perflib to allow runs against individual PAPI events.

Location:
proto/gml2svg/C/xerces
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • proto/gml2svg/C/xerces/Makefile

    r2477 r2480  
    33
    44PAPI_DIR=/usr/local/papi
     5CC_EVENT=0
    56
    67ARCH=$(shell getconf LONG_BIT)
    78ifeq ($(ARCH),32)
    89    AFLAGS=-march=pentium4
    9     PAPI = -I$(PAPI_DIR)/include -L$(PAPI_DIR)/lib -lpapi -DPAPI -Ilib/cclib lib/cclib/cc.cxx
     10    PAPI = -I$(PAPI_DIR)/include -L$(PAPI_DIR)/lib -lpapi -DPAPI -DCC_EVENT=$(CC_EVENT) -Ilib/cclib -Ilib/perflib
    1011else
    1112    AFLAGS=-march=nocona -m64
    12     PAPI = -I$(PAPI_DIR)/include -L$(PAPI_DIR)/lib -lpapi -DPAPI -Ilib/cclib lib/cclib/cc.cxx
     13    PAPI = -I$(PAPI_DIR)/include -L$(PAPI_DIR)/lib -lpapi -DPAPI -DCC_EVENT=$(CC_EVENT) -Ilib/cclib -Ilib/perflib
    1314endif
    1415
     
    4950
    5051xerces_icx: gml2svg_handler.hpp gml2svg_handler.cpp gml2svg.cpp
    51         $(CC) -o gml2svg_icx gml2svg.cpp gml2svg_handler.cpp $(SRC) $(AFLAGS) -I$(LIBC) -I$(XERCES_ICX_I) -L$(XERCES_ICX_L) -l$(XERCES_ICX_l) $(FLAGS) -mstackrealign #$(PAPI) #-DSYSTEM_TIME
     52        $(CC) -o gml2svg_icx gml2svg.cpp gml2svg_handler.cpp $(SRC) $(AFLAGS) -I$(LIBC) -I$(XERCES_ICX_I) -L$(XERCES_ICX_L) -l$(XERCES_ICX_l) $(FLAGS) -mstackrealign $(PAPI) #-DSYSTEM_TIME
    5253        echo export LD_LIBRARY_PATH=$(XERCES_ICX_L)
    5354
  • proto/gml2svg/C/xerces/gml2svg.cpp

    r2474 r2480  
    11/*
    22    gml2svg.cpp
    3     Copyright (C) 2007, 2008, 2011 Ken Herdy
     3    Copyright (C) 2007, 2008, 2011, 2012
     4                Ken Herdy
    45    Version 0.9
    56    Licensed to the public under the Open Software License 3.0.
     
    1011#include <xercesc/sax2/DefaultHandler.hpp>
    1112#include <xercesc/util/XMLString.hpp>
     13#include <perfsec.h>
    1214
    1315#include "gml2svg_handler.hpp"
     
    2527using namespace std;
    2628
    27 #if defined(PAPI)
    28         #include <cc.h>
    29         CC * code_clocker;
     29#ifdef BUFFER_PROFILING
     30    BOM_Table * timer;
     31#elif PAPI
     32    CC * timer;
     33#else
     34    void * timer;
    3035#endif
    3136
     
    101106        if(gml_filename == NULL ||  svg_filename == NULL) {fprintf(stderr, "function: main, out of memory. Terminating the process ...\n"); exit(-1);}
    102107
    103         #if defined(SYSTEM_TIME)
    104                 char * csv_filename = new char[strlen(svg_dest_dir_path) + strlen("yyyy-mm-ddThh-mm-ss") + strlen(CSV_DOT_EXT) + 1];
    105                 char * csv_basename = new char[strlen("yyyy-mm-ddThh-mm-ss") +1];
    106                 if(csv_filename == NULL || csv_basename == NULL) {fprintf(stderr, "function: main, out of memory. Terminating the process ...\n"); exit(-1);}
    107 
    108                 /* create csv file */
    109                 strcpy(csv_filename,svg_dest_dir_path);
    110                 csv_basename = create_timestamp_filename();
    111                 strcat(csv_filename,csv_basename);
    112                 strcat(csv_filename,CSV_DOT_EXT);
    113                 fprintf(stdout, csv_filename);
    114 
    115                 FILE * csv_out;
    116                 if(!(csv_out = fopen(csv_filename, "w")))
    117                 {
    118                         fprintf(stderr, "Failed to open CSV file '%s' for output. Terminating the process ...\n", csv_filename); exit(-1);
    119                 }
    120         #endif
    121 
    122         #if defined(PAPI)
    123 
    124                         #define NUM_EVENTS 1
    125                         int Events[NUM_EVENTS] = {PAPI_TOT_CYC};
    126 
    127                         int cal_size = 5;
    128                         code_clocker = new CC(Events,NUM_EVENTS,cal_size,true);
    129 
    130                         string cmd_line;
    131                         for(int i=0;i<argc;i++)
    132                         {
    133                                 cmd_line += argv[i];
    134                                 cmd_line += " ";
    135                         }
    136                         code_clocker->set_cmd(cmd_line);
    137         #endif
     108        PERF_SEC_INIT(timer);
     109
     110        string cmd_line;
     111        for(int i=0;i<argc;i++)
     112        {
     113                cmd_line += argv[i];
     114                cmd_line += " ";
     115        }
    138116
    139117        int layer_count = FEATURE_LAYER_COUNT; /* ignore point geometries */
    140 
    141         #if defined(SYSTEM_TIME)
    142                 fprintf(csv_out,"%s, \n", "Xerces C (SAX)");
    143         #endif
    144 
    145         #if defined(PAPI)
    146                 code_clocker->set_param("Parser", "Xerces C (SAX)");
    147         #endif
    148118
    149119        /* Output IO Type */
     
    154124        #if defined(NAIVE_FORMATTED_IO)
    155125                fprintf(stdout,"IO = NAIVE_FORMATTED_IO\n");
    156 
    157                 #if defined(SYSTEM_TIME)
    158                         fprintf(csv_out,"\n%s,%s", "IO", "NAIVE_FORMATTED_IO");
    159                 #endif
    160 
    161                 #if defined(PAPI)
    162                         code_clocker->set_param("IO", "NAIVE_FORMATTED_IO");
    163                 #endif
    164 
     126                PERF_SEC_ADD_PARAM(timer, "IO", "NAIVE_FORMATTED_IO");
    165127        #elif defined(FORMATTED_IO)
    166128                fprintf(stdout,"IO = FORMATTED_IO\n");
    167 
    168                 #if defined(SYSTEM_TIME)
    169                         fprintf(csv_out,"\n%s,%s", "IO", "FORMATTED_IO");
    170                 #endif
    171 
    172                 #if defined(PAPI)
    173                         code_clocker->set_param("IO", "FORMATTED_IO");
    174                 #endif
    175 
     129                PERF_SEC_ADD_PARAM(timer, "IO", "FORMATTED_IO");
    176130        #elif defined(MEMCPY_IO)
    177131                fprintf(stdout,"IO = MEMCPY_IO\n");
    178 
    179                 #if defined(SYSTEM_TIME)
    180                         fprintf(csv_out,"\n%s,%s", "IO", "MEMCPY_IO");
    181                 #endif
    182 
    183                 #if defined(PAPI)
    184                         code_clocker->set_param("IO", "MEMCPY_IO");
    185                 #endif
    186 
     132                PERF_SEC_ADD_PARAM(timer, "IO", "MEMCPY_IO");
    187133        #endif
    188134
    189135        /* Output World2Screen information */
    190136        #if defined(WORLD2SCREEN)
    191                 #if defined(SYSTEM_TIME)
    192                         fprintf(csv_out,"\n%s,%s", "WORLD2SCREEN", "true");
    193                 #endif
    194 
    195                 #if defined(PAPI)
    196                         code_clocker->set_param("WORLD2SCREEN", "true");
    197                 #endif
    198 
    199137                fprintf(stdout, "World2Screen transformations = true.\n");
     138                PERF_SEC_ADD_PARAM(timer, "WORLD2SCREEN", "true");
    200139        #else
    201                 #if defined(SYSTEM_TIME)
    202                         fprintf(csv_out,"\n%s,%s", "WORLD2SCREEN", "false");
    203                 #endif
    204 
    205                 #if defined(PAPI)
    206                         code_clocker->set_param("WORLD2SCREEN", "false");
    207                 #endif
    208 
    209140                fprintf(stdout, "World2Screen transformations = false.\n");
     141                PERF_SEC_ADD_PARAM(timer, "WORLD2SCREEN", "false");
    210142        #endif
    211143
    212144        /* Set up Timing */
    213         #if defined(SYSTEM_TIME)
    214                 fprintf(csv_out,"\n\n%s,%s", "Layers", "Duration (ms)");
    215                 fprintf(csv_out,"\n%s,%s","GML Directory",gml_src_dir_path);
    216 
    217                 clock_t start;
    218                 double duration = 0;
    219                 double clocks_per_sec = (double)CLOCKS_PER_SEC;
    220         #endif
    221 
    222145        #if defined(NAIVE_FORMATTED_IO) || defined(FORMATTED_IO) || defined(MEMCPY_IO)
    223146                FILE * stats_file;
     
    242165               
    243166                /* Set layer specific GML and SVG file paths */
    244                 strcpy(gml_filename,gml_src_dir_path);
    245                 ////strcat(gml_filename,FEATURE_LNAMES[i]);
     167                strcpy(gml_filename, gml_src_dir_path);
    246168                strcat(gml_filename, feature_layers[i].lname);
    247169                strcat(gml_filename,GML_DOT_EXT);
     
    250172                fflush(stdout);
    251173
    252 
    253174                strcpy(svg_filename,svg_dest_dir_path);
    254                 ////strcat(svg_filename,FEATURE_LNAMES[i]);
    255175                strcat(svg_filename,feature_layers[i].lname);
    256176                strcat(svg_filename,SVG_DOT_EXT);
    257177
    258                 #if defined(SYSTEM_TIME)
    259                         ////fprintf(csv_out,"\n%s",FEATURE_LNAMES[i]);
    260                         fprintf(csv_out,"\n%s",feature_layers[i].lname);
    261                 #endif
    262 
    263                 #if defined(PAPI)
    264                         ////code_clocker->set_param("Layer", FEATURE_LNAMES[i]);
    265                         code_clocker->set_param("Layer", feature_layers[i].lname);
    266                 #endif
     178    PERF_SEC_ADD_PARAM(timer, "Layer", feature_layers[i].lname);
    267179
    268180                if(!(out_file = fopen(svg_filename, "w")))
     
    273185                for(int j=0;j<ITERATIONS;j++)
    274186                {
    275                         //TODO - READ FILE INTO MEMORY
    276 
    277                         #if defined(SYSTEM_TIME)
    278                                 start = clock();
    279                         #endif
    280 
    281                         #if defined(PAPI)
    282                                 code_clocker->start_interval();
    283                         #endif
    284 
     187
     188      PERF_SEC_START(timer);
    285189                        /* parse */
    286190                        try {
     
    301205                                        out_buf = new char[(fileinfo.st_size * 2)];
    302206                                        fclose(stats_file);
    303 
    304                                 // BUFFERED_IO #elif defined(MEMCPY_IO) ::_out_buf_crt = parser->GetOutputBufferPtr();
    305207                                #endif
    306208
    307209                                defaultHandler->setOutputBuffer(out_buf);
    308210
    309                                 defaultHandler->setParameters ( SCREEN_WIDTH,
     211                                                        defaultHandler->setParameters ( SCREEN_WIDTH,
    310212                                                                                SCREEN_HEIGHT,
    311213                                                                                BBOX,
    312                                                                                 ////FEATURE_LNAMES[i],
    313                                                                                 feature_layers[i].lname,
     214                                                                                                                        feature_layers[i].lname,
    314215                                                                                FEATURE_ID_LNAME,
    315                                                                                 ////FEATURE_LGEOMETRY[i],
    316                                                                                 feature_layers[i].lgeometry,
    317                                                                                 ////FEATURE_STYLES[i]
    318                                                                                 feature_layers[i].style
    319 );
    320 
     216                                                                                                                        feature_layers[i].lgeometry,
     217                                                                                                                        feature_layers[i].style);
    321218
    322219                                parser->parse(gml_filename);
    323 
    324220
    325221                        }
     
    341237                        }
    342238
    343                         #if defined(SYSTEM_TIME)
    344                                 duration = ((clock() - start)/clocks_per_sec) * 1000;
    345                                 fprintf(csv_out,",%5.10f", duration);
    346 
    347                                 if(SHOW_ITERATION_RESULTS)
    348                                 {
    349                                         ////fprintf(stdout, "'%s' interval time ~%5.10f ms.\n",FEATURE_LNAMES[i], duration);
    350                                         fprintf(stdout, "'%s' interval time ~%5.10f ms.\n",feature_layers[i].lname, duration);
    351                                 }
    352                         #endif
    353 
    354                         #if defined(PAPI)
    355                                 code_clocker->end_interval(fileinfo.st_size);
    356 
    357                                 if(SHOW_ITERATION_RESULTS)
    358                                 {
    359                                         ////fprintf(stdout, "'%s' complete.\n",FEATURE_LNAMES[i]);
    360                                         fprintf(stdout, "'%s' complete.\n",feature_layers[i].lname);
    361                                 }
    362                         #endif
     239                        PERF_SEC_END(timer, fileinfo.st_size);
     240
     241                        if(SHOW_ITERATION_RESULTS)
     242                        {
     243                                fprintf(stdout, "'%s' complete.\n\n",feature_layers[i].lname);
     244                        }
    363245
    364246                }
     
    383265                memset(svg_filename,'\0',strlen(svg_filename));
    384266
    385                 #if defined(SYSTEM_TIME)
    386                         memset(csv_filename,'\0',strlen(csv_filename));
    387                 #endif
    388         }
    389 
    390         fprintf(stdout,"\nProcessing complete.\n");
    391 
    392         #if defined(PAPI)
    393                 code_clocker->display_system_info();
    394                 code_clocker->display_raw_event_data();
    395                 code_clocker->write_xml_file();
    396         #endif
     267        }
     268
     269        fprintf(stdout,"\nProcessing complete.\n\n");
     270
     271        PERF_SEC_DUMP(timer);
     272        PERF_SEC_WRITE(timer);
    397273
    398274        if(gml_src_dir_path) {delete [] gml_src_dir_path;}
     
    401277        if(svg_filename) {delete [] svg_filename;}
    402278
    403         #if defined(SYSTEM_TIME)
    404                 fclose(csv_out);
    405                 if(csv_filename) {delete [] csv_filename;}
    406                 if(csv_basename) {delete [] csv_basename;}
    407         #endif
    408 
    409     delete parser;
     279  delete parser;
    410280        delete defaultHandler;
    411281
Note: See TracChangeset for help on using the changeset viewer.