Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion rdc_libs/rdc_modules/rdc_rocp/RdcTelemetryLib.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

#include <dlfcn.h>
#include <math.h>
#include <sys/time.h>

#include <algorithm>
#include <cstring>
#include <filesystem>
#include <map>
#include <memory>
#include <stdexcept>
Expand Down Expand Up @@ -64,6 +66,22 @@ rdc_status_t rdc_module_init(uint64_t /*flags*/) {
// before the tests are. Utilize an env var instead.
return RDC_ST_DISABLED_MODULE;
}

Dl_info dl_info = {};
RDC_LOG(RDC_DEBUG, "Checking if rocprofiler is available");
if (dladdr(reinterpret_cast<const void*>(rdc_module_init), &dl_info) != 0) {
const std::filesystem::path rdc_path(dl_info.dli_fname);
const auto profiler_metrics_path =
rdc_path.parent_path().parent_path().parent_path() / "share/rocprofiler-sdk";
const auto rocprofiler_exists = std::filesystem::exists(profiler_metrics_path);
if (!rocprofiler_exists) {
RDC_LOG(RDC_ERROR, "rocprofiler metrics are not available at " << profiler_metrics_path);
return RDC_ST_FAIL_LOAD_MODULE;
}
RDC_LOG(RDC_DEBUG, "rocprofiler metrics are available at " << profiler_metrics_path);
setenv("ROCPROFILER_METRICS_PATH", profiler_metrics_path.c_str(), 0);
}

rocp_p = std::make_unique<amd::rdc::RdcRocpBase>();
return RDC_ST_OK;
}
Expand Down Expand Up @@ -98,7 +116,7 @@ rdc_status_t rdc_telemetry_fields_value_get(rdc_gpu_field_t* fields, const uint3
// Bulk fetch fields
std::vector<rdc_gpu_field_value_t> bulk_results;

struct timeval tv {};
struct timeval tv{};
gettimeofday(&tv, nullptr);
const uint64_t curTime = static_cast<uint64_t>(tv.tv_sec) * 1000 + tv.tv_usec / 1000;

Expand Down