From e3168cdf66e6a4aa99ef826c0a3b4d926c24ac1a Mon Sep 17 00:00:00 2001 From: ayush Date: Mon, 18 Apr 2022 20:37:27 -0400 Subject: [PATCH] freecad stable --- bc_vt_freecad/CHANGELOG.md | 10 ++++ bc_vt_freecad/DevGuide.md | 61 ++++++++++++++++++++++ bc_vt_freecad/Dockerfiles/Dockerfile | 9 ++++ bc_vt_freecad/LICENSE.txt | 24 +++++++++ bc_vt_freecad/Readme.md | 12 +++++ bc_vt_freecad/form.js | 6 +++ bc_vt_freecad/form.yml.erb | 73 +++++++++++++++++++++++++++ bc_vt_freecad/icon.png | Bin 0 -> 85820 bytes bc_vt_freecad/manifest.yml | 8 +++ bc_vt_freecad/submit.yml.erb | 26 ++++++++++ bc_vt_freecad/template/after.sh.erb | 13 +++++ bc_vt_freecad/template/before.sh.erb | 27 ++++++++++ bc_vt_freecad/template/script.sh.erb | 45 +++++++++++++++++ bc_vt_freecad/view.html.erb | 9 ++++ 14 files changed, 323 insertions(+) create mode 100644 bc_vt_freecad/CHANGELOG.md create mode 100644 bc_vt_freecad/DevGuide.md create mode 100644 bc_vt_freecad/Dockerfiles/Dockerfile create mode 100644 bc_vt_freecad/LICENSE.txt create mode 100644 bc_vt_freecad/Readme.md create mode 100644 bc_vt_freecad/form.js create mode 100644 bc_vt_freecad/form.yml.erb create mode 100644 bc_vt_freecad/icon.png create mode 100644 bc_vt_freecad/manifest.yml create mode 100644 bc_vt_freecad/submit.yml.erb create mode 100644 bc_vt_freecad/template/after.sh.erb create mode 100644 bc_vt_freecad/template/before.sh.erb create mode 100644 bc_vt_freecad/template/script.sh.erb create mode 100644 bc_vt_freecad/view.html.erb diff --git a/bc_vt_freecad/CHANGELOG.md b/bc_vt_freecad/CHANGELOG.md new file mode 100644 index 0000000..fe8d12b --- /dev/null +++ b/bc_vt_freecad/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## 1.0.0 - 2021-07-02 +### Added +- Initial release! + diff --git a/bc_vt_freecad/DevGuide.md b/bc_vt_freecad/DevGuide.md new file mode 100644 index 0000000..03ed2eb --- /dev/null +++ b/bc_vt_freecad/DevGuide.md @@ -0,0 +1,61 @@ + +# Batch Connect - Matlab app + +An example Batch Connect app that launches a Matlab application within a +batch job. + +## Prerequisites + +This Batch Connect app requires the following software be installed on the +**compute nodes** that the batch job is intended to run on (**NOT** the +OnDemand node): + +- [OpenSSL](https://www.openssl.org/) 1.0.1+ (used to hash the Jupyter Notebook + server password) +- [Lmod](https://www.tacc.utexas.edu/research-development/tacc-projects/lmod) + 6.0.1+ or any other `module purge` and `module load ` based CLI + used to load appropriate environments within the batch job before launching + the Jupyter Notebook server. +- [Singularity](https://sylabs.io/guides/3.0/user-guide/installation.html) Singularity is a container platform. It allows you to create and run containers that package up pieces of software in a way that is portable and reproducible. ... Your container is a single file, and you don't have to worry about how to install all the software you need on each different operating system and system. + +## Downloading and building docker image +``` sh + singularity pull freecad.sif docker://vtarc/bc_vt_freecad:latest +``` + +- Change the Sif file locations in [script.sh.erb](./template/script.sh.erb#L27) + + +### Development Installation + +```bash + cd /home//ondemand/dev + git clone git@github.com:AdvancedResearchComputing/OnDemandApps.git +``` + +### System Installation +```bash + cd /var/www/ood/apps/sys + git clone git@github.com:AdvancedResearchComputing/OnDemandApps.git +``` + +> Make sure to give executable permissions for *image file* + + +- Make necessary description changes to **[manifest.yml](./manifest.yml)** + +### Packages made available under this [DockerImage](https://hub.docker.com/repository/docker/vtarc/bc_vt_freecad) or [Dockerfile](./Dockerfiles/Dockerfile): + +``` sh + freecad +``` + +## Contributing + +1. Fork it +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create a new Pull Request + +--- diff --git a/bc_vt_freecad/Dockerfiles/Dockerfile b/bc_vt_freecad/Dockerfiles/Dockerfile new file mode 100644 index 0000000..cf88a91 --- /dev/null +++ b/bc_vt_freecad/Dockerfiles/Dockerfile @@ -0,0 +1,9 @@ +FROM accetto/ubuntu-vnc-xfce-firefox-g3:latest + + +RUN echo -e "headless\n" | sudo -S apt-get update \ + && echo -e "headless\n" | sudo -S apt install -y build-essential libpci-dev libwebkit2gtk-4.0-dev apt-utils freecad\ + && echo -e "headless\n" | sudo -S apt clean + +# RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections +RUN echo -e "headless\n" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends nvidia-nsight \ No newline at end of file diff --git a/bc_vt_freecad/LICENSE.txt b/bc_vt_freecad/LICENSE.txt new file mode 100644 index 0000000..c7aab47 --- /dev/null +++ b/bc_vt_freecad/LICENSE.txt @@ -0,0 +1,24 @@ +Copyright (c) 2021 Virginia Tech + +Copyright (c) 2016-2018 Ohio Supercomputer Center + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bc_vt_freecad/Readme.md b/bc_vt_freecad/Readme.md new file mode 100644 index 0000000..f3b0dab --- /dev/null +++ b/bc_vt_freecad/Readme.md @@ -0,0 +1,12 @@ +# OnDemand FreeCad + +[FreeCad ]: https://developer.nvidia.com/nsight-eclipse-edition + +A noVNC based [FreeCad] app for ondemand + +- FreeCad +- Loads Cuda toolkit latest 11.4 + +## Setup +- Dockerfile uses Accetto base image +- Pre loads cuda toolkit 10.1 on host node diff --git a/bc_vt_freecad/form.js b/bc_vt_freecad/form.js new file mode 100644 index 0000000..00a3a92 --- /dev/null +++ b/bc_vt_freecad/form.js @@ -0,0 +1,6 @@ +'use strict' + +$(document).ready(function() { + // Set the max value to be what was set in the last session + +}); \ No newline at end of file diff --git a/bc_vt_freecad/form.yml.erb b/bc_vt_freecad/form.yml.erb new file mode 100644 index 0000000..6bed3e5 --- /dev/null +++ b/bc_vt_freecad/form.yml.erb @@ -0,0 +1,73 @@ +# Batch Connect app configuration file +# +--- +cluster: + - 'tinkercliffs' + - 'infer' + +# Define attribute values that aren't meant to be modified by the user within +# the Dashboard form +attributes: + +# specify widgets for user modifiable job settings + bc_queue: + help: | + - To request a GPU enabled queue, preface it with v100_. Example: v100_normal_q, t4_normal_q + + bc_num_hours: + label: Number of hours (min-1, max-48) + required: true + value: 1 + min: 1 + max: 72 + step: 1 + + bc_num_slots: + label: Number of nodes (currently confined to 1) + required: true + value: 1 + min: 1 + max: 1 + step: 1 + + bc_account: + widget: text_field + label: Account + value: "" + help: | + - The allocation you would like to use for SLURM. + + num_cores: + widget: number_field + label: Number of cores per node (min-1, max-32) + value: 1 + min: 1 + max: 32 + step: 1 + + gpu_per_node: + widget: number_field + label: Number of GPUs per node (min-0, max-2) + value: 0 + min: 0 + max: 1 + step: 1 + help: | + - If requesting GPU nodes, you must enter a GPU-enabled Partition above or the job will fail. + + bc_vnc_resolution: + required: true + +form: + - cluster + - ide_version + - bc_account + - reservation + - bc_queue + - bc_num_hours + - bc_num_slots + - num_cores + - gpu_per_node + - bc_vnc_resolution + - bc_email_on_started + diff --git a/bc_vt_freecad/icon.png b/bc_vt_freecad/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4ebe775fa29511a691b9a23080e338903c012ff9 GIT binary patch literal 85820 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 z zVz6DAGytIq?H%j_s|8sC&pg1RWM9j_o!`OQtz2_XEReOGAA!VqwDaehQE}YJ@VX0lI0#vrAd{V{_2p-j z=;OSR@i7eZ+0DzDmf)?*EIGiBT;AL*q8d|a8B_le!USpvxyTCM{fMx{*=9rduQ$p3 z%)G~Dr@wk#TjR8yhxYl<;&MllG#gGtqIHMKZ%F^#VgXuJIMxKY8=(gt1$le6oQ1Gs`bcS+1Ea?zIKZCiM|Mi zXEasGj|V<2$d)cax1~VMJUq=dbML!yWLAx*S=(nw2PCd1D(xmJGam}lkR#qsU2h&V zeOO7^Thhv`$-dWLq;Z`K2%Lp9N|j_4ZPcZkOa^wj(rJ`Mim6Ux0?QNSe*c`QPonM* z&8I3LtG|JnFjB8a+={Zq$I>qvxq(Ez=g79-5I*!E;8m$zPNMfqmUjLlxpg4UPpRI$ zh@!daUWVZ%GLRz@c=*QldrK8l^PR^dsl&1Odg-eUyyL_E;J7ZTs<+F+#1i9oqCmvZ zH{8usUCeW)zo2Ol^X6TtZDW`C4XPUtv+)PvMLsh{+$=`T`+URp2ZuQ|+5QMlFQ`)H zE-G7vpo^=G$WxKb_{>#b^@fIPXCqE)Tc`D*JvMgok7=0j=22A^ht9Ex%Z88t@fhD# zm5Iq2q)np1(V{zOrPvhg%jw7-HCshHWF^vQhsPQ>Ga8D5*ldVkXm+e<^wi(X U`XDZX8SHA9C&71jPyZlmTOj1s8c+aCYiN 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 KRUu&#@_ztdVN;C& literal 0 HcmV?d00001 diff --git a/bc_vt_freecad/manifest.yml b/bc_vt_freecad/manifest.yml new file mode 100644 index 0000000..ceb53ae --- /dev/null +++ b/bc_vt_freecad/manifest.yml @@ -0,0 +1,8 @@ +--- +name: FreeCAD Stable +category: Interactive Apps +role: batch_connect +description: | + This app will launch [FreeCAD Stable] on [TinkerCliffs] and [Infer]. + [TinkerCliffs]: https://www.arc.vt.edu/TinkerCliffs + [Infer]: https://www.arc.vt.edu/infer diff --git a/bc_vt_freecad/submit.yml.erb b/bc_vt_freecad/submit.yml.erb new file mode 100644 index 0000000..0e74b0b --- /dev/null +++ b/bc_vt_freecad/submit.yml.erb @@ -0,0 +1,26 @@ +# Job submission configuration file +# +--- + +# +# Configure the content of the job script for the batch job here +# @see http://www.rubydoc.info/gems/ood_core/OodCore/BatchConnect/Template +# +batch_connect: + template: "basic" + set_host: "host=$(hostname -s)" +# +# Configure the job script submission parameters for the batch job here +# @see http://www.rubydoc.info/gems/ood_core/OodCore/Job/Script +# +script: + copy_environment: true + native: + - "--nodes=<%= bc_num_slots.blank? ? "1" : bc_num_slots.to_i %>" + - "--cpus-per-task=<%= num_cores.blank? ? "1" : num_cores %>" + - "--time=<%= bc_num_hours + ":0:0" %>" + - "--reservation=<%= reservation %>" + - "--account=<%= bc_account %>" + <%- if gpu_per_node.to_i > 0 -%> + - "--gres=gpu:<%= gpu_per_node.to_i %>" + <%- end -%> diff --git a/bc_vt_freecad/template/after.sh.erb b/bc_vt_freecad/template/after.sh.erb new file mode 100644 index 0000000..c719112 --- /dev/null +++ b/bc_vt_freecad/template/after.sh.erb @@ -0,0 +1,13 @@ +# Wait for the X server to start + +while [ ! -f ./connection.rc ]; do sleep 1; done +source connection.rc + +echo "Waiting for VNC Server to open port ${host}:${port}..." +if wait_until_port_used "${host}:${port}" 2400; then + echo "Discovered VNC Server listening on port ${port}!" +else + echo "Timed out waiting for VNC Server to open port ${port}!" + clean_up 1 +fi +sleep 2 diff --git a/bc_vt_freecad/template/before.sh.erb b/bc_vt_freecad/template/before.sh.erb new file mode 100644 index 0000000..6e9abed --- /dev/null +++ b/bc_vt_freecad/template/before.sh.erb @@ -0,0 +1,27 @@ +# Export the module function if it exists +[[ $(type -t module) == "function" ]] && export -f module +hostname +pwd +moduel reset +module load cuda-latest/toolkit +module load containers/singularity +#echo loaded cuda toolkit +module list +SINGULARITYENV_PATH=$PATH +SINGULARITYENV_CUDA_PATH=$CUDA_PATH +SINGULARITYENV_CUDA_ROOT=$CUDA_ROOT +SINGULARITYENV_CUDA_CMLOCAL_ROOT=$CUDA_CMLOCAL_ROOT +SINGULARITYENV_CUDA_INSTALL_PATH=$CUDA_INSTALL_PATH +SINGULARITYENV_LD_LIBRARY_PATH=$LD_LIBRARY_PATH +SINGULARITYENV_CUDA_HOME=$CUDA_HOME +SINGULARITYENV_CUDA_INC_PATH=$CUDA_INC_PATH +SINGULARITYENV_CUDA_SDK=$CUDA_SDK +SINGULARITYENV_LIBRARY_PATH=$LIBRARY_PATH +SINGULARITYENV_PATH=$PATH + +singularity run --nv --cleanenv --env PYTHONPATH=/usr/local/lib/python3.8/dist-packages/websockify-0.9.0-py3.8.egg --env PATH=$PATH \ +--env PYTHONPATH=/usr/local/lib/python3.8/dist-packages/websockify-0.9.0-py3.8.egg --bind `pwd`:/cwd,/projects,/cm/shared \ + /projects/arcsingularity/ubuntu-xfce-v0.0.1.sif & +#while [ ! -f ./connection.rc ]; do sleep 1; done +#source connection.rc + diff --git a/bc_vt_freecad/template/script.sh.erb b/bc_vt_freecad/template/script.sh.erb new file mode 100644 index 0000000..549f216 --- /dev/null +++ b/bc_vt_freecad/template/script.sh.erb @@ -0,0 +1,45 @@ +#!/bin/bash +while [ ! -f ./connection.rc ]; do sleep 1; done +source ./connection.rc + +unset XDG_RUNTIME_DIR + +module list + +echo running on `hostname` +echo starting singularity +module load containers/singularity + +echo loading cuda toolkit version <%= context.ide_version%> +module load cuda-latest/toolkit +echo loaded cuda toolkit + +sleep 2 +ls /tmp/.X11-unix +echo starting Nsight Eclipse container + +echo DISPLAY:$DISPLAY +echo USER:$USER + + +# Path to Eclipse TC Image +freecad_image='/projects/arcsingularity/freecad_stable_0.16.sif' +echo eclipseImagePath:$freecad_image + +module list +env +echo cuda path: $CUDA_PATH +SINGULARITYENV_CUDA_PATH=$CUDA_PATH +SINGULARITYENV_CUDA_ROOT=$CUDA_ROOT +SINGULARITYENV_CUDA_CMLOCAL_ROOT=$CUDA_CMLOCAL_ROOT +SINGULARITYENV_CUDA_INSTALL_PATH=$CUDA_INSTALL_PATH +SINGULARITYENV_LD_LIBRARY_PATH=$LD_LIBRARY_PATH +SINGULARITYENV_CUDA_HOME=$CUDA_HOME +SINGULARITYENV_CUDA_INC_PATH=$CUDA_INC_PATH +SINGULARITYENV_CUDA_SDK=$CUDA_SDK +SINGULARITYENV_LIBRARY_PATH=$LIBRARY_PATH +SINGULARITYENV_PATH=$PATH +echo "singularity exec --env DISPLAY=$DISPLAY --env CUDA_PATH=$CUDA_PATH --env CUDA_CMLOCAL_ROOT=$CUDA_CMLOCAL_ROOT--writable-tmpfs --bind=/cm/shared:/cm/shared,/tmp:/tmp,/tmp/.X11-unix:/tmp/.X11-unix,/projects:/projects,/work:/work $freecad_image /usr/bin/freecad" + +singularity exec --nv --env DISPLAY=$DISPLAY --env CUDA_PATH=$CUDA_PATH --env CUDA_CMLOCAL_ROOT=$CUDA_CMLOCAL_ROOT --writable-tmpfs --bind=/cm/shared:/cm/shared,/tmp:/tmp,/tmp/.X11-unix:/tmp/.X11-unix,/projects:/projects,/work:/work $freecad_image /usr/bin/freecad +wait $! diff --git a/bc_vt_freecad/view.html.erb b/bc_vt_freecad/view.html.erb new file mode 100644 index 0000000..9fe4cec --- /dev/null +++ b/bc_vt_freecad/view.html.erb @@ -0,0 +1,9 @@ +
+ + + + + +