omnia-md / omnia-linux-anvil

Experimental version of conda-forge/linux-anvil to build openmm
0 stars 3 forks source link

Create image with CUDA drivers 7.5 to 10.0 #12

Closed Lnaden closed 5 years ago

Lnaden commented 5 years ago

This PR extends the base Conda-Forge + TeXLive image to add all the CUDA drivers from 7.5 to 10.0 using the older method of copying a minimal set of sub RPMs from the driver, rather than installing the whole driver itself.

Overall, the final image size is 4.34 GB locally. Compare this to the current texlive18-cuda100 tag of 4.6GB.

There are some things which I would like opinions on before merging:

  1. [ ] Does the branch name make sense given that this is CUDA 7.5 to 10.0?
  2. [ ] Is this the correct minimal set of things each toolkit needs for OpenMM to detect? (cc @peastman) I have done my best to recreate the RPM installs from older versions of this Dockerfile, but I don't know if that was correct or even needed.
    • Note: Doing it this was MASSIVELY reduces the total image size as compared to just "installing the whole driver"
  3. [ ] I have left the actual driver installation off of these installs as installing 1 will result in all future CUDA installs failing. Is this okay?
  4. [ ] The minimal install set I have does not install CU BLAS in lib64, but if we ever install a patch, it adds it, this leads to two questions
    • [ ] Is CU BLAS required for OpenMM to build against in the versions we don't have patches for
    • [ ] Is the filesize increase from having CU BLAS acceptable (about 120MB per version which is patched, so ~240 in total)?
  5. [ ] It might be possible to build this using a Docker Multi-Stage Build to simply the build a bit, is it worth doing that?
Lnaden commented 5 years ago

I'll fix the conflicts at a later time, but the Docker file should be ready for review now.

peastman commented 5 years ago

I'm not certain exactly which files will get installed by what you have here. You'll need to test building OpenMM and see whether it works. The libraries we currently require for building are libcufft, libnvrtc, and libOpenCL. We do not currently use libcublas, libcusparse, or libcusolver, but it's possible we might use them in the future. In particular, once the next release is out I want to try using libcusolver to speed up a particular feature.

Lnaden commented 5 years ago

Great! That helps a fair amount. I can double check which libs are installed in my local image first to make sure everything is there. Since we need OpenCL from Nvidia now, it may change what we needed from the previous times we installed this way. I will double check.