summaryrefslogtreecommitdiff
path: root/src/cuda-sim/ptx_sim.cc
diff options
context:
space:
mode:
authorMengchi Zhang <[email protected]>2019-07-16 10:36:42 -0400
committerGitHub <[email protected]>2019-07-16 10:36:42 -0400
commitbf198b13541a427cba9bef22799955aa08ab050a (patch)
tree4af15f4e22cb0c55450e26cb97110534148c8c60 /src/cuda-sim/ptx_sim.cc
parent89e913f7b28e342b9023a01105cb441cfafbee8b (diff)
parente1fa1a3cc7c509417064a8e4cdab71e3f7feb881 (diff)
Merge pull request #25 from echoedit/dev
Dev
Diffstat (limited to 'src/cuda-sim/ptx_sim.cc')
-rw-r--r--src/cuda-sim/ptx_sim.cc26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/cuda-sim/ptx_sim.cc b/src/cuda-sim/ptx_sim.cc
index 1b8831a..949ee66 100644
--- a/src/cuda-sim/ptx_sim.cc
+++ b/src/cuda-sim/ptx_sim.cc
@@ -33,20 +33,20 @@ typedef void * yyscan_t;
#include "ptx.tab.h"
#include "../gpgpu-sim/gpu-sim.h"
#include "../gpgpu-sim/shader.h"
+#include "../../libcuda/gpgpu_context.h"
void feature_not_implemented( const char *f );
-std::set<unsigned long long> g_ptx_cta_info_sm_idx_used;
-unsigned long long g_ptx_cta_info_uid = 1;
-ptx_cta_info::ptx_cta_info( unsigned sm_idx )
+ptx_cta_info::ptx_cta_info( unsigned sm_idx, gpgpu_context* ctx )
{
- assert( g_ptx_cta_info_sm_idx_used.find(sm_idx) == g_ptx_cta_info_sm_idx_used.end() );
- g_ptx_cta_info_sm_idx_used.insert(sm_idx);
+ assert( ctx->func_sim->g_ptx_cta_info_sm_idx_used.find(sm_idx) == ctx->func_sim->g_ptx_cta_info_sm_idx_used.end() );
+ ctx->func_sim->g_ptx_cta_info_sm_idx_used.insert(sm_idx);
m_sm_idx = sm_idx;
- m_uid = g_ptx_cta_info_uid++;
+ m_uid = (ctx->g_ptx_cta_info_uid)++;
m_bar_threads = 0;
+ gpgpu_ctx = ctx;
}
void ptx_cta_info::add_thread( ptx_thread_info *thd )
@@ -166,18 +166,16 @@ void ptx_warp_info::reset_done_threads()
m_done_threads = 0;
}
-unsigned g_ptx_thread_info_uid_next=1;
-unsigned g_ptx_thread_info_delete_count=0;
ptx_thread_info::~ptx_thread_info()
{
- g_ptx_thread_info_delete_count++;
+ m_gpu->gpgpu_ctx->func_sim->g_ptx_thread_info_delete_count++;
}
ptx_thread_info::ptx_thread_info( kernel_info_t &kernel )
: m_kernel(kernel)
{
- m_uid = g_ptx_thread_info_uid_next++;
+ m_uid = kernel.entry()->gpgpu_ctx->func_sim->g_ptx_thread_info_uid_next++;
m_core = NULL;
m_barrier_num = -1;
m_at_barrier = false;
@@ -423,9 +421,9 @@ bool ptx_thread_info::callstack_pop()
assert( !((rv_src != NULL) ^ (rv_dst != NULL)) ); // ensure caller and callee agree on whether there is a return value
// read return value from callee frame
- arg_buffer_t buffer;
+ arg_buffer_t buffer(m_gpu->gpgpu_ctx);
if( rv_src != NULL )
- buffer = copy_arg_to_buffer(this, operand_info(rv_src), rv_dst );
+ buffer = copy_arg_to_buffer(this, operand_info(rv_src, m_gpu->gpgpu_ctx), rv_dst );
m_symbol_table = m_callstack.back().m_symbol_table;
m_NPC = m_callstack.back().m_PC;
@@ -457,9 +455,9 @@ bool ptx_thread_info::callstack_pop_plus()
assert( !((rv_src != NULL) ^ (rv_dst != NULL)) ); // ensure caller and callee agree on whether there is a return value
// read return value from callee frame
- arg_buffer_t buffer;
+ arg_buffer_t buffer(m_gpu->gpgpu_ctx);
if( rv_src != NULL )
- buffer = copy_arg_to_buffer(this, operand_info(rv_src), rv_dst );
+ buffer = copy_arg_to_buffer(this, operand_info(rv_src, m_gpu->gpgpu_ctx), rv_dst );
m_symbol_table = m_callstack.back().m_symbol_table;
m_NPC = m_callstack.back().m_PC;