38 #define zeroThread (threadIdx.x + blockDim.x*blockIdx.x==0 && \ 39 threadIdx.y + blockDim.y*blockIdx.y==0 && \ 40 threadIdx.z + blockDim.z*blockIdx.z==0) 42 #define printfZero(...) do { \ 43 if (zeroThread) printf(__VA_ARGS__); \ 49 #define printfQuda(...) do { \ 50 sprintf(getPrintBuffer(), __VA_ARGS__); \ 51 if (getRankVerbosity()) { \ 52 fprintf(getOutputFile(), "%s", getOutputPrefix()); \ 53 fprintf(getOutputFile(), "%s", getPrintBuffer()); \ 54 fflush(getOutputFile()); \ 58 #define errorQuda(...) do { \ 59 fprintf(getOutputFile(), "%sERROR: ", getOutputPrefix()); \ 60 fprintf(getOutputFile(), __VA_ARGS__); \ 61 fprintf(getOutputFile(), " (rank %d, host %s, " __FILE__ ":%d in %s())\n", \ 62 comm_rank(), comm_hostname(), __LINE__, __func__); \ 63 fprintf(getOutputFile(), "%s last kernel called was (name=%s,volume=%s,aux=%s)\n", \ 64 getOutputPrefix(), getLastTuneKey().name, \ 65 getLastTuneKey().volume, getLastTuneKey().aux); \ 66 fflush(getOutputFile()); \ 70 #define warningQuda(...) do { \ 71 if (getVerbosity() > QUDA_SILENT) { \ 72 sprintf(getPrintBuffer(), __VA_ARGS__); \ 73 if (getRankVerbosity()) { \ 74 fprintf(getOutputFile(), "%sWARNING: ", getOutputPrefix()); \ 75 fprintf(getOutputFile(), "%s", getPrintBuffer()); \ 76 fprintf(getOutputFile(), "\n"); \ 77 fflush(getOutputFile()); \ 84 #define printfQuda(...) do { \ 85 fprintf(getOutputFile(), "%s", getOutputPrefix()); \ 86 fprintf(getOutputFile(), __VA_ARGS__); \ 87 fflush(getOutputFile()); \ 90 #define errorQuda(...) do { \ 91 fprintf(getOutputFile(), "%sERROR: ", getOutputPrefix()); \ 92 fprintf(getOutputFile(), __VA_ARGS__); \ 93 fprintf(getOutputFile(), " (" __FILE__ ":%d in %s())\n", \ 94 __LINE__, __func__); \ 95 fprintf(getOutputFile(), "%s last kernel called was (name=%s,volume=%s,aux=%s)\n", \ 96 getOutputPrefix(), getLastTuneKey().name, \ 97 getLastTuneKey().volume, getLastTuneKey().aux); \ 101 #define warningQuda(...) do { \ 102 if (getVerbosity() > QUDA_SILENT) { \ 103 fprintf(getOutputFile(), "%sWARNING: ", getOutputPrefix()); \ 104 fprintf(getOutputFile(), __VA_ARGS__); \ 105 fprintf(getOutputFile(), "\n"); \ 106 fflush(getOutputFile()); \ 113 #define checkCudaErrorNoSync() do { \ 114 cudaError_t error = cudaGetLastError(); \ 115 if (error != cudaSuccess) \ 116 errorQuda("(CUDA) %s", cudaGetErrorString(error)); \ 122 #define checkCudaError() do { \ 123 cudaDeviceSynchronize(); \ 124 checkCudaErrorNoSync(); \ 129 #define checkCudaError() checkCudaErrorNoSync() 134 #endif // _UTIL_QUDA_H
QudaVerbosity getVerbosity()
void setOutputPrefix(const char *prefix)
void pushVerbosity(QudaVerbosity verbosity)
bool getRankVerbosity()
This function returns true if the calling rank is enabled for verbosity (e.g., whether printQuda and ...
enum QudaVerbosity_s QudaVerbosity
void setOutputFile(FILE *outfile)
QudaTune getTuning()
Query whether autotuning is enabled or not. Default is enabled but can be overridden by setting QUDA_...
void setVerbosity(const QudaVerbosity verbosity)