Changes in / [bf09f55:62d7601] in sasmodels
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/genmodel.py
r745b7bb rb866abf 3 3 import sys, os, math, re 4 4 import numpy as np 5 import matplotlib 6 matplotlib.use('Agg') 5 7 import matplotlib.pyplot as plt 6 8 sys.path.insert(0, os.path.abspath('..')) -
doc/guide/index.rst
r2e66ef5 rc0d7ab3 9 9 intro.rst 10 10 install.rst 11 gpu_setup.rst 11 12 pd/polydispersity.rst 12 13 resolution.rst -
doc/guide/install.rst
rf8a2baa rc0d7ab3 53 53 This will allow you to edit the files in the package and have the changes 54 54 show up immediately in python the next time you load your program. 55 56 OpenCL Installation57 *******************58 *Warning! GPU devices do not in general offer the same level of memory59 protection as CPU devices. If your code attempts to write outside allocated60 memory buffers unpredicatable behaviour may result (eg, your video display61 may freeze, or your system may crash, etc). Do not install OpenCL drivers62 without first checking for known issues (eg, some computer manufacturers63 install modified graphics drivers so replacing these may not be a good64 idea!). If in doubt, seek advice from an IT professional before proceeding65 further.*66 67 Check if you have OpenCL already installed68 ==========================================69 70 **Windows**71 72 The following instructions are based on73 http://web.engr.oregonstate.edu/~mjb/cs475/DoIHaveOpenCL.pdf74 75 * Go to: Start -> Control Panel -> System & Security -> Administrative Tools76 * Double Click on Computer Managment77 * Click on Device Manager78 * Click open Display Adapters79 * Right-click on available adapter and select Properties80 * Click on Driver81 * Go to Driver Details82 * Scroll down and see if OpenCL is installed (look for OpenCL*.dll files)83 84 **Mac OSX**85 86 For OS X operating systems higher than 10.6 OpenCL is shipped along with87 the system.88 89 However, OpenCL has had a rocky history on Macs. Apple provide a useful90 compatibility table at https://support.apple.com/en-us/HT20282391 92 93 Installation94 ============95 96 **Windows**97 98 Depending on the graphic card in your system, drivers99 can be obtained from different sources:100 101 * NVIDIA: https://developer.nvidia.com/opencl102 * AMD: http://developer.amd.com/tools-and-sdks/opencl-zone/103 104 105 **Mac OSX**106 107 N/A108 109 You cannot download OpenCL driver updates for your Mac. They are packaged110 with the normal quarterly OS X updates from Apple.111 112 113 .. note::114 Intel provides OpenCL drivers for Intel processors at115 https://software.intel.com/en-us/articles/opencl-drivers116 These can sometimes make use of special vector instructions across multiple117 processors, so it is worth installing if the GPU does not support double118 precision. You can install this driver alongside the GPU driver for NVIDIA119 or AMD.120 121 122 GPU Selection123 *************124 125 sasmodels evaluations can run on your graphics card (GPU) or they can run126 on the processor (CPU). In general, calculations performed on the GPU will run faster.127 128 To run on the GPU, your computer must have OpenCL drivers installed.129 For information about OpenCL installation see this130 :ref:`opencl-installation` guidance.131 132 Where the model is evaluated is a little bit complicated.133 If the model has the line *single=False* then it requires double precision.134 If the GPU is single precision only, then it will try running via OpenCL135 on the CPU. If the OpenCL driver is not available for the CPU then136 it will run as a normal program on the CPU.137 138 For models with a large number of parameters or with a lot of code,139 the GPU may be too small to run the program effectively.140 In this case, you should try simplifying the model, maybe breaking it141 into several different modules so that you don't need *IF* statements in your code.142 If it is still too big, you can set *opencl=False* in the model file and143 the model will only run as a normal program on the CPU.144 This will not usually be necessary.145 146 Device Selection147 ================148 If you have multiple GPU devices you can tell SasView which device to use.149 By default, SasView looks for one GPU and one CPU device150 from available OpenCL platforms.151 152 SasView prefers AMD or NVIDIA drivers for GPU, and prefers Intel or153 Apple drivers for CPU. Both GPU and CPU are included on the assumption that CPU154 is always available and supports double precision.155 156 The device order is important: GPU is checked before CPU on the assumption that157 it will be faster. By examining ~/sasview.log you can see which device SasView158 chose to run the model.159 160 **If you don't want to use OpenCL, you can set** *SAS_OPENCL=None*161 **in your environment settings, and it will only use normal programs.**162 163 If you want to use one of the other devices, you can run the following164 from the python console in SasView::165 166 import pyopencl as cl167 cl.create_some_context()168 169 This will provide a menu of different OpenCL drivers available.170 When one is selected, it will say "set PYOPENCL_CTX=..."171 Use that value as the value of *SAS_OPENCL*.172 173 Compiler Selection174 ==================175 For models run as normal programs, you may need to specify a compiler.176 This is done using the SAS_COMPILER environment variable.177 Set it to *tinycc* for the tinycc compiler, *msvc* for the178 Microsoft Visual C compiler, or *mingw* for the MinGW compiler.179 TinyCC is provided with SasView so that is the default.180 If you want one of the other compilers, be sure to have it available181 in your *PATH* so SasView can find it!182 183 184 *Document History*185 186 | 2017-05-17 Paul Kienzle -
doc/guide/magnetism/magnetism.rst
r990d8df r59485a4 87 87 The values of the 'Up_frac_i' and 'Up_frac_f' must be in the range 0 to 1. 88 88 89 .. note:: 90 This help document was last changed by Steve King, 02May2015 89 *Document History* 91 90 92 * Document History * 93 91 | 2015-05-02 Steve King 94 92 | 2017-05-08 Paul Kienzle -
doc/guide/plugin.rst
r30b60d2 r3048ec6 78 78 at the start of the model documentation and as a tooltip in the SasView GUI 79 79 80 - a **short d iscription**:80 - a **short description**: 81 81 - this is the **description** string in the *.py* file 82 82 - this is a medium length description which appears when you click … … 233 233 234 234 **name = "mymodel"** defines the name of the model that is shown to the user. 235 If it is not provided, it will use the name of the model file, with '_' 236 replaced by spaces and the parts capitalized. So *adsorbed_layer.py* will 237 become *Adsorbed Layer*. The predefined models all use the name of the 238 model file as the name of the model, so the default may be changed. 235 If it is not provided it will use the name of the model file. The name must 236 be a valid variable name, starting with a letter and contains only letters, 237 numbers or underscore. Spaces, dashes, and other symbols are not permitted. 239 238 240 239 **title = "short description"** is short description of the model which … … 298 297 - **"name"** is the name of the parameter shown on the FitPage. 299 298 299 - the name must be a valid variable name, starting with a letter and 300 containing only letters, numbers and underscore. 301 300 302 - parameter names should follow the mathematical convention; e.g., 301 303 *radius_core* not *core_radius*, or *sld_solvent* not *solvent_sld*. … … 366 368 dispersion. 367 369 370 Some models will have integer parameters, such as number of pearls in the 371 pearl necklace model, or number of shells in the multi-layer vesicle model. 372 The optimizers in BUMPS treat all parameters as floating point numbers which 373 can take arbitrary values, even for integer parameters, so your model should 374 round the incoming parameter value to the nearest integer inside your model 375 you should round to the nearest integer. In C code, you can do this using:: 376 377 static double 378 Iq(double q, ..., double fp_n, ...) 379 { 380 int n = (int)(fp_n + 0.5); 381 ... 382 } 383 384 in python:: 385 386 def Iq(q, ..., n, ...): 387 n = int(n+0.5) 388 ... 389 390 Derivative based optimizers such as Levenberg-Marquardt will not work 391 for integer parameters since the partial derivative is always zero, but 392 the remaining optimizers (DREAM, differential evolution, Nelder-Mead simplex) 393 will still function. 368 394 369 395 Model Computation … … 391 417 \approx \frac{\sum_{i=1}^n G(x_i) I(q,x_i)}{\sum_{i=1}^n G(x_i) V(x_i)} 392 418 393 That is, the indiv dual models do not need to include polydispersity419 That is, the individual models do not need to include polydispersity 394 420 calculations, but instead rely on numerical integration to compute the 395 421 appropriately smeared pattern. Angular dispersion values over polar angle … … 411 437 The parameters *par1, par2, ...* are the list of non-orientation parameters 412 438 to the model in the order that they appear in the parameter table. 413 **Note that the auto generated model file uses** *x* **rather than** *q*.439 **Note that the auto-generated model file uses** *x* **rather than** *q*. 414 440 415 441 The *.py* file should import trigonometric and exponential functions from … … 935 961 across multiple parameters can be very slow). 936 962 937 If your model has 2D orientation alcalculation, then you should also963 If your model has 2D orientation calculation, then you should also 938 964 test with:: 939 965 -
sasmodels/conversion_table.py
rd3e3f756 r505d0ad 11 11 account for that. 12 12 13 Usage: 14 <old_Sasview_version> : { 15 <new_model_name> : [ 16 <old_model_name> , 17 { 18 <new_param_name_1> : <old_param_name_1>, 19 ... 20 <new_param_name_n> : <old_param_name_n> 21 } 22 ] 23 } 13 Usage:: 14 15 <old_Sasview_version> : { 16 <new_model_name> : [ 17 <old_model_name> , 18 { 19 <new_param_name_1> : <old_param_name_1>, 20 ... 21 <new_param_name_n> : <old_param_name_n> 22 } 23 ] 24 } 24 25 25 26 Any future parameter and model name changes can and should be given in this -
sasmodels/custom/__init__.py
r1a6cd57 r0f48f1e 31 31 if fullname in sys.modules: 32 32 del sys.modules[fullname] 33 if path.endswith(".py") and os.path.exists(path) and os.path.exists(path+"c"): 34 # remove automatic pyc file before loading a py file 35 os.unlink(path+"c") 33 36 module = imp.load_source(fullname, os.path.expanduser(path)) 34 #os.unlink(path+"c") # remove the automatic pyc file35 37 return module 36 38 -
sasmodels/kernelpy.py
r883ecf4 r3b32f8d 34 34 self.info = model_info 35 35 self.dtype = np.dtype('d') 36 logging.info("load python model " + self.info.name) 36 37 37 38 def make_kernel(self, q_vectors): 38 logging.info("creating python kernel " + self.info.name)39 39 q_input = PyInput(q_vectors, dtype=F64) 40 40 kernel = self.info.Iqxy if q_input.is_2d else self.info.Iq -
sasmodels/sasview_model.py
r9644b5a r9f8ade1 16 16 import logging 17 17 from os.path import basename, splitext, abspath, getmtime 18 import thread 18 try: 19 import _thread as thread 20 except ImportError: 21 import thread 19 22 20 23 import numpy as np # type: ignore
Note: See TracChangeset
for help on using the changeset viewer.