OSDN Git Service

modified: utilsrc/src/Admin/Makefile
[eos/others.git] / utiltools / X86MAC64 / cuda / include / nppcore.h
1  /* Copyright 2009-2012 NVIDIA Corporation.  All rights reserved. 
2   * 
3   * NOTICE TO LICENSEE: 
4   * 
5   * The source code and/or documentation ("Licensed Deliverables") are 
6   * subject to NVIDIA intellectual property rights under U.S. and 
7   * international Copyright laws. 
8   * 
9   * The Licensed Deliverables contained herein are PROPRIETARY and 
10   * CONFIDENTIAL to NVIDIA and are being provided under the terms and 
11   * conditions of a form of NVIDIA software license agreement by and 
12   * between NVIDIA and Licensee ("License Agreement") or electronically 
13   * accepted by Licensee.  Notwithstanding any terms or conditions to 
14   * the contrary in the License Agreement, reproduction or disclosure 
15   * of the Licensed Deliverables to any third party without the express 
16   * written consent of NVIDIA is prohibited. 
17   * 
18   * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE 
19   * LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE 
20   * SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE.  THEY ARE 
21   * PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. 
22   * NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED 
23   * DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, 
24   * NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. 
25   * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE 
26   * LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY 
27   * SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY 
28   * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
29   * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 
30   * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
31   * OF THESE LICENSED DELIVERABLES. 
32   * 
33   * U.S. Government End Users.  These Licensed Deliverables are a 
34   * "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT 
35   * 1995), consisting of "commercial computer software" and "commercial 
36   * computer software documentation" as such terms are used in 48 
37   * C.F.R. 12.212 (SEPT 1995) and are provided to the U.S. Government 
38   * only as a commercial end item.  Consistent with 48 C.F.R.12.212 and 
39   * 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all 
40   * U.S. Government End Users acquire the Licensed Deliverables with 
41   * only those rights set forth herein. 
42   * 
43   * Any use of the Licensed Deliverables in individual and commercial 
44   * software must include, in the user documentation and internal 
45   * comments to the code, the above Disclaimer and U.S. Government End 
46   * Users Notice. 
47   */ 
48 #ifndef NV_NPPCORE_H
49 #define NV_NPPCORE_H
50
51 #include <cuda_runtime_api.h>
52
53 /**
54  * \file nppcore.h
55  * Basic NPP functionality. 
56  *  This file contains functions to query the NPP version as well as 
57  *  info about the CUDA compute capabilities on a given computer.
58  */
59  
60 #include "nppdefs.h"
61
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65  
66 /** \defgroup core_npp NPP Core
67  * Basic functions for library management, in particular library version
68  * and device property query functions.
69  * @{
70  */
71
72 /**
73  * Get the NPP library version.
74  *
75  * \return A struct containing separate values for major and minor revision 
76  *      and build number.
77  */
78 const NppLibraryVersion * 
79 nppGetLibVersion(void);
80
81 /**
82  * What CUDA compute model is supported by the active CUDA device?
83  * 
84  * Before trying to call any NPP functions, the user should make a call
85  * this function to ensure that the current machine has a CUDA capable device.
86  *
87  * \return An enum value representing if a CUDA capable device was found and what
88  *      level of compute capabilities it supports.
89  */
90 NppGpuComputeCapability 
91 nppGetGpuComputeCapability(void);
92
93 /**
94  * Get the number of Streaming Multiprocessors (SM) on the active CUDA device.
95  *
96  * \return Number of SMs of the default CUDA device.
97  */
98 int 
99 nppGetGpuNumSMs(void);
100
101 /**
102  * Get the maximum number of threads per block on the active CUDA device.
103  *
104  * \return Maximum number of threads per block on the active CUDA device.
105  */
106 int 
107 nppGetMaxThreadsPerBlock(void);
108
109 /**
110  * Get the maximum number of threads per SM for the active GPU
111  *
112  * \return Maximum number of threads per SM for the active GPU
113  */
114 int 
115 nppGetMaxThreadsPerSM(void);
116
117 /** 
118  * Get the name of the active CUDA device.
119  *
120  * \return Name string of the active graphics-card/compute device in a system.
121  */
122 const char * 
123 nppGetGpuName(void);
124
125 /**
126  * Get the NPP CUDA stream.
127  * NPP enables concurrent device tasks via a global stream state varible.
128  * The NPP stream by default is set to stream 0, i.e. non-concurrent mode.
129  * A user can set the NPP stream to any valid CUDA stream. All CUDA commands
130  * issued by NPP (e.g. kernels launched by the NPP library) are then
131  * issed to that NPP stream.
132  */
133 cudaStream_t
134 nppGetStream(void);
135
136 /**
137  * Set the NPP CUDA stream.
138  * \see nppGetStream()
139  */
140 void
141 nppSetStream(cudaStream_t hStream);
142
143
144 /** @} Module LabelCoreNPP */
145
146
147 #ifdef __cplusplus
148 } /* extern "C" */
149 #endif
150
151 #endif /* NV_NPPCORE_H */