[990d8df] | 1 | ******************** |
---|
| 2 | sasmodels Setup |
---|
| 3 | ******************** |
---|
| 4 | |
---|
| 5 | |
---|
| 6 | sasmodels Installation |
---|
| 7 | ********************** |
---|
| 8 | Sasmodels can be installed using a simple pip installation:: |
---|
| 9 | |
---|
| 10 | # Won't work yet! For now follow the developer instructions below. |
---|
| 11 | $ pip install sasmodels |
---|
| 12 | |
---|
| 13 | There are a number of dependent python packages which need to be installed |
---|
| 14 | separately:: |
---|
| 15 | |
---|
| 16 | numpy |
---|
| 17 | scipy |
---|
| 18 | opencl (for speed if your system has OpenCL drivers) |
---|
| 19 | tinycc (windows only, if no C compiler and no OpenCL) |
---|
| 20 | |
---|
| 21 | When using sasmodels to fit data:: |
---|
| 22 | |
---|
| 23 | sasview (for loading data) |
---|
| 24 | bumps (for fitting) |
---|
| 25 | matplotlib (for displaying results) |
---|
| 26 | |
---|
| 27 | For development and testing it is handy to have some additional packages:: |
---|
| 28 | |
---|
| 29 | nose (for testing) |
---|
| 30 | xmlrunner (for testing) |
---|
| 31 | matplotlib (for showing models) |
---|
| 32 | docutils (for showing model docs) |
---|
| 33 | sphinx (for building docs) |
---|
| 34 | wx ([optional] for adjusting parameters interactively) |
---|
| 35 | |
---|
| 36 | **Developer Installation** |
---|
| 37 | |
---|
| 38 | Developers will need to clone the sasmodels reposistory from github:: |
---|
| 39 | |
---|
| 40 | $ git clone https://github.com/sasview/sasmodels.git |
---|
| 41 | |
---|
| 42 | or if you have a github account:: |
---|
| 43 | |
---|
| 44 | $ git clone git@github.com:sasview/sasmodels.git |
---|
| 45 | |
---|
| 46 | Sasmodels can be run in-place by including the sasmodels directory on the |
---|
| 47 | python path. There are numerous ways to do this which will not be outlined |
---|
| 48 | here. It will be easiest to install the package in "develop" mode using:: |
---|
| 49 | |
---|
| 50 | $ cd sasmodels |
---|
| 51 | $ python setup.py develop |
---|
| 52 | |
---|
| 53 | This will allow you to edit the files in the package and have the changes |
---|
| 54 | show up immediately in python the next time you load your program. |
---|
| 55 | |
---|
| 56 | OpenCL Installation |
---|
| 57 | ******************* |
---|
| 58 | *Warning! GPU devices do not in general offer the same level of memory |
---|
| 59 | protection as CPU devices. If your code attempts to write outside allocated |
---|
| 60 | memory buffers unpredicatable behaviour may result (eg, your video display |
---|
| 61 | may freeze, or your system may crash, etc). Do not install OpenCL drivers |
---|
[f8a2baa] | 62 | without first checking for known issues (eg, some computer manufacturers |
---|
[990d8df] | 63 | install modified graphics drivers so replacing these may not be a good |
---|
| 64 | idea!). If in doubt, seek advice from an IT professional before proceeding |
---|
| 65 | further.* |
---|
| 66 | |
---|
| 67 | Check if you have OpenCL already installed |
---|
| 68 | ========================================== |
---|
| 69 | |
---|
| 70 | **Windows** |
---|
| 71 | |
---|
| 72 | The following instructions are based on |
---|
| 73 | http://web.engr.oregonstate.edu/~mjb/cs475/DoIHaveOpenCL.pdf |
---|
| 74 | |
---|
| 75 | * Go to: Start -> Control Panel -> System & Security -> Administrative Tools |
---|
| 76 | * Double Click on Computer Managment |
---|
| 77 | * Click on Device Manager |
---|
| 78 | * Click open Display Adapters |
---|
| 79 | * Right-click on available adapter and select Properties |
---|
| 80 | * Click on Driver |
---|
| 81 | * Go to Driver Details |
---|
| 82 | * 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 with |
---|
| 87 | the system. |
---|
| 88 | |
---|
| 89 | However, OpenCL has had a rocky history on Macs. Apple provide a useful |
---|
| 90 | compatibility table at https://support.apple.com/en-us/HT202823 |
---|
| 91 | |
---|
| 92 | |
---|
| 93 | Installation |
---|
| 94 | ============ |
---|
| 95 | |
---|
| 96 | **Windows** |
---|
| 97 | |
---|
| 98 | Depending on the graphic card in your system, drivers |
---|
| 99 | can be obtained from different sources: |
---|
| 100 | |
---|
| 101 | * NVIDIA: https://developer.nvidia.com/opencl |
---|
| 102 | * AMD: http://developer.amd.com/tools-and-sdks/opencl-zone/ |
---|
| 103 | |
---|
| 104 | |
---|
| 105 | **Mac OSX** |
---|
| 106 | |
---|
| 107 | N/A |
---|
| 108 | |
---|
| 109 | You cannot download OpenCL driver updates for your Mac. They are packaged |
---|
| 110 | with the normal quarterly OS X updates from Apple. |
---|
| 111 | |
---|
| 112 | |
---|
| 113 | .. note:: |
---|
| 114 | Intel provides OpenCL drivers for Intel processors at |
---|
| 115 | https://software.intel.com/en-us/articles/opencl-drivers |
---|
| 116 | These can sometimes make use of special vector instructions across multiple |
---|
| 117 | processors, so it is worth installing if the GPU does not support double |
---|
| 118 | precision. You can install this driver alongside the GPU driver for NVIDIA |
---|
| 119 | or AMD. |
---|
| 120 | |
---|
| 121 | |
---|
| 122 | GPU Selection |
---|
| 123 | ************* |
---|
| 124 | |
---|
| 125 | sasmodels evaluations can run on your graphics card (GPU) or they can run |
---|
| 126 | 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 this |
---|
| 130 | :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 OpenCL |
---|
| 135 | on the CPU. If the OpenCL driver is not available for the CPU then |
---|
| 136 | 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 it |
---|
| 141 | 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 and |
---|
| 143 | the model will only run as a normal program on the CPU. |
---|
| 144 | This will not usually be necessary. |
---|
| 145 | |
---|
| 146 | Device Selection |
---|
| 147 | ================ |
---|
| 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 device |
---|
| 150 | from available OpenCL platforms. |
---|
| 151 | |
---|
| 152 | SasView prefers AMD or NVIDIA drivers for GPU, and prefers Intel or |
---|
| 153 | Apple drivers for CPU. Both GPU and CPU are included on the assumption that CPU |
---|
| 154 | is always available and supports double precision. |
---|
| 155 | |
---|
| 156 | The device order is important: GPU is checked before CPU on the assumption that |
---|
| 157 | it will be faster. By examining ~/sasview.log you can see which device SasView |
---|
| 158 | 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 following |
---|
| 164 | from the python console in SasView:: |
---|
| 165 | |
---|
| 166 | import pyopencl as cl |
---|
| 167 | 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 Selection |
---|
| 174 | ================== |
---|
| 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 the |
---|
| 178 | 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 available |
---|
| 181 | in your *PATH* so SasView can find it! |
---|
| 182 | |
---|
| 183 | |
---|
| 184 | *Document History* |
---|
| 185 | |
---|
| 186 | | 2017-05-17 Paul Kienzle |
---|