Skip to content

Commit

Permalink
Merge branch 'develop' of git.nic.uoregon.edu:/gitroot/xpress-apex in…
Browse files Browse the repository at this point in the history
…to develop
  • Loading branch information
khuck committed Aug 13, 2019
2 parents 023df90 + 682773a commit 3fef20c
Show file tree
Hide file tree
Showing 3 changed files with 161 additions and 1 deletion.
19 changes: 19 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,25 @@ else()
"Try manually check out https://github.com/cameron314/concurrentqueue.git to ${PROJECT_SOURCE_DIR}")
endif()

### Set up perfstubs stuff
git_external(perfstubs
https://github.com/khuck/perfstubs.git
master
VERBOSE)

find_file(
PERFSTUBS_HEADER
NAMES perfstubs_api/Tool.h
PATHS ${PROJECT_SOURCE_DIR}/perfstubs)

if(PERFSTUBS_HEADER)
message(INFO " Found perfstubs at ${PROJECT_SOURCE_DIR}/perfstubs")
include_directories(${PROJECT_SOURCE_DIR})
else()
message(FATAL_ERROR " perfstubs not found. This should have been checked out automatically. "
"Try manually check out https://github.com/khuck/perfstubs.git to ${PROJECT_SOURCE_DIR}")
endif()

if(USE_PLUGINS)
message(INFO " apex will be built with plugin support.")
set(LIBS ${LIBS} ${CMAKE_DL_LIBS})
Expand Down
2 changes: 1 addition & 1 deletion src/apex/CMakeLists.standalone
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ if (OTF2_FOUND)
SET(OTF2_SOURCE otf2_listener.cpp)
endif(OTF2_FOUND)

SET(all_SOURCE task_identifier.cpp apex.cpp thread_instance.cpp event_listener.cpp concurrency_handler.cpp policy_handler.cpp handler.cpp utils.cpp ${tau_SOURCE} profiler_listener.cpp ${bfd_SOURCE} apex_options.cpp apex_policies.cpp ${PROC_SOURCE} ${OMPT_SOURCE} ${SENSOR_SOURCE} ${OTF2_SOURCE})
SET(all_SOURCE task_identifier.cpp apex.cpp thread_instance.cpp event_listener.cpp concurrency_handler.cpp policy_handler.cpp handler.cpp utils.cpp ${tau_SOURCE} profiler_listener.cpp ${bfd_SOURCE} apex_options.cpp apex_policies.cpp perftool_implementation.cpp ${PROC_SOURCE} ${OMPT_SOURCE} ${SENSOR_SOURCE} ${OTF2_SOURCE})

add_library (apex ${all_SOURCE})
add_library (taudummy tau_dummy.cpp)
Expand Down
141 changes: 141 additions & 0 deletions src/apex/perftool_implementation.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
// Copyright (c) 2014-2018 University of Oregon
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//

#include "perfstubs/perfstubs_api/Tool.h"
#include <stdlib.h>
#include "apex.h"
#include "thread_instance.hpp"

extern "C" {
// library function declarations
void perftool_init(void) {
apex_init("PerfStubs API", 0, 1);
}
void perftool_register_thread(void) {
apex_register_thread("PerfStubs Thread");
}
void perftool_exit(void) {
apex_exit_thread();
}
void perftool_dump(void) {
apex_dump(false);
}

// measurement function declarations
void perftool_timer_start(const char *timer_name) {
apex_start(APEX_NAME_STRING, (void*)timer_name);
}
void perftool_timer_stop(const char *timer_name) {
apex_stop(apex::thread_instance::instance().get_current_profiler());
}
void perftool_static_phase_start(const char *phase_name) {
apex_start(APEX_NAME_STRING, (void*)phase_name);
}
void perftool_static_phase_stop(const char *phase_name) {
apex_stop(apex::thread_instance::instance().get_current_profiler());
}
void perftool_dynamic_phase_start(const char *iteration_prefix,
int iteration_number) {
std::stringstream ss;
ss << iteration_prefix << " " << iteration_number;
apex_start(APEX_NAME_STRING, (void*)(ss.str().c_str()));
}
void perftool_dynamic_phase_stop(const char *iteration_prefix,
int iteration_number) {
apex_stop(apex::thread_instance::instance().get_current_profiler());
}
void perftool_sample_counter(const char *counter_name, double value) {
apex_sample_value(counter_name, value);
}
void perftool_metadata(const char *name, const char *value) {
// do nothing
}

// data query function declarations
void perftool_get_timer_data(perftool_timer_data_t *timer_data) {
memset(timer_data, 0, sizeof(perftool_timer_data_t));
}
void perftool_free_timer_data(perftool_timer_data_t *timer_data) {
if (timer_data == nullptr)
{
return;
}
if (timer_data->timer_names != nullptr)
{
free(timer_data->timer_names);
timer_data->timer_names = nullptr;
}
if (timer_data->metric_names != nullptr)
{
free(timer_data->metric_names);
timer_data->metric_names = nullptr;
}
if (timer_data->values != nullptr)
{
free(timer_data->values);
timer_data->values = nullptr;
}
}
void perftool_get_counter_data(perftool_counter_data_t *counter_data) {
memset(counter_data, 0, sizeof(perftool_counter_data_t));
}
void perftool_free_counter_data(perftool_counter_data_t *counter_data) {
if (counter_data == nullptr)
{
return;
}
if (counter_data->counter_names != nullptr)
{
free(counter_data->counter_names);
counter_data->counter_names = nullptr;
}
if (counter_data->num_samples != nullptr)
{
free(counter_data->num_samples);
counter_data->num_samples = nullptr;
}
if (counter_data->value_total != nullptr)
{
free(counter_data->value_total);
counter_data->value_total = nullptr;
}
if (counter_data->value_min != nullptr)
{
free(counter_data->value_min);
counter_data->value_min = nullptr;
}
if (counter_data->value_max != nullptr)
{
free(counter_data->value_max);
counter_data->value_max = nullptr;
}
if (counter_data->value_sumsqr != nullptr)
{
free(counter_data->value_sumsqr);
counter_data->value_sumsqr = nullptr;
}
}
void perftool_get_metadata(perftool_metadata_t *metadata) {
memset(metadata, 0, sizeof(perftool_metadata_t));
}
void perftool_free_metadata(perftool_metadata_t *metadata) {
if (metadata == nullptr)
{
return;
}
if (metadata->names != nullptr)
{
free(metadata->names);
metadata->names = nullptr;
}
if (metadata->values != nullptr)
{
free(metadata->values);
metadata->values = nullptr;
}
}

}

0 comments on commit 3fef20c

Please sign in to comment.