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

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

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


peastman's avatar
peastman committed
17
jobs:
18
19
  include:
    - sudo: required
20
      dist: xenial
peastman's avatar
peastman committed
21
22
      name: "CPU OpenCL"
      env: OPENCL=true
23
           CUDA=false
Robert McGibbon's avatar
Robert McGibbon committed
24
25
           CC=$CCACHE/gcc
           CXX=$CCACHE/g++
26
27
28
29
30
31
32
33
34
35
36
           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
37
38
39
           -DOPENMM_BUILD_EXAMPLES=OFF
           -DOPENCL_INCLUDE_DIR=$HOME/AMDAPPSDK/include
           -DOPENCL_LIBRARY=$HOME/AMDAPPSDK/lib/x86_64/libOpenCL.so"
40
41
      addons: {apt: {packages: []}}

42
    - sudo: required
43
      dist: xenial
peastman's avatar
peastman committed
44
45
      name: "CUDA Compile"
      env: CUDA=true
46
           OPENCL=false
47
           CUDA_VERSION="7.5-18"
Robert McGibbon's avatar
Robert McGibbon committed
48
49
           CC=$CCACHE/gcc
           CXX=$CCACHE/g++
50
51
52
53
54
55
56
57
           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
58
59
60
61
62
63
             -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/"
64
65
66
67
      addons: {apt: {packages: []}}

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

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

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

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

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

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

125
before_install:
Robert T. McGibbon's avatar
Robert T. McGibbon committed
126
  - START_TIME=$(date +%s)
127
  - 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
128
  - mkdir -p $HOME/ccache && tar xf ccache-3.2.4-0.tar.bz2 -C $HOME/ccache
129
  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
peastman's avatar
peastman committed
130
      brew cask uninstall oclint;
131
132
      brew install fftw;
      brew install -y https://raw.githubusercontent.com/Homebrew/homebrew-core/5b680fb58fedfb00cd07a7f69f5a621bb9240f3b/Formula/doxygen.rb;
133
      sudo pip install -U pytest --ignore-installed six;
134
    fi
135
136
  # The cmake version installed by apt on ARM and PPC is very old,
  # so build a more recent version from source.
137
  - if [[ "${TRAVIS_CPU_ARCH}" == "ppc64le" || "${TRAVIS_CPU_ARCH}" == "arm64" ]]; then
peastman's avatar
peastman committed
138
      sudo apt remove cmake
139
      wget https://github.com/Kitware/CMake/releases/download/v3.17.1/cmake-3.17.1.tar.gz;
peastman's avatar
peastman committed
140
141
142
      tar xf cmake-3.17.1.tar.gz;
      cd cmake-3.17.1;
      ./bootstrap;
143
      make -j 4;
peastman's avatar
peastman committed
144
      export PATH=${HOME}/OpenMM/bin:${PATH};
peastman's avatar
peastman committed
145
      which cmake;
146
    fi
peastman's avatar
peastman committed
147
148
149
150
151
  #- if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
  #    CMAKE_URL="http://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.tar.gz";
  #    mkdir $HOME/cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C $HOME/cmake;
  #    export PATH=${HOME}/cmake/bin:${PATH};
  #  fi
152
  - if [[ "$OPENCL" == "true" ]]; then
jchodera's avatar
jchodera committed
153
      wget http://s3.amazonaws.com/omnia-ci/AMD-APP-SDKInstaller-v3.0.130.135-GA-linux64.tar.bz2;
154
155
156
157
158
159
160
161
162
      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
163
      sudo apt-get install -y libgl1-mesa-dev;
164
    fi
peastman's avatar
peastman committed
165
166
167
  # Install SWIG and Cython for Python wrappers. However, testing CUDA and
  # OpenCL, we skip the Python wrapper for speed. We're not using anaconda
  # python, but this is a fast way to get an apparently functional precompiled
168
169
  # build of swig that's more modern than what's in apt.
  - if [[ "$OPENCL" == "false" && "$CUDA" == "false" && "$TRAVIS_OS_NAME" == "linux" ]]; then
170
      wget http://anaconda.org/omnia/swig/3.0.7/download/linux-64/swig-3.0.7-0.tar.bz2;
171
      mkdir $HOME/swig;
Robert McGibbon's avatar
Robert McGibbon committed
172
      tar -xjvf swig-3.0.7-0.tar.bz2 -C $HOME/swig;
173
      export PATH=$HOME/swig/bin:$PATH;
Robert McGibbon's avatar
Robert McGibbon committed
174
      export SWIG_LIB=$HOME/swig/share/swig/3.0.7;
peastman's avatar
peastman committed
175
      pip install cython;
176
    fi
177
  - if [[ "$OPENCL" == "false" && "$CUDA" == "false" && "$TRAVIS_OS_NAME" == "osx" ]]; then
178
      wget http://anaconda.org/omnia/swig/3.0.7/download/osx-64/swig-3.0.7-0.tar.bz2;
179
180
181
182
      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;
183
      sudo pip install cython;
184
    fi
185

186
  - if [[ "$CUDA" == "true" ]]; then
187
      wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_${CUDA_VERSION}_amd64.deb";
jchodera's avatar
jchodera committed
188
      sudo dpkg -i cuda-repo-ubuntu1404_${CUDA_VERSION}_amd64.deb;
189
190
191
192
193
194
195
196
      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
197
      sudo apt-get install -y libgl1-mesa-dev;
198
199
    fi

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

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

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

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

cache:
  directories:
    - $HOME/.ccache