summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMengchi Zhang <[email protected]>2019-07-12 00:09:29 -0400
committerMengchi Zhang <[email protected]>2019-07-12 00:17:48 -0400
commit4671280cfe7252bf875d071e667f57064250a1b7 (patch)
treeac288c82821809325bbe36a2c1c2fce7ec082b70
parent524c7e2ff37bba3ec60706605b34c6e354f928f1 (diff)
Move g_cdp_enabled
Signed-off-by: Mengchi Zhang <[email protected]>
-rw-r--r--libcuda/cuda_api_object.h1
-rw-r--r--libcuda/cuda_runtime_api.cc11
-rw-r--r--src/abstract_hardware_model.cc3
-rw-r--r--src/cuda-sim/cuda_device_runtime.h2
-rw-r--r--src/cuda-sim/ptx_loader.cc9
-rw-r--r--src/gpgpu-sim/gpu-sim.cc3
6 files changed, 11 insertions, 18 deletions
diff --git a/libcuda/cuda_api_object.h b/libcuda/cuda_api_object.h
index db5e6a4..51416f2 100644
--- a/libcuda/cuda_api_object.h
+++ b/libcuda/cuda_api_object.h
@@ -199,6 +199,7 @@ class cuda_runtime_api {
std::list<cuobjdumpSection*> mergeSections();
cuobjdumpELFSection* findELFSection(const std::string identifier);
cuobjdumpPTXSection* findPTXSection(const std::string identifier);
+ cuobjdumpPTXSection* findPTXSectionInList(std::list<cuobjdumpSection*> &sectionlist, const std::string identifier);
void cuobjdumpRegisterFatBinary(unsigned int handle, const char* filename, CUctx_st *context);
kernel_info_t *gpgpu_cuda_ptx_sim_init_grid( const char *kernel_key,
gpgpu_ptx_sim_arg_list_t args,
diff --git a/libcuda/cuda_runtime_api.cc b/libcuda/cuda_runtime_api.cc
index 59d2a60..10a651a 100644
--- a/libcuda/cuda_runtime_api.cc
+++ b/libcuda/cuda_runtime_api.cc
@@ -2421,7 +2421,6 @@ __host__ cudaError_t CUDARTAPI cudaGetExportTable(const void **ppExportTable, co
//extracts all ptx files from binary and dumps into prog_name.unique_no.sm_<>.ptx files
void cuda_runtime_api::extract_ptx_files_using_cuobjdump(CUctx_st *context){
- extern bool g_cdp_enabled;
char command[1000];
char *pytorch_bin = getenv("PYTORCH_BIN");
std::string app_binary = get_app_binary();
@@ -2442,7 +2441,7 @@ void cuda_runtime_api::extract_ptx_files_using_cuobjdump(CUctx_st *context){
printf("WARNING: Failed to execute cuobjdump to get list of ptx files \n");
exit(0);
}
- if(!g_cdp_enabled) {
+ if(!gpgpu_ctx->device_runtime->g_cdp_enabled) {
//based on the list above, dump ptx files individually. Format of dumped ptx file is prog_name.unique_no.sm_<>.ptx
std::ifstream infile(ptx_list_file_name);
@@ -2515,7 +2514,6 @@ void cuda_runtime_api::extract_code_using_cuobjdump(){
}
// Running cuobjdump using dynamic link to current process
// Needs the option '-all' to extract PTX from CDP-enabled binary
- extern bool g_cdp_enabled;
//dump ptx for all individial ptx files into sepearte files which is later used by ptxas.
int result=0;
@@ -2530,7 +2528,7 @@ void cuda_runtime_api::extract_code_using_cuobjdump(){
snprintf(fname,1024,"_cuobjdump_complete_output_XXXXXX");
int fd=mkstemp(fname);
close(fd);
- if(!g_cdp_enabled)
+ if(!gpgpu_ctx->device_runtime->g_cdp_enabled)
snprintf(command,1000,"$CUDA_INSTALL_PATH/bin/cuobjdump -ptx -elf -sass %s > %s", app_binary.c_str(), fname);
else
snprintf(command,1000,"$CUDA_INSTALL_PATH/bin/cuobjdump -ptx -elf -sass -all %s > %s", app_binary.c_str(), fname);
@@ -2822,7 +2820,7 @@ cuobjdumpELFSection* cuda_runtime_api::findELFSection(const std::string identifi
}
//! Within the section list, find the PTX section corresponding to a given identifier
-cuobjdumpPTXSection* findPTXSectionInList(std::list<cuobjdumpSection*> &sectionlist, const std::string identifier){
+cuobjdumpPTXSection* cuda_runtime_api::findPTXSectionInList(std::list<cuobjdumpSection*> &sectionlist, const std::string identifier){
std::list<cuobjdumpSection*>::iterator iter;
for ( iter = sectionlist.begin();
iter != sectionlist.end();
@@ -2833,8 +2831,7 @@ cuobjdumpPTXSection* findPTXSectionInList(std::list<cuobjdumpSection*> &sectionl
if(ptxsection->getIdentifier() == identifier)
return ptxsection;
else {
- extern bool g_cdp_enabled;
- if(g_cdp_enabled) {
+ if(gpgpu_ctx->device_runtime->g_cdp_enabled) {
printf("Warning: __cudaRegisterFatBinary needs %s, but find PTX section with %s\n",
identifier.c_str(), ptxsection->getIdentifier().c_str());
return ptxsection;
diff --git a/src/abstract_hardware_model.cc b/src/abstract_hardware_model.cc
index 450087b..fde7874 100644
--- a/src/abstract_hardware_model.cc
+++ b/src/abstract_hardware_model.cc
@@ -691,9 +691,6 @@ void warp_inst_t::completed( unsigned long long cycle ) const
ptx_file_line_stats_add_latency(pc, latency * active_count());
}
-//Jin: CDP support
-bool g_cdp_enabled;
-
unsigned kernel_info_t::m_next_uid = 1;
/*A snapshot of the texture mappings needs to be stored in the kernel's info as
diff --git a/src/cuda-sim/cuda_device_runtime.h b/src/cuda-sim/cuda_device_runtime.h
index f37849b..7f7a0ca 100644
--- a/src/cuda-sim/cuda_device_runtime.h
+++ b/src/cuda-sim/cuda_device_runtime.h
@@ -51,6 +51,8 @@ class cuda_device_runtime {
std::list<device_launch_operation_t> g_cuda_device_launch_op;
unsigned g_kernel_launch_latency;
unsigned long long g_max_total_param_size;
+ bool g_cdp_enabled;
+
// backward pointer
class gpgpu_context* gpgpu_ctx;
#if (CUDART_VERSION >= 5000)
diff --git a/src/cuda-sim/ptx_loader.cc b/src/cuda-sim/ptx_loader.cc
index 6e36a62..dca3cec 100644
--- a/src/cuda-sim/ptx_loader.cc
+++ b/src/cuda-sim/ptx_loader.cc
@@ -330,8 +330,7 @@ void gpgpu_context::gpgpu_ptx_info_load_from_filename( const char *filename, uns
std::string ptxas_filename(std::string(filename) + "as");
char buff[1024], extra_flags[1024];
extra_flags[0]=0;
- extern bool g_cdp_enabled;
- if(!g_cdp_enabled)
+ if(!device_runtime->g_cdp_enabled)
snprintf(extra_flags,1024,"--gpu-name=sm_%u",sm_version);
else
snprintf(extra_flags,1024,"--compile-only --gpu-name=sm_%u",sm_version);
@@ -398,8 +397,7 @@ void gpgpu_context::gpgpu_ptxinfo_load_from_string( const char *p_for_info, unsi
"A register size/SM mismatch may result in occupancy differences." );
exit(1);
}
- extern bool g_cdp_enabled;
- if(!g_cdp_enabled)
+ if(!device_runtime->g_cdp_enabled)
snprintf(extra_flags,1024,"--gpu-name=sm_%u", g_occupancy_sm_number);
else
snprintf(extra_flags,1024,"--compile-only --gpu-name=sm_%u",g_occupancy_sm_number);
@@ -467,8 +465,7 @@ void gpgpu_context::gpgpu_ptxinfo_load_from_string( const char *p_for_info, unsi
#if CUDART_VERSION >= 3000
if (sm_version == 0) sm_version = 20;
- extern bool g_cdp_enabled;
- if(!g_cdp_enabled)
+ if(!device_runtime->g_cdp_enabled)
snprintf(extra_flags,1024,"--gpu-name=sm_%u",sm_version);
else
snprintf(extra_flags,1024,"--compile-only --gpu-name=sm_%u",sm_version);
diff --git a/src/gpgpu-sim/gpu-sim.cc b/src/gpgpu-sim/gpu-sim.cc
index a3d6a8a..0481259 100644
--- a/src/gpgpu-sim/gpu-sim.cc
+++ b/src/gpgpu-sim/gpu-sim.cc
@@ -551,9 +551,8 @@ void gpgpu_sim_config::reg_options(option_parser_t opp)
option_parser_register(opp, "-gpgpu_kernel_launch_latency", OPT_INT32,
&(gpgpu_ctx->device_runtime->g_kernel_launch_latency), "Kernel launch latency in cycles. Default: 0",
"0");
- extern bool g_cdp_enabled;
option_parser_register(opp, "-gpgpu_cdp_enabled", OPT_BOOL,
- &g_cdp_enabled, "Turn on CDP",
+ &(gpgpu_ctx->device_runtime->g_cdp_enabled), "Turn on CDP",
"0");
}