~ubuntu-branches/debian/sid/lammps/sid

« back to all changes in this revision

Viewing changes to lib/kokkos/TPL/cub/util_debug.cuh

  • Committer: Package Import Robot
  • Author(s): Anton Gladky
  • Date: 2015-04-29 23:44:49 UTC
  • mfrom: (5.1.3 experimental)
  • Revision ID: package-import@ubuntu.com-20150429234449-mbhy9utku6hp6oq8
Tags: 0~20150313.gitfa668e1-1
Upload into unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
 * Copyright (c) 2011, Duane Merrill.  All rights reserved.
 
3
 * Copyright (c) 2011-2013, NVIDIA CORPORATION.  All rights reserved.
 
4
 * 
 
5
 * Redistribution and use in source and binary forms, with or without
 
6
 * modification, are permitted provided that the following conditions are met:
 
7
 *     * Redistributions of source code must retain the above copyright
 
8
 *       notice, this list of conditions and the following disclaimer.
 
9
 *     * Redistributions in binary form must reproduce the above copyright
 
10
 *       notice, this list of conditions and the following disclaimer in the
 
11
 *       documentation and/or other materials provided with the distribution.
 
12
 *     * Neither the name of the NVIDIA CORPORATION nor the
 
13
 *       names of its contributors may be used to endorse or promote products
 
14
 *       derived from this software without specific prior written permission.
 
15
 * 
 
16
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 
17
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 
18
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
19
 * DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE FOR ANY
 
20
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 
21
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 
22
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 
23
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
24
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
25
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
26
 *
 
27
 ******************************************************************************/
 
28
 
 
29
/**
 
30
 * \file
 
31
 * Error and event logging routines.
 
32
 *
 
33
 * The following macros definitions are supported:
 
34
 * - \p CUB_LOG.  Simple event messages are printed to \p stdout.
 
35
 */
 
36
 
 
37
#pragma once
 
38
 
 
39
#include <stdio.h>
 
40
#include "util_namespace.cuh"
 
41
#include "util_arch.cuh"
 
42
 
 
43
/// Optional outer namespace(s)
 
44
CUB_NS_PREFIX
 
45
 
 
46
/// CUB namespace
 
47
namespace cub {
 
48
 
 
49
 
 
50
/**
 
51
 * \addtogroup UtilModule
 
52
 * @{
 
53
 */
 
54
 
 
55
 
 
56
/// CUB error reporting macro (prints error messages to stderr)
 
57
#if (defined(DEBUG) || defined(_DEBUG))
 
58
    #define CUB_STDERR
 
59
#endif
 
60
 
 
61
 
 
62
 
 
63
/**
 
64
 * \brief %If \p CUB_STDERR is defined and \p error is not \p cudaSuccess, the corresponding error message is printed to \p stderr (or \p stdout in device code) along with the supplied source context.
 
65
 *
 
66
 * \return The CUDA error.
 
67
 */
 
68
__host__ __device__ __forceinline__ cudaError_t Debug(
 
69
    cudaError_t     error,
 
70
    const char*     filename,
 
71
    int             line)
 
72
{
 
73
#ifdef CUB_STDERR
 
74
    if (error)
 
75
    {
 
76
    #if (CUB_PTX_ARCH == 0)
 
77
        fprintf(stderr, "CUDA error %d [%s, %d]: %s\n", error, filename, line, cudaGetErrorString(error));
 
78
        fflush(stderr);
 
79
    #elif (CUB_PTX_ARCH >= 200)
 
80
        printf("CUDA error %d [block %d, thread %d, %s, %d]\n", error, blockIdx.x, threadIdx.x, filename, line);
 
81
    #endif
 
82
    }
 
83
#endif
 
84
    return error;
 
85
}
 
86
 
 
87
 
 
88
/**
 
89
 * \brief Debug macro
 
90
 */
 
91
#define CubDebug(e) cub::Debug((e), __FILE__, __LINE__)
 
92
 
 
93
 
 
94
/**
 
95
 * \brief Debug macro with exit
 
96
 */
 
97
#define CubDebugExit(e) if (cub::Debug((e), __FILE__, __LINE__)) { exit(1); }
 
98
 
 
99
 
 
100
/**
 
101
 * \brief Log macro for printf statements.
 
102
 */
 
103
#if (CUB_PTX_ARCH == 0)
 
104
    #define CubLog(format, ...) printf(format,__VA_ARGS__);
 
105
#elif (CUB_PTX_ARCH >= 200)
 
106
    #define CubLog(format, ...) printf("[block %d, thread %d]: " format, blockIdx.x, threadIdx.x, __VA_ARGS__);
 
107
#endif
 
108
 
 
109
 
 
110
 
 
111
 
 
112
/** @} */       // end group UtilModule
 
113
 
 
114
}               // CUB namespace
 
115
CUB_NS_POSTFIX  // Optional outer namespace(s)