SCM Repository
Annotation of /branches/pure-cfg/src/include/Diderot/diderot.h
Parent Directory
|
Revision Log
Revision 1276 - (view) (download) (as text)
1 : | jhr | 438 | /*! \file diderot.h |
2 : | * | ||
3 : | * \author John Reppy | ||
4 : | jhr | 441 | * |
5 : | * This is the interface to the Diderot runtime for the C target. For now, | ||
6 : | * we are targetting single-precision computations. | ||
7 : | jhr | 438 | */ |
8 : | |||
9 : | /* | ||
10 : | * COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu) | ||
11 : | * All rights reserved. | ||
12 : | */ | ||
13 : | |||
14 : | #ifndef _DIDEROT_H_ | ||
15 : | #define _DIDEROT_H_ | ||
16 : | |||
17 : | jhr | 1196 | #include "Diderot/config.h" |
18 : | |||
19 : | jhr | 1273 | // include OpenCL headers when the target is OpenCL |
20 : | #if defined(DIDEROT_TARGET_CL) | ||
21 : | # ifdef HAVE_CL_CL_H | ||
22 : | # include <CL/cl.h> | ||
23 : | # elif defined(HAVE_OPENCL_CL_H) | ||
24 : | # include <OpenCL/cl.h> | ||
25 : | # else | ||
26 : | # error no cl.h | ||
27 : | # endif | ||
28 : | #endif | ||
29 : | |||
30 : | jhr | 601 | /* gcc has a bug that breaks code that uses 8-byte vectors (e.g., vec2f_t), but clang |
31 : | * handles the code correctly. | ||
32 : | */ | ||
33 : | #if defined(__clang__) | ||
34 : | # define VEC2_OK | ||
35 : | #endif | ||
36 : | |||
37 : | jhr | 579 | #ifdef NDEBUG |
38 : | jhr | 1268 | #define STATIC_INLINE static inline |
39 : | jhr | 579 | #else |
40 : | jhr | 1268 | #define STATIC_INLINE static |
41 : | jhr | 579 | #endif |
42 : | jhr | 440 | |
43 : | jhr | 438 | #include <stdint.h> |
44 : | #include <stdbool.h> | ||
45 : | jhr | 558 | #include <stdlib.h> |
46 : | #include <math.h> | ||
47 : | jhr | 654 | #include <stdio.h> // for printing output |
48 : | jhr | 438 | |
49 : | jhr | 710 | #include "types.h" |
50 : | #include "strands.h" | ||
51 : | jhr | 1237 | #include "options.h" |
52 : | jhr | 438 | |
53 : | /* load image data from Nrrd files */ | ||
54 : | jhr | 561 | extern Status_t Diderot_LoadImage1D (Diderot_string_t name, Diderot_image1D_t **img); |
55 : | extern Status_t Diderot_LoadImage2D (Diderot_string_t name, Diderot_image2D_t **img); | ||
56 : | extern Status_t Diderot_LoadImage3D (Diderot_string_t name, Diderot_image3D_t **img); | ||
57 : | jhr | 438 | |
58 : | jhr | 439 | /* functions to get input-parameter values */ |
59 : | jhr | 438 | extern Status_t Diderot_InputString (const char *, const char **, bool); |
60 : | jhr | 1229 | extern Status_t Diderot_InputReal (const char *, Diderot_real_t *, bool); |
61 : | jhr | 1231 | extern Status_t Diderot_InputVec2 (const char *, Diderot_vec2_t *, bool); |
62 : | jhr | 1229 | extern Status_t Diderot_InputVec3 (const char *, Diderot_vec3_t *, bool); |
63 : | jhr | 438 | |
64 : | lamonts | 1271 | extern char * loadKernel (const char * filename); |
65 : | |||
66 : | jhr | 1268 | //! Summary information about the CPU configuration. |
67 : | jhr | 1196 | typedef struct { |
68 : | jhr | 1268 | int numHWNodes; //!< \brief number of (possibly multicore) processors |
69 : | int numHWCores; //!< \brief total number of (possibly | ||
70 : | //! mulithreaded) cores | ||
71 : | int numHWThreads; //!< \brief total number of hardware threads | ||
72 : | int numCoresPerNode; //!< \brief number of cores per thread | ||
73 : | int numThdsPerCore; //!< \brief number of threads per core | ||
74 : | jhr | 1196 | } CPUInfo_t; |
75 : | |||
76 : | jhr | 1268 | //! \brief function to get information about the CPU configuration |
77 : | jhr | 1196 | bool GetNumCPUs (CPUInfo_t *info); |
78 : | |||
79 : | jhr | 1276 | //! get the current time in seconds |
80 : | double GetTime (); | ||
81 : | jhr | 1196 | |
82 : | jhr | 1276 | |
83 : | jhr | 561 | /********** scalar math functions **********/ |
84 : | |||
85 : | glk | 758 | STATIC_INLINE float minf (float a, float b) |
86 : | { | ||
87 : | return (a < b)? a : b; | ||
88 : | } | ||
89 : | |||
90 : | jhr | 561 | STATIC_INLINE float maxf (float a, float b) |
91 : | { | ||
92 : | return (a < b)? b : a; | ||
93 : | } | ||
94 : | |||
95 : | jhr | 756 | STATIC_INLINE float lerpf (float a, float b, float t) |
96 : | { | ||
97 : | return a + t*(b - a); | ||
98 : | } | ||
99 : | |||
100 : | jhr | 710 | /********** vector math functions **********/ |
101 : | jhr | 588 | |
102 : | jhr | 710 | #include "inline-vec2.h" |
103 : | #include "inline-vec3.h" | ||
104 : | #include "inline-vec4.h" | ||
105 : | jhr | 727 | #include "inline-matrix.h" |
106 : | jhr | 588 | |
107 : | |||
108 : | jhr | 560 | /********** other Diderot support functions **********/ |
109 : | |||
110 : | jhr | 710 | #include "inline-image.h" |
111 : | jhr | 449 | |
112 : | jhr | 438 | #endif /* !_DIDEROT_H_ */ |
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |