SCM Repository
Annotation of /trunk/src/lib/cl-target/clinfo.h
Parent Directory
|
Revision Log
Revision 2060 - (view) (download) (as text)
1 : | jhr | 1671 | /*! \file clinfo.h |
2 : | * | ||
3 : | * \author John Reppy | ||
4 : | */ | ||
5 : | |||
6 : | /* | ||
7 : | * COPYRIGHT (c) 2011 The Diderot Project (http://diderot-language.cs.uchicago.edu) | ||
8 : | * All rights reserved. | ||
9 : | */ | ||
10 : | |||
11 : | #ifndef _CLINFO_H_ | ||
12 : | #define _CLINFO_H_ | ||
13 : | |||
14 : | lamonts | 2060 | #define NVIDIA_VENDOR_ID 4318 |
15 : | #define AMD_VENDOR_ID 4098 | ||
16 : | |||
17 : | jhr | 1671 | #include "Diderot/diderot.h" |
18 : | # ifdef HAVE_CL_CL_H | ||
19 : | # include <CL/cl.h> | ||
20 : | # elif defined(HAVE_OPENCL_CL_H) | ||
21 : | # include <OpenCL/cl.h> | ||
22 : | # else | ||
23 : | # error no cl.h | ||
24 : | # endif | ||
25 : | |||
26 : | typedef struct { | ||
27 : | char *name; //!< name of device | ||
28 : | char *vendor; //!< device vendor | ||
29 : | int majorVersion; //!< major OpenCL version number supported by the device | ||
30 : | int minorVersion; //!< minor OpenCL version number supported by the device | ||
31 : | lamonts | 2060 | cl_uint vendorId; //!< A unique device vndeo identifier. |
32 : | jhr | 1671 | cl_device_id id; //!< the device ID |
33 : | cl_device_type ty; //!< the type of the device | ||
34 : | cl_bool isAvail; //!< true, if the device is available | ||
35 : | cl_uint addrBits; //!< number of address bits on device (32 or 64) | ||
36 : | cl_bool littleEndian; //!< true if device is little endian | ||
37 : | cl_uint numCUs; //!< number of compute units | ||
38 : | cl_uint cuWidth; //!< width of a compute unit; this value is determined | ||
39 : | //! by looking at the device type and vendor string. | ||
40 : | cl_uint maxConstArgs; //!< maximum number of __constant arguments | ||
41 : | cl_uint maxWIDims; //!< maximum number of work item dimensions | ||
42 : | size_t maxWGSize; //!< maximum workgroup size | ||
43 : | size_t *maxWISize; //!< maximum number of work items in each dimension | ||
44 : | cl_ulong globalMemSzb; //!< the size of the device's global memory | ||
45 : | cl_ulong localMemSzb; //!< the size of the device's local memory | ||
46 : | size_t maxParamSzb; //!< the maximum size in bytes of the kernel arguments | ||
47 : | cl_ulong maxConstBufSzb; //!< maximum size of a constant buffer | ||
48 : | cl_ulong maxAllocSzb; //!< maximum allocation size in bytes | ||
49 : | size_t maxImg2D[2]; //!< maximum width and height of 2D images | ||
50 : | size_t maxImg3D[3]; //!< maximim width, height, and depthe of 3D images | ||
51 : | // prefered vector widths by type: | ||
52 : | cl_uint charWid; //!< prefered width of char vectors | ||
53 : | cl_uint shortWid; //!< prefered width of short vectors | ||
54 : | cl_uint intWid; //!< prefered width of int vectors | ||
55 : | cl_uint longWid; //!< prefered width of long vectors | ||
56 : | cl_uint floatWid; //!< prefered width of float vectors | ||
57 : | cl_uint doubleWid; //!< prefered width of double vectors | ||
58 : | //! (0 if doubles are not supported) | ||
59 : | } DeviceInfo_t; | ||
60 : | |||
61 : | typedef struct { | ||
62 : | char *name; //!< name of platform | ||
63 : | cl_platform_id id; //! the platform ID | ||
64 : | int numDevices; //!< number of devices supported by platform | ||
65 : | DeviceInfo_t *devices; //!< array of devices | ||
66 : | } PlatformInfo_t; | ||
67 : | |||
68 : | typedef struct { | ||
69 : | int numPlatforms; //!< number of platforms supported by system | ||
70 : | PlatformInfo_t *platforms; //!< array of supported platforms. | ||
71 : | } CLInfo_t; | ||
72 : | |||
73 : | /*! \brief return information about the OpenCL support of the system. | ||
74 : | * \return pointer to a CLInfo_t structure or 0 if there is an error. | ||
75 : | */ | ||
76 : | CLInfo_t *GetCLInfo (); | ||
77 : | |||
78 : | /*! \brief print the CL profile information to an output stream. | ||
79 : | */ | ||
80 : | void PrintCLInfo (FILE *outS, CLInfo_t *clinfo); | ||
81 : | |||
82 : | /*! \brief check to see if a device is a GPU */ | ||
83 : | STATIC_INLINE bool isGPUDevice (DeviceInfo_t *dev) | ||
84 : | { | ||
85 : | return ((dev->ty & CL_DEVICE_TYPE_GPU) != 0); | ||
86 : | } | ||
87 : | |||
88 : | /*! \brief check to see if a device is a CPU */ | ||
89 : | STATIC_INLINE bool isCPUDevice (DeviceInfo_t *dev) | ||
90 : | { | ||
91 : | return ((dev->ty & CL_DEVICE_TYPE_CPU) != 0); | ||
92 : | } | ||
93 : | |||
94 : | #endif /* !_CLINFO_H_ */ |
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |