.travis.yml 8.74 KB
Newer Older
1
2
language: python

3
4
5
6
7
8
addons:
  apt:
    packages:
      - doxygen
      - python-numpy
      - python-scipy
9
      - libfftw3-dev
10

Robert McGibbon's avatar
Robert McGibbon committed
11
12
13
14
15
env:
  global:
    - CCACHE=$HOME/ccache/lib/ccache/bin


peastman's avatar
peastman committed
16
jobs:
17
18
  include:
    - sudo: required
19
      dist: xenial
peastman's avatar
peastman committed
20
21
      name: "CPU OpenCL"
      env: OPENCL=true
22
           CUDA=false
Robert McGibbon's avatar
Robert McGibbon committed
23
24
           CC=$CCACHE/gcc
           CXX=$CCACHE/g++
25
26
27
28
29
30
31
32
33
34
35
           CMAKE_FLAGS="
           -OPENMM_BUILD_OPENCL_LIB=ON
           -DOPENMM_BUILD_OPENCL_TESTS=ON
           -DOPENMM_BUILD_STATIC_LIB=OFF
           -DOPENMM_BUILD_CPU_LIB=OFF
           -DOPENMM_BUILD_REFERENCE_TESTS=OFF
           -DOPENMM_BUILD_SERIALIZATION_TESTS=OFF
           -DOPENMM_BUILD_PME_PLUGIN=OFF
           -DOPENMM_BUILD_AMOEBA_PLUGIN=OFF
           -DOPENMM_BUILD_PYTHON_WRAPPERS=OFF
           -DOPENMM_BUILD_C_AND_FORTRAN_WRAPPERS=OFF
36
37
38
           -DOPENMM_BUILD_EXAMPLES=OFF
           -DOPENCL_INCLUDE_DIR=$HOME/AMDAPPSDK/include
           -DOPENCL_LIBRARY=$HOME/AMDAPPSDK/lib/x86_64/libOpenCL.so"
39
40
      addons: {apt: {packages: []}}

41
    - sudo: required
42
      dist: xenial
peastman's avatar
peastman committed
43
44
      name: "CUDA Compile"
      env: CUDA=true
45
           OPENCL=false
46
           CUDA_VERSION="7.5-18"
Robert McGibbon's avatar
Robert McGibbon committed
47
48
           CC=$CCACHE/gcc
           CXX=$CCACHE/g++
49
50
51
52
53
54
55
56
           CMAKE_FLAGS="
             -DOPENMM_BUILD_CUDA_TESTS=OFF
             -DOPENMM_BUILD_OPENCL_TESTS=OFF
             -DOPENMM_BUILD_PYTHON_WRAPPERS=OFF
             -DOPENMM_BUILD_REFERENCE_TESTS=OFF
             -DOPENMM_BUILD_SERIALIZATION_TESTS=OFF
             -DOPENMM_BUILD_C_AND_FORTRAN_WRAPPERS=OFF
             -DOPENMM_BUILD_EXAMPLES=OFF
jchodera's avatar
jchodera committed
57
58
59
60
61
62
             -DOPENCL_LIBRARY=/usr/local/cuda-7.5/lib64/libOpenCL.so
             -DCUDA_CUDART_LIBRARY=/usr/local/cuda-7.5/lib64/libcudart.so
             -DCUDA_NVCC_EXECUTABLE=/usr/local/cuda-7.5/bin/nvcc
             -DCUDA_SDK_ROOT_DIR=/usr/local/cuda-7.5/
             -DCUDA_TOOLKIT_INCLUDE=/usr/local/cuda-7.5/include
             -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-7.5/"
63
64
65
66
      addons: {apt: {packages: []}}

    - language: objective-c
      os: osx
67
      osx_image: xcode9.3
peastman's avatar
peastman committed
68
69
      name: "Mac OS"
      env: OPENCL=false
70
71
           CUDA=false
           CMAKE_FLAGS="
72
             -DOPENMM_BUILD_OPENCL_TESTS=OFF"
73
74
      addons: {apt: {packages: []}}

75
    - sudo: false
76
      dist: xenial
peastman's avatar
peastman committed
77
78
79
      python: "3.6"
      name: "Static Lib"
      env: OPENCL=false
80
           CUDA=false
Robert McGibbon's avatar
Robert McGibbon committed
81
82
           CC=$CCACHE/clang
           CXX=$CCACHE/clang++
83
84
           CMAKE_FLAGS="-DOPENMM_BUILD_STATIC_LIB=ON"

85
    - sudo: false
86
      dist: xenial
peastman's avatar
peastman committed
87
88
89
      python: "3.6"
      name: "Python 3.6"
      env: OPENCL=false
90
           CUDA=false
Robert McGibbon's avatar
Robert McGibbon committed
91
92
           CC=$CCACHE/clang
           CXX=$CCACHE/clang++
93
           DOCS_DEPLOY=true
Robert T. McGibbon's avatar
Robert T. McGibbon committed
94
           CMAKE_FLAGS="-DOPENMM_GENERATE_API_DOCS=ON"
95

96
    - sudo: false
97
      dist: xenial
peastman's avatar
peastman committed
98
99
100
      python: "3.8"
      name: "Python 3.8"
      env: OPENCL=false
peastman's avatar
peastman committed
101
102
103
104
105
           CUDA=false
           CC=$CCACHE/gcc
           CXX=$CCACHE/g++
           CMAKE_FLAGS=""

peastman's avatar
peastman committed
106
    - sudo: required
peastman's avatar
peastman committed
107
      dist: bionic
peastman's avatar
peastman committed
108
109
110
111
112
113
114
      python: "3.8"
      name: "PPC"
      arch: ppc64le
      env: OPENCL=false
           CUDA=false
           CMAKE_FLAGS=""

peastman's avatar
peastman committed
115
    - sudo: required
peastman's avatar
peastman committed
116
      dist: bionic
peastman's avatar
peastman committed
117
118
119
120
      python: "3.8"
      name: "ARM"
      arch: arm64
      env: OPENCL=false
121
122
           CUDA=false
           CMAKE_FLAGS=""
Robert McGibbon's avatar
Robert McGibbon committed
123

124
before_install:
Robert T. McGibbon's avatar
Robert T. McGibbon committed
125
  - START_TIME=$(date +%s)
126
  - wget http://anaconda.org/omnia/ccache/3.2.4/download/${TRAVIS_OS_NAME}-64/ccache-3.2.4-0.tar.bz2
Robert McGibbon's avatar
Robert McGibbon committed
127
  - mkdir -p $HOME/ccache && tar xf ccache-3.2.4-0.tar.bz2 -C $HOME/ccache
128
  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
peastman's avatar
peastman committed
129
      brew cask uninstall oclint;
130
131
      brew install fftw;
      brew install -y https://raw.githubusercontent.com/Homebrew/homebrew-core/5b680fb58fedfb00cd07a7f69f5a621bb9240f3b/Formula/doxygen.rb;
132
      sudo pip install -U pytest --ignore-installed six;
133
    fi
134
  # The cmake version installed by apt on ARM and PPC is very old,
peastman's avatar
Cleanup  
peastman committed
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
  # so download a newer version.
  - if [[ "${TRAVIS_CPU_ARCH}" == "ppc64le" ]]; then
      sudo apt-get install libuv1 rhash libstdc++6;
      wget https://anaconda.org/conda-forge/cmake/3.17.0/download/linux-ppc64le/cmake-3.17.0-hfb1cb51_0.tar.bz2;
      mkdir $HOME/cmake;
      tar -xjvf cmake-3.17.0-hfb1cb51_0.tar.bz2 -C $HOME/cmake;
      export PATH=$HOME/cmake/bin:$PATH;
    fi
  - if [[ "${TRAVIS_CPU_ARCH}" == "arm64" ]]; then
      sudo apt-get install libuv1 rhash libstdc++6;
      wget https://anaconda.org/conda-forge/cmake/3.17.0/download/linux-aarch64/cmake-3.17.0-h28c56e5_0.tar.bz2;
      mkdir $HOME/cmake;
      tar -xjvf cmake-3.17.0-h28c56e5_0.tar.bz2 -C $HOME/cmake;
      export PATH=$HOME/cmake/bin:$PATH;
    fi
150
  - if [[ "$OPENCL" == "true" ]]; then
jchodera's avatar
jchodera committed
151
      wget http://s3.amazonaws.com/omnia-ci/AMD-APP-SDKInstaller-v3.0.130.135-GA-linux64.tar.bz2;
152
153
154
155
156
157
158
159
160
      tar -xjf AMD-APP-SDK*.tar.bz2;
      AMDAPPSDK=${HOME}/AMDAPPSDK;
      export OPENCL_VENDOR_PATH=${AMDAPPSDK}/etc/OpenCL/vendors;
      mkdir -p ${OPENCL_VENDOR_PATH};
      sh AMD-APP-SDK*.sh --tar -xf -C ${AMDAPPSDK};
      echo libamdocl64.so > ${OPENCL_VENDOR_PATH}/amdocl64.icd;
      export LD_LIBRARY_PATH=${AMDAPPSDK}/lib/x86_64:${LD_LIBRARY_PATH};
      chmod +x ${AMDAPPSDK}/bin/x86_64/clinfo;
      ${AMDAPPSDK}/bin/x86_64/clinfo;
peastman's avatar
peastman committed
161
      sudo apt-get install -y libgl1-mesa-dev;
162
    fi
peastman's avatar
Cleanup  
peastman committed
163
164
  # Install packages needed for Python: SWIG, Cython, and Gromacs (used by some tests).
  # We do this differently on different platforms.  Possibly some of this could be unified.
peastman's avatar
peastman committed
165
  - if [[ "$OPENCL" == "false" && "$CUDA" == "false" && "$TRAVIS_OS_NAME" == "linux" && "${TRAVIS_CPU_ARCH}" != "ppc64le" && "${TRAVIS_CPU_ARCH}" != "arm64" ]]; then
166
      wget http://anaconda.org/omnia/swig/3.0.7/download/linux-64/swig-3.0.7-0.tar.bz2;
167
      mkdir $HOME/swig;
Robert McGibbon's avatar
Robert McGibbon committed
168
      tar -xjvf swig-3.0.7-0.tar.bz2 -C $HOME/swig;
169
      export PATH=$HOME/swig/bin:$PATH;
Robert McGibbon's avatar
Robert McGibbon committed
170
      export SWIG_LIB=$HOME/swig/share/swig/3.0.7;
peastman's avatar
peastman committed
171
      pip install cython;
peastman's avatar
peastman committed
172
      sudo apt-get install gromacs;
173
    fi
peastman's avatar
peastman committed
174
  - if [[ "${TRAVIS_CPU_ARCH}" == "ppc64le" || "${TRAVIS_CPU_ARCH}" == "arm64" ]]; then
peastman's avatar
peastman committed
175
      sudo apt-get install swig;
peastman's avatar
peastman committed
176
177
      pip install cython;
    fi
178
  - if [[ "$OPENCL" == "false" && "$CUDA" == "false" && "$TRAVIS_OS_NAME" == "osx" ]]; then
179
      wget http://anaconda.org/omnia/swig/3.0.7/download/osx-64/swig-3.0.7-0.tar.bz2;
180
181
182
183
      mkdir $HOME/swig;
      tar -xjvf swig-3.0.7-0.tar.bz2 -C $HOME/swig;
      export PATH=$HOME/swig/bin:$PATH;
      export SWIG_LIB=$HOME/swig/share/swig/3.0.7;
184
      sudo pip install cython;
185
    fi
186

187
  - if [[ "$CUDA" == "true" ]]; then
188
      wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_${CUDA_VERSION}_amd64.deb";
jchodera's avatar
jchodera committed
189
      sudo dpkg -i cuda-repo-ubuntu1404_${CUDA_VERSION}_amd64.deb;
190
191
192
193
194
195
196
197
      sudo apt-get update -qq;
      export CUDA_APT=${CUDA_VERSION%-*};
      export CUDA_APT=${CUDA_APT/./-};
      sudo apt-get install -y cuda-drivers cuda-core-${CUDA_APT} cuda-cudart-dev-${CUDA_APT} cuda-cufft-dev-${CUDA_APT};
      sudo apt-get clean;
      export CUDA_HOME=/usr/local/cuda-${CUDA_VERSION%%-*};
      export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH};
      export PATH=${CUDA_HOME}/bin:${PATH};
peastman's avatar
peastman committed
198
      sudo apt-get install -y libgl1-mesa-dev;
199
200
    fi

201
script:
202
  - cmake . $CMAKE_FLAGS -DCMAKE_INSTALL_PREFIX=$HOME/OpenMM
203
  - make -j2 install
204
  - if [[ "$OPENCL" == "true" ]]; then ./TestOpenCLDeviceQuery; fi
205
206
207
208
209
210
  - if [[ "$OPENCL" == "false" && "$CUDA" == "false" ]]; then
      if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
          sudo make PythonInstall;
      else
          make PythonInstall;
      fi;
211
      python -m simtk.testInstallation;
212
      (cd python/tests && py.test -v);
213
214
    fi

Robert T. McGibbon's avatar
Robert T. McGibbon committed
215
216
217
  # Run the tests, and rerun any failing tests.
  - python devtools/run-ctest.py --start-time $START_TIME

218
  - if [[ ! -z "${DOCS_DEPLOY}" && "${DOCS_DEPLOY}" = "true" ]]; then
219
      pip install sphinx sphinxcontrib-bibtex sphinxcontrib-lunrsearch sphinxcontrib-autodoc_doxygen;
220
      make sphinxhtml;
John Chodera's avatar
John Chodera committed
221
      make sphinxpdf;
Robert T. McGibbon's avatar
Robert T. McGibbon committed
222
      make C++ApiDocs PythonApiDocs;
223
      mkdir -p api-docs;
224
225
      mv sphinx-docs/userguide/html api-docs/userguide;
      mv sphinx-docs/developerguide/html api-docs/developerguide;
226
227
228
229
230
231
232
      mv api-python api-docs;
      mv api-c++ api-docs;
    fi

deploy:
  - provider: s3
    access_key_id:
233
      secure: "OEY0sp5FlM4kixFNVAktN6YHwKm5ieMswWCHj3MU+rWsAeGCULl/0kyKTfwCPknVlQv+SXBaPP3I4m1fv9FwHt0bbwy5EfmO4crrW8cE4ofq4vnwHi9UG77oEKKRrbxFUZD1y7ywI2W9SyVI6qfggZlJowRy9GV9Lin5vGzhqsw="
234
    secret_access_key:
235
      secure: "P7DOYn77bH5Gg1obIwCxanhH0Kgh22Pv1pCGvmI6gHXOE1dxf5pnCSQGFKO6g1K6eaN5TbTjh+BmMXmxgkqByvQ4uZtkTGlPq3HI9YeRjZE2H7bRpIYjXXRwA1RMOA3ofLDw1FXNmwMo8BtRIl4jljR5Iw5rytUZmLlk3zgtcr4="
236
237
    bucket: "docs.openmm.org"
    skip_cleanup: true
Robert McGibbon's avatar
Robert McGibbon committed
238
    region: us-west-1
239
    local_dir: api-docs/
Robert T. McGibbon's avatar
Robert T. McGibbon committed
240
    upload_dir: development
241
242
243
    on:
      branch: master
      condition: '! -z "${DOCS_DEPLOY}" && "${DOCS_DEPLOY}" = "true"'
Robert McGibbon's avatar
Robert McGibbon committed
244
245
246
247

cache:
  directories:
    - $HOME/.ccache