Program Listing for File print.h
↰ Return to documentation for file (src/pcms/utility/print.h)
#ifndef PCMS_PRINT_H
#define PCMS_PRINT_H
#include "pcms/configuration.h"
#include <cstdio>
#include <Kokkos_Core.hpp>
namespace pcms
{
#if defined(__CUDA_ARCH__) || defined(__HIP_DEVICE_COMPILE__) || \
defined(__SYCL_DEVICE_ONLY__)
#define ACTIVE_GPU_EXECUTION
#endif
FILE* getStdout();
FILE* getStderr();
void setStdout(FILE* out);
void setStderr(FILE* err);
template <typename... Args>
void printError(const char* fmt, const Args&... args)
{
#if defined(PCMS_ENABLE_PRINT)
fprintf(getStdout(), fmt, args...);
#endif
}
template <typename... Args>
KOKKOS_INLINE_FUNCTION void printInfo(const char* fmt, const Args&... args)
{
#if defined(PCMS_ENABLE_PRINT) && !defined(ACTIVE_GPU_EXECUTION)
fprintf(getStdout(), fmt, args...);
#endif
}
template <typename... Args>
KOKKOS_INLINE_FUNCTION void printDebugInfo(const char* fmt, const Args&... args)
{
#if !defined(NDEBUG) && defined(PCMS_ENABLE_PRINT)
#if !defined(ACTIVE_GPU_EXECUTION)
fprintf(getStdout(), fmt, args...);
#else // For GPU execution
printf(fmt, args...);
#endif
#else
(void)fmt;
((void)args, ...);
#endif
}
} // namespace pcms
#endif // PCMS_PRINT_H