diff --git a/Dockerfile b/Dockerfile index 97b9beb..8f53f97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,15 @@ RUN apt-get update RUN mkdir toolsrc RUN mkdir /opt/cad +WORKDIR /toolsrc +RUN apt-get -y install wget make gcc g++ +RUN wget https://download.open-mpi.org/release/hwloc/v2.8/hwloc-2.8.0.tar.gz +RUN tar -xzvf hwloc-2.8.0.tar.gz +WORKDIR hwloc-2.8.0 +RUN ./configure +RUN make +RUN make install + # Xyce and Trilinos takes the longest to execute, in the interest of caching, this should go first. # install Trilinos WORKDIR /toolsrc @@ -15,7 +24,7 @@ RUN apt-get install -y gcc g++ gfortran make cmake flex libfl-dev libfftw3-dev l # building from git repo dependencies RUN apt-get install -y autoconf automake git # parallel dependencies -RUN apt-get install -y libopenmpi-dev openmpi-bin +RUN apt-get install -y libhwloc15 libopenmpi-dev openmpi-bin openmpi-common RUN git clone https://github.com/trilinos/Trilinos.git WORKDIR Trilinos @@ -91,7 +100,7 @@ RUN git clone https://tpope.io/vim/fugitive.git /template/.vim/pack/plugins/star RUN git clone https://github.com/preservim/nerdtree.git /template/.vim/pack/plugins/start/nerdtree # install gaw -RUN apt-get update --fix-missing; apt-get install -y libgtk-3-dev libcanberra-gtk3-module +RUN apt-get update --fix-missing; DEBIAN_FRONTEND=noninteractive apt-get install -y libgtk-3-dev libcanberra-gtk3-module WORKDIR /toolsrc RUN --mount=type=secret,id=user --mount=type=secret,id=token git clone https://$(cat /run/secrets/user):$(cat /run/secrets/token)@git.broccolimicro.io/Broccoli/waveview.git WORKDIR waveview @@ -99,6 +108,9 @@ RUN ./configure RUN make RUN make install +# install gtkwave +RUN apt-get update --fix-missing; DEBIAN_FRONTEND=noninteractive apt-get install -y gtkwave + # install magic layout tool WORKDIR /toolsrc RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tcsh m4 csh libx11-dev tcl-dev tk-dev libcairo2-dev mesa-common-dev libglu1-mesa-dev libncurses-dev @@ -132,6 +144,8 @@ RUN cp pr/* /opt/cad/bin # Connect user home directory of host machine RUN mkdir "/host" WORKDIR "/host" +RUN rm -rf /opt/cad/conf +RUN ln -s "/host/tech" "/opt/cad/conf" ENV USER "bcli" ENV USER_ID "1000" diff --git a/Makefile b/Makefile index 48b59a4..3ac9c4a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ all: - DOCKER_BUILDKIT=1 docker build --secret id=user,src=.secret/user --secret id=token,src=.secret/token -t git.broccolimicro.io/broccoli/development-environment:latest . + DOCKER_BUILDKIT=1 docker build --shm-size=4gb --secret id=user,src=.secret/user --secret id=token,src=.secret/token -t git.broccolimicro.io/broccoli/development-environment:latest . local: - DOCKER_BUILDKIT=1 docker build --secret id=user,src=.secret/user --secret id=token,src=.secret/token -t git.broccolimicro.io/broccoli/development-environment:latest --add-host=git.broccolimicro.io:10.0.0.65 . + DOCKER_BUILDKIT=1 docker build --shm-size=4gb --secret id=user,src=.secret/user --secret id=token,src=.secret/token -t git.broccolimicro.io/broccoli/development-environment:latest --add-host=git.broccolimicro.io:10.0.0.65 . diff --git a/bcli-develop.sh b/bcli-develop.sh index 24888d6..aba703e 100644 --- a/bcli-develop.sh +++ b/bcli-develop.sh @@ -21,7 +21,20 @@ bcli() { umount $HOME/tech fi rmdir $HOME/tech - else + elif [ "$#" -eq 0 ]; then docker exec -u $(id -u):$(id -g) -it bcli-develop /bin/bash + else + if [ "$1" != "--help" ]; then + echo "error: unrecognized command '$1'" + echo "" + fi + + echo "usage: bcli " + echo "If command is empty, then start a terminal logged into the toolset." + echo " up - launch the toolset" + echo " down - shutdown the toolset" + echo " mount - mount the technology files from broccolimicro.io" + echo " unmount - unmount the technology files" + echo " -f - force the unmount if the connection has been broken" fi } diff --git a/home/.bash_aliases b/home/.bash_aliases index 551434e..ce8ffb8 100644 --- a/home/.bash_aliases +++ b/home/.bash_aliases @@ -1,3 +1,4 @@ +export HWLOC_HIDE_ERRORS=2 export ACT_HOME="/opt/cad" export PATH="/opt/go/bin:/opt/cad/bin:$HOME/.local/bin:$PATH" export PRSPICE_INSTALL="$ACT_HOME/lib/prspice" diff --git a/trilinos/reconfigure b/trilinos/reconfigure index fbd6fb8..207f52d 100755 --- a/trilinos/reconfigure +++ b/trilinos/reconfigure @@ -5,18 +5,15 @@ FLAGS="-O3 -fPIC" cmake \ -G "Unix Makefiles" \ -DCMAKE_C_COMPILER=mpicc \ --DCMAKE_CXX_COMPILER=mpicxx \ --DCMAKE_Fortran_COMPILER=mpifort \ +-DCMAKE_CXX_COMPILER=mpic++ \ +-DCMAKE_Fortran_COMPILER=mpif77 \ -DCMAKE_CXX_FLAGS="$FLAGS" \ -DCMAKE_C_FLAGS="$FLAGS" \ -DCMAKE_Fortran_FLAGS="$FLAGS" \ -DCMAKE_INSTALL_PREFIX=$ARCHDIR \ -DCMAKE_MAKE_PROGRAM="make" \ --DTPL_ENABLE_MPI=ON \ --DMPI_BASE_DIR=/usr \ -DTrilinos_ENABLE_NOX=ON \ -DNOX_ENABLE_LOCA=ON \ --DTrilinos_ENABLE_Epetra=ON \ -DTrilinos_ENABLE_EpetraExt=ON \ -DEpetraExt_BUILD_BTF=ON \ -DEpetraExt_BUILD_EXPERIMENTAL=ON \ @@ -27,11 +24,16 @@ cmake \ -DTrilinos_ENABLE_AztecOO=ON \ -DTrilinos_ENABLE_Belos=ON \ -DTrilinos_ENABLE_Teuchos=ON \ - -DTeuchos_ENABLE_COMPLEX=ON \ +-DTrilinos_ENABLE_COMPLEX_DOUBLE=ON \ -DTrilinos_ENABLE_Amesos=ON \ - -DAmesos_ENABLE_KLU=ON \ + -DAmesos_ENABLE_KLU=ON \ +-DTrilinos_ENABLE_Amesos2=ON \ + -DAmesos2_ENABLE_KLU2=ON \ + -DAmesos2_ENABLE_Basker=ON \ -DTrilinos_ENABLE_Sacado=ON \ --DTrilinos_ENABLE_Kokkos=OFF \ +-DTrilinos_ENABLE_Stokhos=ON \ +-DTrilinos_ENABLE_Kokkos=ON \ +-DTrilinos_ENABLE_Zoltan=ON \ -DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \ -DTrilinos_ENABLE_CXX11=ON \ -DTPL_ENABLE_AMD=ON \ @@ -39,4 +41,6 @@ cmake \ -DTPL_AMD_INCLUDE_DIRS="/usr/include/suitesparse" \ -DTPL_ENABLE_BLAS=ON \ -DTPL_ENABLE_LAPACK=ON \ +-DTPL_ENABLE_MPI=ON \ +-DMPI_BASE_DIR=/usr \ $SRCDIR