Changes in / [a7a5ff3:c98c772] in sasmodels
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
sascomp
ra78bebc r5efe850 4 4 import os 5 5 import glob 6 import logging 7 logging.basicConfig(level=logging.INFO) 6 8 7 9 def main(): … … 11 13 sys.path.insert(0, os.path.join(root, 'bumps')) 12 14 sys.path.insert(0, os.path.join(root, 'periodictable')) 15 sys.path.insert(0, os.path.join(root, 'tinycc')) 13 16 if sasview: # glob returns a list 14 17 sys.path.insert(0, sasview[0]) -
sasmodels/kernel_template.c
r3832f27 r5efe850 12 12 // Note: if using a C++ compiler, then define kernel as extern "C" 13 13 #ifndef USE_OPENCL 14 // Use SAS_DOUBLE to force the use of double even for float kernels 15 # define SAS_DOUBLE dou ## ble 14 16 # ifdef __cplusplus 15 17 #include <cstdio> … … 38 40 #if defined(__TINYC__) 39 41 #include <math.h> 40 inline double trunc(double x) { return x>=0?floor(x):-floor(-x); }41 inline double fmin(double x, double y) { return x>y ? y : x; }42 inline double fmax(double x, double y) { return x<y ? y : x; }43 42 // TODO: test isnan 44 43 inline double _isnan(double x) { return x != x; } // hope this doesn't optimize away! 45 44 #undef isnan 46 45 #define isnan(x) _isnan(x) 46 // Defeat the double->float conversion since we don't have tgmath 47 inline SAS_DOUBLE trunc(SAS_DOUBLE x) { return x>=0?floor(x):-floor(-x); } 48 inline SAS_DOUBLE fmin(SAS_DOUBLE x, SAS_DOUBLE y) { return x>y ? y : x; } 49 inline SAS_DOUBLE fmax(SAS_DOUBLE x, SAS_DOUBLE y) { return x<y ? y : x; } 47 50 #define NEED_EXPM1 48 51 #define NEED_TGAMMA … … 70 73 71 74 #if defined(NEED_EXPM1) 72 static double expm1(double x) { 75 static SAS_DOUBLE expm1(SAS_DOUBLE x_in) { 76 double x = (double)x_in; // go back to float for single precision kernels 73 77 // Adapted from the cephes math library. 74 78 // Copyright 1984 - 1992 by Stephen L. Moshier -
sasmodels/kernelcl.py
r821a9c6 r33af590 61 61 warnings.warn(str(exc)) 62 62 raise RuntimeError("OpenCL not available") 63 64 # CRUFT: pyopencl < 2017.1 (as of June 2016 needs quotes around include path) 65 def _quote_path(v): 66 """ 67 Quote the path if it is not already quoted. 68 69 If v starts with '-', then assume that it is a -I option or similar 70 and do not quote it. This is fragile: -Ipath with space needs to 71 be quoted. 72 """ 73 return '"'+v+'"' if v and ' ' in v and not v[0] in "\"'-" else v 74 75 if hasattr(cl, '_DEFAULT_INCLUDE_OPTIONS'): 76 cl._DEFAULT_INCLUDE_OPTIONS = [_quote_path(v) for v in cl._DEFAULT_INCLUDE_OPTIONS] 63 77 64 78 from pyopencl import mem_flags as mf … … 224 238 context = self.get_context(dtype) 225 239 logging.info("building %s for OpenCL %s" 226 % (key, context.devices[0].name ))240 % (key, context.devices[0].name.strip())) 227 241 program = compile_model(context, source, np.dtype(dtype), fast) 228 242 self.compiled[key] = program -
sasmodels/kerneldll.py
r821a9c6 r5efe850 60 60 from .exception import annotate_exception 61 61 62 # Compiler platform details 63 if sys.platform == 'darwin': 64 #COMPILE = "gcc-mp-4.7 -shared -fPIC -std=c99 -fopenmp -O2 -Wall %s -o %s -lm -lgomp" 65 COMPILE = "gcc -shared -fPIC -std=c99 -O2 -Wall %(source)s -o %(output)s -lm" 66 elif os.name == 'nt': 62 if os.name == 'nt': 63 # Windows compiler; check if TinyCC is available 64 try: 65 from tinycc import TCC 66 except ImportError: 67 TCC = None 67 68 # call vcvarsall.bat before compiling to set path, headers, libs, etc. 68 69 if "VCINSTALLDIR" in os.environ: … … 73 74 # TODO: remove intermediate OBJ file created in the directory 74 75 # TODO: maybe don't use randomized name for the c file 76 # TODO: maybe ask distutils to find MSVC 75 77 CC = "cl /nologo /Ox /MD /W3 /GS- /DNDEBUG /Tp%(source)s " 76 78 LN = "/link /DLL /INCREMENTAL:NO /MANIFEST /OUT:%(output)s" … … 79 81 else: 80 82 COMPILE = " ".join((CC, LN)) 81 elif True: 82 # If MSVC compiler is not available, try using mingw 83 # fPIC is not needed on windows 83 elif TCC: 84 # TinyCC compiler. 85 COMPILE = TCC + " -shared -rdynamic -Wall %(source)s -o %(output)s" 86 else: 87 # MinGW compiler. 84 88 COMPILE = "gcc -shared -std=c99 -O2 -Wall %(source)s -o %(output)s -lm" 85 89 if "SAS_OPENMP" in os.environ: 86 COMPILE = COMPILE + " -fopenmp" 87 else: 88 # If MSVC compiler is not available, try using tinycc 89 from tinycc import TCC 90 COMPILE = TCC + " -shared -rdynamic -Wall %(source)s -o %(output)s" 90 COMPILE += " -fopenmp" 91 91 else: 92 COMPILE = "cc -shared -fPIC -fopenmp -std=c99 -O2 -Wall %(source)s -o %(output)s -lm" 92 # Generic unix compile 93 # On mac users will need the X code command line tools installed 94 COMPILE = "cc -shared -fPIC -std=c99 -O2 -Wall %(source)s -o %(output)s -lm" 95 96 # add openmp support if not running on a mac 97 if sys.platform != 'darwin': 98 #COMPILE = "gcc-mp-4.7 -shared -fPIC -std=c99 -fopenmp -O2 -Wall %s -o %s -lm -lgomp" 99 COMPILE += " -fopenmp" 93 100 94 101 # Windows-specific solution
Note: See TracChangeset
for help on using the changeset viewer.