diff options
| author | WilliamMTK <[email protected]> | 2024-12-11 16:52:40 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-12-11 21:52:40 +0000 |
| commit | 752d4e5bf622b0d7c730e3eb2f1b3e3cf91e81fa (patch) | |
| tree | c21658a59c854d8251706796570ce80e34a6ef7b /src/stream_manager.cc | |
| parent | 667834cfe5214523edd7769aeab77f91b7137686 (diff) | |
Add SST integration into gpgpusim (#44)
* Add accommodations to run gpgpusim with SST simulation framework through balar
* Output setup_environment options when sourcing
* Add SST directive check when creating sim thread
* Add sst side test for jenkins
* sst-integration: update Jenkinsfile with offical sst-elements repo and fix bugs in pipeline script
* sst-integration: direct jenkins to rebuild gpgpusim before testing for sst
* sst-integration: fix bugs in sst repos config
* sst-integration: let Jenkins rebuilds simulator
Since the simulator needs to be configured with both normal mode and sst mode, need to rebuild make target to clean prior runs.
* sst-integration: Update Jenkinsfile to source env vars when running balar test
* sst-integration: refactor code to remove __SST__ flag
* sst-integration: fix a bug that init cluster twice for sst
* sst-integration: fix a bug of not sending mem packets to SST
* sst-integration: remove sst flags from makefiles and setup_env
* sst-integration: add comments to SST changes
* sst-integration: remove rebuilding simulator in jenkins when testing for SST
* sst-integration: revert simulator build script
* Add a function to support querying function argument info for SST
* sst-integration: add version detection for vanadis binary
* Automated Format
* add version detection support for gcc 10+
* sst-integration: add cudaMallocHost for SST
* sst-integration: fix a compilation bug
* sst-integration: add sst balar unittest CI
* sst-integration: specify GPU_ARCH for CI test
* sst-integration: use bash for github actions
* sst-integration: use https links for sst repos
* sst-integration: add SST dependencies to CI config
* sst-integration: remove sudo
* sst-integration: default to yes for apt install
* sst-integration: add manual trigger for github action
* sst-integration: remove wrong on event
* sst-integration: limit CPU usage for compilation
* sst-integration: fix wrong path
* sst-integration: use personal repo for testing
* sst-integration: remove sst-core source in CI to free space
* sst-integration: SST_Cycle use print stats with stream id
* Automated Format
* sst-integration: check for diskspace and try to clean it
* sst-integration: move out of docker image
* sst-integration: testing for ci path
* sst-integration: fix syntax
* sst-integration: pass env vars
* sst-integration: set env properly
* sst-integration: merge LLVM build and test into same job
* sst-integration: fix step order
* sst-integration: checkout correct branch for env-setup
* sst-integration: remove resourcing gpu apps
* sst-integration: revert back to docker github action
* sst-integration: enable debug trace for sst testing
* sst-integration: resourcing gpu app for env vars
* sst-integration: use GPUAPPS_ROOT for path for gpu app
* sst-integration: use GPUAPPS_ROOT for path for gpu app
* sst-integration: enable parallel ci tests and fix not returning with cudaMallocHostSST
* sst-integration: using debug flag for CI run
* sst-integration: revert debug ci run
* sst-integration: CI skips cuda sdk download and launch multiple jobs
* sst-integration: reenable parallel tests
* sst-integration: reduce concurrent test thread count
* sst-integration: skip long test for github runner
* sst-integration: try running CI with single core
* sst-integrtion: add callback to SST to check thread sync is done in SST_Cycle()
* sst-integration: ignore lookup if already found and add callbacks to SST
* Automated Format
* sst-integration: add support for indirect texture access
* Automated Format
* sste-integration: fix up for PR
* Automated Format
---------
Co-authored-by: purdue-jenkins <[email protected]>
Diffstat (limited to 'src/stream_manager.cc')
| -rw-r--r-- | src/stream_manager.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/stream_manager.cc b/src/stream_manager.cc index 72f8bb0..b974791 100644 --- a/src/stream_manager.cc +++ b/src/stream_manager.cc @@ -34,6 +34,12 @@ unsigned CUstream_st::sm_next_stream_uid = 0; +// SST memcpy callbacks +extern void SST_callback_memcpy_H2D_done(); +extern void SST_callback_memcpy_D2H_done(); +extern void SST_callback_memcpy_to_symbol_done(); +extern void SST_callback_memcpy_from_symbol_done(); + CUstream_st::CUstream_st() { m_pending = false; m_uid = sm_next_stream_uid++; @@ -122,11 +128,13 @@ bool stream_operation::do_operation(gpgpu_sim *gpu) { if (g_debug_execution >= 3) printf("memcpy host-to-device\n"); gpu->memcpy_to_gpu(m_device_address_dst, m_host_address_src, m_cnt); m_stream->record_next_done(); + if (gpu->is_SST_mode()) SST_callback_memcpy_H2D_done(); break; case stream_memcpy_device_to_host: if (g_debug_execution >= 3) printf("memcpy device-to-host\n"); gpu->memcpy_from_gpu(m_host_address_dst, m_device_address_src, m_cnt); m_stream->record_next_done(); + if (gpu->is_SST_mode()) SST_callback_memcpy_D2H_done(); break; case stream_memcpy_device_to_device: if (g_debug_execution >= 3) printf("memcpy device-to-device\n"); @@ -138,12 +146,14 @@ bool stream_operation::do_operation(gpgpu_sim *gpu) { gpu->gpgpu_ctx->func_sim->gpgpu_ptx_sim_memcpy_symbol( m_symbol, m_host_address_src, m_cnt, m_offset, 1, gpu); m_stream->record_next_done(); + if (gpu->is_SST_mode()) SST_callback_memcpy_to_symbol_done(); break; case stream_memcpy_from_symbol: if (g_debug_execution >= 3) printf("memcpy from symbol\n"); gpu->gpgpu_ctx->func_sim->gpgpu_ptx_sim_memcpy_symbol( m_symbol, m_host_address_dst, m_cnt, m_offset, 0, gpu); m_stream->record_next_done(); + if (gpu->is_SST_mode()) SST_callback_memcpy_from_symbol_done(); break; case stream_kernel_launch: if (m_sim_mode) { // Functional Sim @@ -472,7 +482,7 @@ void stream_manager::push(stream_operation op) { } if (g_debug_execution >= 3) print_impl(stdout); pthread_mutex_unlock(&m_lock); - if (m_cuda_launch_blocking || stream == NULL) { + if (!m_gpu->is_SST_mode() && (m_cuda_launch_blocking || stream == NULL)) { unsigned int wait_amount = 100; unsigned int wait_cap = 100000; // 100ms while (!empty()) { |
