Title: Add platform-dependent Conda YAML and environments/module dependencies · Issue #47 · PPPLDeepLearning/plasma-python · GitHub
Open Graph Title: Add platform-dependent Conda YAML and environments/module dependencies · Issue #47 · PPPLDeepLearning/plasma-python
X Title: Add platform-dependent Conda YAML and environments/module dependencies · Issue #47 · PPPLDeepLearning/plasma-python
Description: The current requirements-travis.txt in the root directory of the repository should be converted to a YAML format that complies with the Conda environment format. Especially note the version range formatting: https://docs.conda.io/project...
Open Graph Description: The current requirements-travis.txt in the root directory of the repository should be converted to a YAML format that complies with the Conda environment format. Especially note the version range f...
X Description: The current requirements-travis.txt in the root directory of the repository should be converted to a YAML format that complies with the Conda environment format. Especially note the version range f...
Opengraph URL: https://github.com/PPPLDeepLearning/plasma-python/issues/47
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Add platform-dependent Conda YAML and environments/module dependencies","articleBody":"The current `requirements-travis.txt` in the root directory of the repository should be converted to a YAML format that complies with the [Conda environment format](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-file-manually). Especially note the version range formatting: https://docs.conda.io/projects/conda-build/en/latest/resources/package-spec.html#package-match-specifications\r\n\r\n`requirements.yaml` should contain the Conda dependencies for a generic (GPU?) platform.\r\n\r\nWe will probably want to have custom Conda environments files for each of the following computers, mostly to handle the non-default Conda channels that may be necessary (e.g. IBM Watson AI for the 2x Power9 architectures with V100s). But we also want to set strict channel priority, be more specific about compatible dependency version ranges, etc. \r\n\r\n- Princeton Research Computing\r\n - Tiger 2/TigerGPU P100s\r\n - Traverse V100s\r\n- ALCF\r\n - Theta KNLs\r\n - Cooley K80s\r\n- OLCF\r\n - Summit V100s\r\n\r\nAlso, I am in favor of storing files such as `traverse-env.cmd` containing the following lines, e.g.:\r\n```\r\n#!/usr/bin/env bash\r\n\r\nmodule load anaconda3\r\nconda activate frnn # must activate conda env before module loads\r\nexport OMPI_MCA_btl=\"tcp,self,vader\"\r\n\r\nmodule load cudatoolkit\r\nmodule load cudnn/cuda-10.1/7.6.1 \r\nmodule load openmpi/gcc/3.1.4/64\r\nmodule load hdf5/gcc/openmpi-3.1.4/1.10.5\r\n```\r\n\r\nThis will make it easier for the user to build FRNN on each platform after creating the Conda environment, e.g. from the new directory named `envs/` or `environments/`:\r\n```\r\nconda env create --file envs/requirements-traverse.yaml\r\n# alternative: \"conda create --name frnn --file traverse.yaml\"\r\nsource traverse-env.cmd\r\npython setup.py install\r\n```\r\nSee [Sample Installation on TigerGPU](https://github.com/PPPLDeepLearning/plasma-python/blob/master/docs/PrincetonUTutorial.md#sample-installation-on-tigergpu), for example.\r\n\r\nAlso, `examples/slurm.cmd` can source the exact same modules in the `.cmd` file for consistency.\r\n\r\nHowever, this will require frequent updates to the `*.cmd` files as system admins upgrade the modules and libraries on the various platforms. \r\n\r\n- [ ] Should the `.yaml` and `.cmd` pairs of files per platform be all stored in a top-level subdirectory, e.g. `environments/`, `env/`, or `envs/`? How do other projects handle this problem and organize such files? Or do they typically only define a single Conda YAML?\r\n- [ ] Have `examples/slurm.cmd` check the hostname in order to automatically `source` the correct `.cmd`?\r\n- [ ] Should the `.cmd` environment files assume that the Conda environment is named `frnn`? Or force the user to define an environment variable `FRNN_CONDA_ENV`?\r\n- [ ] Update [PrincetonUTutorial.md](https://github.com/PPPLDeepLearning/plasma-python/blob/master/docs/PrincetonUTutorial.md) after these changes are made \r\n- [x] Remove all version info from list of dependencies in `setup.py`. \r\n- [ ] Add optional feature dependencies to `setup.py`\r\n\r\n**Current limitations of Conda YAML format**: \r\n\r\n- [ ] Cannot set Conda (strict) channel priority setting within these files. See 336135be2c4d495106726f3f645874cbd186ae24.\r\nFollow conda/conda#8675 for updates regarding this requested feature extension. Until then, it is recommended that each user modifies their `.condarc` local configuration with\r\n`conda config --set channel_priority strict`\r\n\r\n- [ ] Should not install `mpi4py` via pip within the Conda YAML file, since we need to source the modules to get the system MPI libraries before `pip install mpi4py`. There is currently no way to execute arbitrary shell commands, modify environment variables, etc. between the `conda install pkg` and `pip install pkg` stages of the environment creation process from a YAML file, as far as I am aware.\r\nSee similar requests in https://github.com/conda/conda/issues?q=is%3Aopen+is%3Aissue+label%3Atag-environment_spec.\r\nSee https://github.com/PPPLDeepLearning/plasma-python/pull/46/commits/f68f2f0c342656939b170311ca2984c73deceafa.","author":{"url":"https://github.com/felker","@type":"Person","name":"felker"},"datePublished":"2019-12-05T22:45:30.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/47/plasma-python/issues/47"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:38d7b242-2dfa-c7ed-bb83-0d6078c90c5c |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | AE7A:2FA6C4:E412F:1281E7:698E68FA |
| html-safe-nonce | 430d4e7bdd529ea01820a723861bd19a352422395db9184f0458f3667ab77871 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBRTdBOjJGQTZDNDpFNDEyRjoxMjgxRTc6Njk4RTY4RkEiLCJ2aXNpdG9yX2lkIjoiMjExOTg2MzYxMjczODUyOTUzMCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 39a93fb60624ae6d8f9f712a636d8ca13c2ce1f26006c959f9f49ce0a85b6c17 |
| hovercard-subject-tag | issue:533641971 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PPPLDeepLearning/plasma-python/47/issue_layout |
| twitter:image | https://opengraph.githubassets.com/2d504b8b3b95611d82ed8df61f6ddd3017390b6c9abfe961a2dadc16903061d4/PPPLDeepLearning/plasma-python/issues/47 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/2d504b8b3b95611d82ed8df61f6ddd3017390b6c9abfe961a2dadc16903061d4/PPPLDeepLearning/plasma-python/issues/47 |
| og:image:alt | The current requirements-travis.txt in the root directory of the repository should be converted to a YAML format that complies with the Conda environment format. Especially note the version range f... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | felker |
| hostname | github.com |
| expected-hostname | github.com |
| None | 666e30cc1de8ebdf458084bf731e95deba4f074a5008f91b50803aa9a71e3725 |
| turbo-cache-control | no-preview |
| go-import | github.com/PPPLDeepLearning/plasma-python git https://github.com/PPPLDeepLearning/plasma-python.git |
| octolytics-dimension-user_id | 23219101 |
| octolytics-dimension-user_login | PPPLDeepLearning |
| octolytics-dimension-repository_id | 72968591 |
| octolytics-dimension-repository_nwo | PPPLDeepLearning/plasma-python |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 72968591 |
| octolytics-dimension-repository_network_root_nwo | PPPLDeepLearning/plasma-python |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | c5daa44975c44e187dd9ea0d761c37973489d508 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width