Gbaraldi/navi3fix (#318)
* Adding Navi3x gate fixes
* Making reproducible runtime more reproducible
* source formatting (clang-format v11) (#319)
Co-authored-by: ApoKalipse-V <ApoKalipse-V@users.noreply.github.com>
* Update lib/common/utility.hpp
- revert
* Update lib/common/environment.{hpp,cpp}
- support get_env for various integral types
* Update lib/rocprofiler-sdk/hsa/queue.cpp
- query ROCPROFILER_GATE_CAPACITY in ctor of active_capacity_gate
* Update tests/apps/reproducible-runtime
- fix help message
- misc float vs. double changes
- update output messages
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: ApoKalipse-V <ApoKalipse-V@users.noreply.github.com>
Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
[ROCm/rocprofiler-sdk commit: 3d539c1677]
This commit is contained in:
committed by
GitHub
parent
8d1fc8d773
commit
32127d2f76
@@ -21,8 +21,10 @@
|
||||
// THE SOFTWARE.
|
||||
|
||||
#include "lib/common/environment.hpp"
|
||||
#include "lib/common/demangle.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <cstdint>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
@@ -50,27 +52,6 @@ get_env(std::string_view env_id, const char* _default)
|
||||
return get_env(env_id, std::string_view{_default});
|
||||
}
|
||||
|
||||
int
|
||||
get_env(std::string_view env_id, int _default)
|
||||
{
|
||||
if(env_id.empty()) return _default;
|
||||
char* env_var = ::std::getenv(env_id.data());
|
||||
if(env_var)
|
||||
{
|
||||
try
|
||||
{
|
||||
return std::stoi(env_var);
|
||||
} catch(std::exception& _e)
|
||||
{
|
||||
LOG(WARNING) << "[rocprofiler][get_env] Exception thrown converting getenv(\"" << env_id
|
||||
<< "\") = " << env_var << " to integer :: " << _e.what()
|
||||
<< ". Using default value of " << _default << "\n";
|
||||
}
|
||||
return _default;
|
||||
}
|
||||
return _default;
|
||||
}
|
||||
|
||||
bool
|
||||
get_env(std::string_view env_id, bool _default)
|
||||
{
|
||||
@@ -99,6 +80,50 @@ get_env(std::string_view env_id, bool _default)
|
||||
}
|
||||
return _default;
|
||||
}
|
||||
|
||||
template <typename Tp>
|
||||
Tp
|
||||
get_env(std::string_view env_id, Tp _default, std::enable_if_t<std::is_integral<Tp>::value, sfinae>)
|
||||
{
|
||||
static_assert(!std::is_same<Tp, bool>::value, "unexpected! should be using bool overload");
|
||||
static_assert(
|
||||
sizeof(Tp) <= sizeof(uint64_t),
|
||||
"change use of stol/stoul if instantiating for type larger than a 64-bit integer");
|
||||
|
||||
if(env_id.empty()) return _default;
|
||||
char* env_var = ::std::getenv(env_id.data());
|
||||
if(env_var)
|
||||
{
|
||||
try
|
||||
{
|
||||
// use stol/stoul
|
||||
if constexpr(std::is_signed<Tp>::value)
|
||||
return static_cast<Tp>(std::stol(env_var));
|
||||
else
|
||||
return static_cast<Tp>(std::stoul(env_var));
|
||||
} catch(std::exception& _e)
|
||||
{
|
||||
LOG(ERROR) << "[rocprofiler][get_env] Exception thrown converting getenv(\"" << env_id
|
||||
<< "\") = " << env_var << " to " << cxx_demangle(typeid(Tp).name())
|
||||
<< " :: " << _e.what() << ". Using default value of " << _default << "\n";
|
||||
}
|
||||
return _default;
|
||||
}
|
||||
return _default;
|
||||
}
|
||||
|
||||
#define SPECIALIZE_GET_ENV(TYPE) \
|
||||
template TYPE get_env<TYPE>( \
|
||||
std::string_view, TYPE, std::enable_if_t<std::is_integral<TYPE>::value, sfinae>);
|
||||
|
||||
SPECIALIZE_GET_ENV(int8_t)
|
||||
SPECIALIZE_GET_ENV(int16_t)
|
||||
SPECIALIZE_GET_ENV(int32_t)
|
||||
SPECIALIZE_GET_ENV(int64_t)
|
||||
SPECIALIZE_GET_ENV(uint8_t)
|
||||
SPECIALIZE_GET_ENV(uint16_t)
|
||||
SPECIALIZE_GET_ENV(uint32_t)
|
||||
SPECIALIZE_GET_ENV(uint64_t)
|
||||
} // namespace impl
|
||||
} // namespace common
|
||||
} // namespace rocprofiler
|
||||
|
||||
@@ -35,16 +35,19 @@ namespace common
|
||||
{
|
||||
namespace impl
|
||||
{
|
||||
struct sfinae
|
||||
{};
|
||||
|
||||
std::string get_env(std::string_view, std::string_view);
|
||||
|
||||
std::string
|
||||
get_env(std::string_view, const char*);
|
||||
|
||||
int
|
||||
get_env(std::string_view, int);
|
||||
|
||||
bool
|
||||
get_env(std::string_view, bool);
|
||||
|
||||
template <typename Tp>
|
||||
Tp get_env(std::string_view, Tp, std::enable_if_t<std::is_integral<Tp>::value, sfinae> = {});
|
||||
} // namespace impl
|
||||
|
||||
template <typename Tp>
|
||||
|
||||
@@ -71,7 +71,8 @@ signal_limiter()
|
||||
{
|
||||
// Limit the maximun number of HSA signals created.
|
||||
// There is a hard limit to the maximum that can exist.
|
||||
static common::active_capacity_gate _gate(4);
|
||||
static auto _gate =
|
||||
common::active_capacity_gate{common::get_env<size_t>("ROCPROFILER_GATE_CAPACITY", 4)};
|
||||
return _gate;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user