aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jenkinsfile2
-rw-r--r--libcuda/cuda_runtime_api.cc27
-rw-r--r--libcuda/cuobjdump.h12
-rw-r--r--libcuda/cuobjdump.l9
-rw-r--r--libcuda/cuobjdump.y43
-rw-r--r--nightly.jenkinsfile9
6 files changed, 59 insertions, 43 deletions
diff --git a/Jenkinsfile b/Jenkinsfile
index 4bdbddf..aefd7e0 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -24,7 +24,7 @@ pipeline {
stage('simulations-build'){
steps{
sh 'rm -rf gpgpu-sim_simulations'
- sh 'git clone [email protected]:gpgpu-sim/gpgpu-sim_simulations.git && \
+ sh 'git clone [email protected]:purdue-aalp/gpgpu-sim_simulations.git && \
cd gpgpu-sim_simulations && \
git pull && \
ln -s /home/tgrogers-raid/a/common/data_dirs benchmarks/'
diff --git a/libcuda/cuda_runtime_api.cc b/libcuda/cuda_runtime_api.cc
index fc152c2..168c80f 100644
--- a/libcuda/cuda_runtime_api.cc
+++ b/libcuda/cuda_runtime_api.cc
@@ -1972,9 +1972,10 @@ void setCuobjdumpsassfilename(const char* filename){
(dynamic_cast<cuobjdumpELFSection*>(cuobjdumpSectionList.front()))->setSASSfilename(filename);
}
typedef void * yyscan_t;
+#include "cuobjdump.h"
extern int cuobjdump_lex_init(yyscan_t* scanner);
extern void cuobjdump_set_in (FILE * _in_str ,yyscan_t yyscanner );
-extern int cuobjdump_parse(yyscan_t scanner);
+extern int cuobjdump_parse(yyscan_t scanner, struct cuobjdump_parser* parser);
extern int cuobjdump_lex_destroy(yyscan_t scanner);
//! Return the executable file of the process containing the PTX/SASS code
@@ -2187,11 +2188,13 @@ void extract_code_using_cuobjdump(){
FILE *cuobjdump_in;
cuobjdump_in = fopen(fname, "r");
- yyscan_t scanner;
- cuobjdump_lex_init(&scanner);
- cuobjdump_set_in(cuobjdump_in, scanner);
- cuobjdump_parse(scanner);
- cuobjdump_lex_destroy(scanner);
+ struct cuobjdump_parser parser;
+ parser.elfserial = 1;
+ parser.ptxserial = 1;
+ cuobjdump_lex_init(&(parser.scanner));
+ cuobjdump_set_in(cuobjdump_in, (parser.scanner));
+ cuobjdump_parse(parser.scanner, &parser);
+ cuobjdump_lex_destroy(parser.scanner);
fclose(cuobjdump_in);
printf("Done parsing!!!\n");
} else {
@@ -2241,11 +2244,13 @@ void extract_code_using_cuobjdump(){
std::cout << "Trying to parse " << libcodfn.str() << std::endl;
FILE *cuobjdump_in;
cuobjdump_in = fopen(libcodfn.str().c_str(), "r");
- yyscan_t scanner;
- cuobjdump_lex_init(&scanner);
- cuobjdump_set_in(cuobjdump_in, scanner);
- cuobjdump_parse(scanner);
- cuobjdump_lex_destroy(scanner);
+ struct cuobjdump_parser parser;
+ parser.elfserial = 1;
+ parser.ptxserial = 1;
+ cuobjdump_lex_init(&(parser.scanner));
+ cuobjdump_set_in(cuobjdump_in, (parser.scanner));
+ cuobjdump_parse(parser.scanner, &parser);
+ cuobjdump_lex_destroy(parser.scanner);
fclose(cuobjdump_in);
std::getline(libsf, line);
}
diff --git a/libcuda/cuobjdump.h b/libcuda/cuobjdump.h
new file mode 100644
index 0000000..66cd736
--- /dev/null
+++ b/libcuda/cuobjdump.h
@@ -0,0 +1,12 @@
+#ifndef __cuobjdump_h__
+#define __cuobjdump_h__
+struct cuobjdump_parser {
+ yyscan_t scanner;
+ int elfserial;
+ int ptxserial;
+ FILE *ptxfile;
+ FILE *elffile;
+ FILE *sassfile;
+ char filename [1024];
+};
+#endif /* __cuobjdump_h__ */
diff --git a/libcuda/cuobjdump.l b/libcuda/cuobjdump.l
index 9359281..eccc1f2 100644
--- a/libcuda/cuobjdump.l
+++ b/libcuda/cuobjdump.l
@@ -30,6 +30,7 @@
%{
#include <stdio.h>
#include <string.h>
+#include "cuobjdump.h"
#include "cuobjdump_parser.h"
#define YY_NEVER_INTERACTIVE 1
@@ -38,7 +39,9 @@
#define YYDEBUG 1
-void cuobjdump_error(yyscan_t yyscanner, const char* msg);
+void cuobjdump_error(yyscan_t yyscanner, struct cuobjdump_parser* parser, const char* msg);
+#define YY_DECL int cuobjdump_lex \
+ (YYSTYPE * yylval_param , yyscan_t yyscanner, struct cuobjdump_parser* parser)
%}
%option stack
@@ -153,10 +156,10 @@ newlines {newline}+
<<EOF>> BEGIN(INITIAL);return 0;
/*No other rule matched. Throw an error*/
-. cuobjdump_error(yyscanner, "Invalid token");
+. cuobjdump_error(yyscanner, parser, "Invalid token");
%%
-void cuobjdump_error(yyscan_t yyscanner, const char* msg)
+void cuobjdump_error(yyscan_t yyscanner, struct cuobjdump_parser* parser, const char* msg)
{
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
printf(" %s near \"%s\"",msg, yytext);
diff --git a/libcuda/cuobjdump.y b/libcuda/cuobjdump.y
index 66cbace..fcc863e 100644
--- a/libcuda/cuobjdump.y
+++ b/libcuda/cuobjdump.y
@@ -30,6 +30,7 @@
#include <stdio.h>
typedef void * yyscan_t;
+#include "cuobjdump.h"
extern void addCuobjdumpSection(int sectiontype);
void setCuobjdumparch(const char* arch);
@@ -37,23 +38,19 @@ void setCuobjdumpidentifier(const char* identifier);
void setCuobjdumpptxfilename(const char* filename);
void setCuobjdumpelffilename(const char* filename);
void setCuobjdumpsassfilename(const char* filename);
-int elfserial = 1;
-int ptxserial = 1;
-FILE *ptxfile;
-FILE *elffile;
-FILE *sassfile;
-char filename [1024];
%}
%define api.pure full
%parse-param {yyscan_t scanner}
+%parse-param {struct cuobjdump_parser* parser}
%lex-param {yyscan_t scanner}
+%lex-param {struct cuobjdump_parser* parser}
%union {
char* string_value;
}
%{
-int yylex(YYSTYPE * yylval_param, yyscan_t yyscanner);
-void yyerror(yyscan_t yyscanner, const char* msg);
+int yylex(YYSTYPE * yylval_param, yyscan_t yyscanner, struct cuobjdump_parser* parser);
+void yyerror(yyscan_t yyscanner, struct cuobjdump_parser* parser, const char* msg);
%}
%token <string_value> H_SEPARATOR H_ARCH H_CODEVERSION H_PRODUCER H_HOST H_COMPILESIZE H_IDENTIFIER H_UNKNOWN H_COMPRESSED
%token <string_value> CODEVERSION
@@ -79,24 +76,24 @@ emptylines : emptylines NEWLINE
section : PTXHEADER {
addCuobjdumpSection(0);
- snprintf(filename, 1024, "_cuobjdump_%d.ptx", ptxserial++);
- ptxfile = fopen(filename, "w");
- setCuobjdumpptxfilename(filename);
+ snprintf(parser->filename, 1024, "_cuobjdump_%d.ptx", parser->ptxserial++);
+ parser->ptxfile = fopen(parser->filename, "w");
+ setCuobjdumpptxfilename(parser->filename);
} headerinfo compressedkeyword identifier ptxcode {
- fclose(ptxfile);
+ fclose(parser->ptxfile);
}
| ELFHEADER {
addCuobjdumpSection(1);
- snprintf(filename, 1024, "_cuobjdump_%d.elf", elfserial);
- elffile = fopen(filename, "w");
- setCuobjdumpelffilename(filename);
+ snprintf(parser->filename, 1024, "_cuobjdump_%d.elf", parser->elfserial);
+ parser->elffile = fopen(parser->filename, "w");
+ setCuobjdumpelffilename(parser->filename);
} headerinfo compressedkeyword identifier elfcode {
- fclose(elffile);
- snprintf(filename, 1024, "_cuobjdump_%d.sass", elfserial++);
- sassfile = fopen(filename, "w");
- setCuobjdumpsassfilename(filename);
+ fclose(parser->elffile);
+ snprintf(parser->filename, 1024, "_cuobjdump_%d.sass", parser->elfserial++);
+ parser->sassfile = fopen(parser->filename, "w");
+ setCuobjdumpsassfilename(parser->filename);
} sasscode {
- fclose(sassfile);
+ fclose(parser->sassfile);
};
headerinfo : H_SEPARATOR NEWLINE
@@ -118,13 +115,13 @@ identifier : H_IDENTIFIER FILENAME emptylines {setCuobjdumpidentifier($2);}
compressedkeyword : H_COMPRESSED emptylines
| ;
-ptxcode : ptxcode PTXLINE {fprintf(ptxfile, "%s", $2);}
+ptxcode : ptxcode PTXLINE {fprintf(parser->ptxfile, "%s", $2);}
| ;
-elfcode : elfcode ELFLINE {fprintf(elffile, "%s", $2);}
+elfcode : elfcode ELFLINE {fprintf(parser->elffile, "%s", $2);}
| ;
-sasscode : sasscode SASSLINE {fprintf(sassfile, "%s", $2);}
+sasscode : sasscode SASSLINE {fprintf(parser->sassfile, "%s", $2);}
| ;
diff --git a/nightly.jenkinsfile b/nightly.jenkinsfile
index 5221b3b..ce2e226 100644
--- a/nightly.jenkinsfile
+++ b/nightly.jenkinsfile
@@ -23,9 +23,8 @@ pipeline {
stage('nightly-simulations-build'){
steps{
sh 'rm -rf gpgpu-sim_simulations'
- sh 'git clone [email protected]:TimRogersGroup/gpgpu-sim_simulations.git && \
+ sh 'git clone [email protected]:purdue-aalp/gpgpu-sim_simulations.git && \
cd gpgpu-sim_simulations && \
- git checkout purdue-cluster && \
git pull && \
ln -s /home/tgrogers-raid/a/common/data_dirs benchmarks/'
sh 'source /home/tgrogers-raid/a/common/gpgpu-sim-setup/9.1_env_setup.sh &&\
@@ -40,9 +39,9 @@ pipeline {
steps {
sh 'source /home/tgrogers-raid/a/common/gpgpu-sim-setup/9.1_env_setup.sh &&\
source `pwd`/setup_environment &&\
- ./gpgpu-sim_simulations/util/job_launching/run_simulations.py -B `cat ./gpgpu-sim_simulations/util/job_launching/apps/all-apps.list` -C TITANX-2B,TITANX-L1ON-2B,P100-2B,TITANV-2B -N nightly-$$ && \
+ ./gpgpu-sim_simulations/util/job_launching/run_simulations.py -B `cat ./gpgpu-sim_simulations/util/job_launching/apps/all-apps.list` -C TITANV-2B -N nightly-$$ && \
PLOTDIR="jenkins/${JOB_NAME}/${BUILD_NUMBER}/getstats" && ssh [email protected] mkdir -p /home/dynamo/a/tgrogers/website/gpgpu-sim-plots/$PLOTDIR && \
- ./gpgpu-sim_simulations/util/job_launching/monitor_func_test.py -I -S 1800 -v -s stats-$$.csv -N nightly-$$ && \
+ ./gpgpu-sim_simulations/util/job_launching/monitor_func_test.py -I -S 1800 -v -s stats-$$.csv -T 12 -N nightly-$$ && \
./gpgpu-sim_simulations/util/plotting/plot-get-stats.py -c stats-$$.csv -p [email protected]:~/website/gpgpu-sim-plots/$PLOTDIR -w https://engineering.purdue.edu/tgrogers/gpgpu-sim-plots/$PLOTDIR -n $PLOTDIR'
}
}
@@ -51,7 +50,7 @@ pipeline {
sh 'source /home/tgrogers-raid/a/common/gpgpu-sim-setup/9.1_env_setup.sh &&\
source `pwd`/setup_environment &&\
PLOTDIR="jenkins/${JOB_NAME}" &&\
- ./gpgpu-sim_simulations/util/job_launching/get_stats.py -R -K -k -B `cat ./gpgpu-sim_simulations/util/job_launching/apps/all-apps.list` -C TITANX-2B,TITANX-L1ON-2B,P100-2B,TITANV-2B > nightly-stats-per-kernel-9.1.csv &&\
+ ./gpgpu-sim_simulations/util/job_launching/get_stats.py -R -K -k -B `cat ./gpgpu-sim_simulations/util/job_launching/apps/all-apps.list` -C TITANV-2B > nightly-stats-per-kernel-9.1.csv &&\
./gpgpu-sim_simulations/util/plotting/correlate_and_publish.sh nightly-stats-per-kernel-9.1.csv $PLOTDIR ${BUILD_NUMBER}'
}
}