Improve trace API

- Validate compile-time disables.
- Add README.md section explain how to install/use CodeXL tracing
- Add code docs on trace_helper.h
- fix color on hipLaunchKernel to green.


[ROCm/hip commit: 2569e15375]
This commit is contained in:
Ben Sander
2016-03-23 02:57:52 -05:00
parent 5c8b743588
commit 6d5968027c
4 changed files with 84 additions and 36 deletions
@@ -485,6 +485,10 @@ __device__ inline float __dsqrt_rz(double x) {return hc::fast_math::sqrt(x); };
hipStream_t ihipPreLaunchKernel(hipStream_t stream, hc::accelerator_view **av);
void ihipPostLaunchKernel(hipStream_t stream, hc::completion_future &cf);
// TODO - move to common header file.
#define KNRM "\x1B[0m"
#define KGRN "\x1B[32m"
#if not defined(DISABLE_GRID_LAUNCH)
#define hipLaunchKernel(_kernelName, _numBlocks3D, _blockDim3D, _groupMemBytes, _stream, ...) \
do {\
@@ -500,7 +504,7 @@ do {\
lp.cf = &cf; \
hipStream_t trueStream = (ihipPreLaunchKernel(_stream, &lp.av)); \
if (HIP_TRACE_API) {\
fprintf(stderr, "==hip-api: launch '%s' gridDim:[%d.%d.%d] groupDim:[%d.%d.%d] groupMem:+%d stream=%p\n", \
fprintf(stderr, KGRN "<<hip-api: hipLaunchKernel '%s' gridDim:[%d.%d.%d] groupDim:[%d.%d.%d] groupMem:+%d stream=%p\n" KNRM, \
#_kernelName, lp.gridDim.z, lp.gridDim.y, lp.gridDim.x, lp.groupDim.z, lp.groupDim.y, lp.groupDim.x, lp.groupMemBytes, (void*)(_stream));\
}\
_kernelName (lp, __VA_ARGS__);\
@@ -524,7 +528,7 @@ do {\
lp.cf = &cf; \
hipStream_t trueStream = (ihipPreLaunchKernel(_stream, &lp.av)); \
if (HIP_TRACE_API) {\
fprintf(stderr, "hiptrace1: launch '%s' gridDim:[%d.%d.%d] groupDim:[%d.%d.%d] groupMem:+%d stream=%p\n", \
fprintf(stderr, "==hip-api: launch '%s' gridDim:[%d.%d.%d] groupDim:[%d.%d.%d] groupMem:+%d stream=%p\n", \
#_kernelName, lp.gridDim.z, lp.gridDim.y, lp.gridDim.x, lp.groupDim.z, lp.groupDim.y, lp.groupDim.x, lp.groupMemBytes, (void*)(_stream));\
}\
_kernelName (lp, __VA_ARGS__);\
+12 -15
View File
@@ -2,6 +2,14 @@
#include <iomanip>
#include <string>
//---
// Helper functions to convert HIP function arguments into strings.
// Handles POD data types as well as enumerations (ie hipMemcpyKind).
// The implementation uses C++11 variadic templates and template specialization.
// The hipMemcpyKind example below is a good example that shows how to implement conversion for a new HSA type.
// Handy macro to convert an enumeration to a stringified version of same:
#define CASE_STR(x) case x: return #x;
@@ -15,7 +23,7 @@ std::string ToHexString(T v)
};
//---
// Template overloads for ToString to handle various types:
// Note these use C++11 variadic templates
template <typename T>
@@ -26,17 +34,6 @@ std::string ToString(T v) {
};
#if 0
template <>
std::string ToString(void* v) {
std::ostringstream ss;
//ss << "0x" << std::setw(16) << std::setfill('0') << std::hex << v;
ss << "0x" << std::hex << v;
return ss.str();
};
#endif
template <>
std::string ToString(hipMemcpyKind v) {
switch(v) {
@@ -61,11 +58,11 @@ std::string ToString() {
return ("");
}
///
//---
// C++11 variadic template - peels off first argument, converts to string, and calls itself again to peel the next arg.
// Strings are automatically separated by comma+space.
template <typename T, typename... Args>
std::string ToString(T first, Args... args) {
return ToString(first) + ", " + ToString(args...) ;
}