Initial Implementation: include (#10)
* Initial Implementation: include
* Initial Implementation: lib details (#11)
* Initial Implementation: lib details
* Initial Implementation: lib (#12)
* Initial Implementation: lib
* Initial Implementation: source (#13)
* Initial Implementation: source
* Initial Implementation: samples (#14)
* Initial Implementation: samples
* Initial Implementation: tests (#15)
* Initial Implementation: tests
* Initial Implementation: scripts (#16)
* Initial Implementation: scripts
* Initial Implementation: cmake (#17)
* Initial Implementation: cmake
* Initial Implementation: top-level files (#18)
* Initial Implementation: top-level files
- clang-format
- clang-tidy
- cmake-format
- ignore build and cache directories
- main CMakeLists.txt
- pyproject.toml (python formatting)
- VERSION file
* Initial Implementation: workflow (#19)
* Fix unused variable
- rocprofiler_register_warn_level
[ROCm/rocprofiler-register commit: fa4295db6b]
This commit is contained in:
committad av
GitHub
förälder
8ef9cf2642
incheckning
7e6e33cfce
@@ -0,0 +1,72 @@
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <pthread.h>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
|
||||
#include "common/fwd.hpp"
|
||||
|
||||
void
|
||||
run(const std::string& name, pthread_barrier_t* _barrier)
|
||||
{
|
||||
if(_barrier) pthread_barrier_wait(_barrier);
|
||||
|
||||
if(hip_init_fn)
|
||||
{
|
||||
if(_barrier) pthread_barrier_wait(_barrier);
|
||||
hip_init_fn();
|
||||
}
|
||||
|
||||
if(hsa_init_fn)
|
||||
{
|
||||
if(_barrier) pthread_barrier_wait(_barrier);
|
||||
hsa_init_fn();
|
||||
}
|
||||
|
||||
if(roctxRangePush_fn)
|
||||
{
|
||||
if(_barrier) pthread_barrier_wait(_barrier);
|
||||
roctxRangePush_fn(name.c_str());
|
||||
}
|
||||
|
||||
if(roctxRangePop_fn)
|
||||
{
|
||||
if(_barrier) pthread_barrier_wait(_barrier);
|
||||
roctxRangePop_fn(name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
run_threads(unsigned long n)
|
||||
{
|
||||
auto threads = std::vector<std::thread>{};
|
||||
auto names = std::vector<std::string>{};
|
||||
|
||||
for(unsigned long i = 0; i < n; ++i)
|
||||
names.emplace_back(std::string{ "thread-" } + std::to_string(i));
|
||||
|
||||
auto _barrier = pthread_barrier_t{};
|
||||
pthread_barrier_init(&_barrier, nullptr, n);
|
||||
|
||||
for(unsigned long i = 0; i < n; ++i)
|
||||
threads.emplace_back(run, names.at(i), &_barrier);
|
||||
|
||||
for(auto& itr : threads)
|
||||
itr.join();
|
||||
|
||||
pthread_barrier_destroy(&_barrier);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
unsigned long n = 4;
|
||||
if(argc > 1) n = std::stoul(argv[1]);
|
||||
|
||||
resolve_symbols<ROCP_REG_TEST_HIP | ROCP_REG_TEST_ROCTX>();
|
||||
|
||||
run_threads(n);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Referens i nytt ärende
Block a user