Skip to content

Commit c841376

Browse files
authored
rename public headers (#17)
* rename multi_tracer_t to simple_log_tracer_t * new include :: <tracer/simple_log> * new include :: <tracer/simple_thread> * new include :: <tracer/thread_log> * fix include * #include <mutex> * #include <tracer/simple> * remove old headers * mv * stdtracer_macros.hpp * config * cleanup example * cleanup * #include <tracer/cuda> * fix benchmarks * #include <tracer/disable> * #define DEFINE_TRACE_CONTEXTS * snprintf * rename
1 parent 8065eef commit c841376

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+500
-269
lines changed

CMakeLists.txt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@ SET(CMAKE_CXX_STANDARD 14)
55
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
66
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
77

8-
# Targets
9-
ADD_LIBRARY(stdtracer src/tracer.cpp)
10-
TARGET_INCLUDE_DIRECTORIES(stdtracer PRIVATE ${CMAKE_SOURCE_DIR}/include)
11-
12-
INSTALL(TARGETS stdtracer ARCHIVE DESTINATION lib)
138
INSTALL(DIRECTORY include DESTINATION .)
149

15-
OPTION(BUILD_TESTS "Build tests." OFF)
1610
OPTION(BUILD_BENCHMARKS "Build benchmarks." OFF)
11+
OPTION(BUILD_CUDA_EXAMPLES "Build cuda examples." OFF)
1712
OPTION(BUILD_EXAMPLES "Build examples." OFF)
13+
OPTION(BUILD_TESTS "Build tests." OFF)
1814

1915
IF(BUILD_TESTS)
2016
ENABLE_TESTING()
@@ -28,5 +24,8 @@ ENDIF()
2824
IF(BUILD_EXAMPLES)
2925
INCLUDE(cmake/examples.cmake)
3026
ENDIF()
27+
IF(BUILD_CUDA_EXAMPLES)
28+
INCLUDE(cmake/cuda_examples.cmake)
29+
ENDIF()
3130

3231
INCLUDE(cmake/package.cmake)

INSTALL

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/sh
2+
set -e
3+
4+
if [ -z $PREFIX ]; then
5+
PREFIX=$HOME/local
6+
fi
7+
8+
./configure --prefix=$PREFIX
9+
10+
make install

cmake/benchmarks.cmake

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
INCLUDE(ExternalProject)
22

3-
SET(GBENCH_GIT_URL https://github.com/google/benchmark.git
3+
SET(GBENCH_GIT_URL
4+
https://github.com/google/benchmark.git
45
CACHE STRING "URL for clone google benchmark")
56

67
SET(PREFIX ${CMAKE_SOURCE_DIR}/3rdparty)
78

8-
EXTERNALPROJECT_ADD(gbench-repo
9-
GIT_REPOSITORY
10-
${GBENCH_GIT_URL}
11-
PREFIX
12-
${PREFIX}
13-
CMAKE_ARGS
14-
-DCMAKE_INSTALL_PREFIX=${PREFIX}
15-
-DCMAKE_BUILD_TYPE=Release
16-
-DCMAKE_CXX_FLAGS=-std=c++11
17-
-DBENCHMARK_ENABLE_TESTING=0)
9+
EXTERNALPROJECT_ADD(
10+
gbench-repo
11+
GIT_REPOSITORY ${GBENCH_GIT_URL}
12+
PREFIX ${PREFIX}
13+
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PREFIX} -DCMAKE_BUILD_TYPE=Release
14+
-DCMAKE_CXX_FLAGS=-std=c++11 -DBENCHMARK_ENABLE_TESTING=0)
1815

1916
LINK_DIRECTORIES(${PREFIX}/lib)
2017

@@ -26,16 +23,13 @@ FUNCTION(ADD_BENCH target)
2623
TARGET_INCLUDE_DIRECTORIES(${target} PRIVATE ${PREFIX}/include)
2724
TARGET_INCLUDE_DIRECTORIES(${target} PRIVATE ${CMAKE_SOURCE_DIR}/include)
2825
TARGET_LINK_LIBRARIES(${target} benchmark benchmark_main Threads::Threads)
29-
ADD_DEPENDENCIES(${target} gbench-repo stdtracer)
26+
ADD_DEPENDENCIES(${target} gbench-repo)
3027
ADD_DEPENDENCIES(benchmarks ${target})
3128
ENDFUNCTION()
3229

3330
FILE(GLOB benches tests/bench_*.cpp)
3431
FOREACH(b ${benches})
3532
GET_FILENAME_COMPONENT(name ${b} NAME_WE)
36-
STRING(REPLACE "_"
37-
"-"
38-
name
39-
${name})
33+
STRING(REPLACE "_" "-" name ${name})
4034
ADD_BENCH(${name} ${b})
4135
ENDFOREACH()

cmake/cuda_examples.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ENABLE_LANGUAGE(CUDA)
2+
3+
FUNCTION(ADD_CUDA_EXAMPLE target)
4+
ADD_EXECUTABLE(${target} ${ARGN})
5+
TARGET_INCLUDE_DIRECTORIES(${target} PRIVATE ${CMAKE_SOURCE_DIR}/include)
6+
ENDFUNCTION()
7+
8+
ADD_CUDA_EXAMPLE(example-cuda examples/example_cuda.cu)

cmake/examples.cmake

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,6 @@ FIND_PACKAGE(Threads)
33
FUNCTION(ADD_TRACE_EXAMPLE target)
44
ADD_EXECUTABLE(${target} ${ARGN})
55
TARGET_INCLUDE_DIRECTORIES(${target} PRIVATE ${CMAKE_SOURCE_DIR}/include)
6-
TARGET_LINK_LIBRARIES(${target} stdtracer)
7-
TARGET_LINK_LIBRARIES(${target} Threads::Threads)
8-
ENDFUNCTION()
9-
10-
FUNCTION(ADD_TRACE_DISABLED_EXAMPLE target)
11-
ADD_EXECUTABLE(${target} ${ARGN})
12-
TARGET_INCLUDE_DIRECTORIES(${target} PRIVATE ${CMAKE_SOURCE_DIR}/include)
13-
TARGET_COMPILE_DEFINITIONS(${target} PRIVATE -DSTD_TRACER_DISABLE)
146
TARGET_LINK_LIBRARIES(${target} Threads::Threads)
157
ENDFUNCTION()
168

@@ -19,7 +11,6 @@ FOREACH(src ${examples})
1911
GET_FILENAME_COMPONENT(name ${src} NAME_WE)
2012
STRING(REPLACE "_" "-" name ${name})
2113
ADD_TRACE_EXAMPLE(${name} ${src})
22-
ADD_TRACE_DISABLED_EXAMPLE(${name}-disabled ${src})
2314
ENDFOREACH()
2415

2516
FUNCTION(ADD_ADVANCED_TRACE_EXAMPLE target)

cmake/tests.cmake

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
INCLUDE(ExternalProject)
22

3-
SET(GTEST_GIT_URL https://github.com/google/googletest.git
3+
SET(GTEST_GIT_URL
4+
https://github.com/google/googletest.git
45
CACHE STRING "URL for clone gtest")
56

67
SET(PREFIX ${CMAKE_SOURCE_DIR}/3rdparty)
78

8-
EXTERNALPROJECT_ADD(libgtest-dev
9-
GIT_REPOSITORY
10-
${GTEST_GIT_URL}
11-
PREFIX
12-
${PREFIX}
13-
CMAKE_ARGS
14-
-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/3rdparty
15-
-DCMAKE_CXX_FLAGS=-std=c++11
16-
-Dgtest_disable_pthreads=1
17-
-DBUILD_GMOCK=0)
9+
EXTERNALPROJECT_ADD(
10+
libgtest-dev
11+
GIT_REPOSITORY ${GTEST_GIT_URL}
12+
PREFIX ${PREFIX}
13+
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/3rdparty
14+
-DCMAKE_CXX_FLAGS=-std=c++11 -Dgtest_disable_pthreads=1
15+
-DBUILD_GMOCK=0)
1816

1917
LINK_DIRECTORIES(${PREFIX}/lib)
2018

@@ -23,16 +21,13 @@ FUNCTION(ADD_GTEST target)
2321
ADD_DEPENDENCIES(${target} libgtest-dev)
2422
TARGET_INCLUDE_DIRECTORIES(${target} PRIVATE ${PREFIX}/include)
2523
TARGET_INCLUDE_DIRECTORIES(${target} PRIVATE ${CMAKE_SOURCE_DIR}/include)
26-
TARGET_LINK_LIBRARIES(${target} gtest stdtracer)
24+
TARGET_LINK_LIBRARIES(${target} gtest)
2725
ADD_TEST(NAME ${target} COMMAND ${target})
2826
ENDFUNCTION()
2927

3028
FILE(GLOB tests tests/test_*.cpp)
3129
FOREACH(t ${tests})
3230
GET_FILENAME_COMPONENT(name ${t} NAME_WE)
33-
STRING(REPLACE "_"
34-
"-"
35-
name
36-
${name})
31+
STRING(REPLACE "_" "-" name ${name})
3732
ADD_GTEST(${name} ${t})
3833
ENDFOREACH()

configure

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
#!/bin/bash
22
set -e
33

4-
PREFIX=$(pwd)/local
4+
PREFIX=$PWD/local
5+
CUDA_HOME=/usr/local/cuda
56

67
BUILD_EXAMPLES=0
8+
BUILD_CUDA_EXAMPLES=0
79
BUILD_TESTS=0
810
BUILD_BENCHMARKS=0
911
VERBOSE=0
@@ -17,6 +19,9 @@ parse_args() {
1719
--examples)
1820
BUILD_EXAMPLES=1
1921
;;
22+
--cuda-examples)
23+
BUILD_CUDA_EXAMPLES=1
24+
;;
2025
--tests)
2126
BUILD_TESTS=1
2227
;;
@@ -47,10 +52,15 @@ add_cmake_flags() {
4752
add_cmake_flag CMAKE_EXPORT_COMPILE_COMMANDS ${VERBOSE}
4853
add_cmake_flag CMAKE_VERBOSE_MAKEFILE ${VERBOSE}
4954

55+
add_cmake_flag BUILD_BENCHMARKS ${BUILD_BENCHMARKS}
56+
add_cmake_flag BUILD_CUDA_EXAMPLES ${BUILD_CUDA_EXAMPLES}
5057
add_cmake_flag BUILD_EXAMPLES ${BUILD_EXAMPLES}
5158
add_cmake_flag BUILD_TESTS ${BUILD_TESTS}
52-
add_cmake_flag BUILD_BENCHMARKS ${BUILD_BENCHMARKS}
5359

60+
if [ ${BUILD_CUDA_EXAMPLES} -eq 1 ]; then
61+
add_cmake_flag CMAKE_CUDA_COMPILER $CUDA_HOME/bin/nvcc
62+
add_cmake_flag CUDA_TOOLKIT_ROOT_DIR $CUDA_HOME
63+
fi
5464
if [ ! -z ${GTEST_GIT_URL} ]; then
5565
add_cmake_flag GTEST_GIT_URL ${GTEST_GIT_URL}
5666
fi

examples/example_cuda.cu

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include <iostream>
2+
#include <numeric>
3+
#include <vector>
4+
5+
#include <cuda_runtime.h>
6+
7+
#include <tracer/cuda>
8+
9+
DEFINE_TRACE_CONTEXTS;
10+
11+
template <typename R>
12+
__global__ void kern(R *x, int n)
13+
{
14+
for (int i = 0; i < n; ++i) { x[i] = i; }
15+
}
16+
17+
template <typename R = int>
18+
void f(int n)
19+
{
20+
TRACE_SCOPE(__func__);
21+
void *data;
22+
cudaMalloc(&data, n * sizeof(R));
23+
R *x = (R *)data;
24+
kern<R><<<1, 1>>>(x, n);
25+
std::vector<R> y(n);
26+
cudaMemcpy(y.data(), data, n * sizeof(R), cudaMemcpyDeviceToHost);
27+
cudaFree(data);
28+
29+
const R sum = std::accumulate(y.begin(), y.end(), 0);
30+
std::cout << sum << std::endl;
31+
}
32+
33+
int main()
34+
{
35+
TRACE_SCOPE(__func__);
36+
for (int i = 0; i < 10; ++i) { f((i + 1) * 1024); }
37+
return 0;
38+
}

examples/example_simple.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#include <cstdio>
22

3-
#include <stdtracer>
3+
#include <tracer/simple>
4+
5+
DEFINE_TRACE_CONTEXTS;
46

57
int fibo(int n)
68
{

examples/example_simple_log.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include <tracer/simple_log>
2+
3+
DEFINE_TRACE_CONTEXTS; // must be defined exactly once in one executable
4+
5+
int fibo(int n)
6+
{
7+
// don't use in deep recursive function!
8+
if (n < 2) { return 1; }
9+
return fibo(n - 1) + fibo(n - 2);
10+
}
11+
12+
void f(int n)
13+
{
14+
TRACE_SCOPE(__func__);
15+
int x = TRACE_EXPR(fibo(n));
16+
printf("fibo(%d) = %d\n", n, x);
17+
}
18+
19+
void g()
20+
{
21+
TRACE_SCOPE(__func__);
22+
for (int i = 0; i < 43; ++i) { TRACE_STMT(f(i)); }
23+
}
24+
25+
int main()
26+
{
27+
TRACE_SCOPE(__func__);
28+
g();
29+
return 0;
30+
}

0 commit comments

Comments
 (0)