@@ -104,20 +104,30 @@ cd flux-sched
104104./configure --prefix=/usr --sysconfdir=/etc
105105make -j 8 && sudo make install && sudo ldconfig
106106
107- # install openmpi with cuda
107+ # Note that UCX (and a rebuild of open mpi) was done after to get OSU/quicksilver working
108+
109+ cd /opt
110+ sudo git clone https://github.com/openucx/ucx && \
111+ sudo chown -R $USER ./ucx && cd ucx/ && \
112+ git clean -xfd && \
113+ ./autogen.sh && mkdir build && cd build && \
114+ ../configure --prefix=/usr --enable-debug --with-cuda=/usr/local/cuda --enable-mt --disable-cma && \
115+ make -j && sudo make install
116+
117+ # If already existed - remove
118+ sudo rm -rf /usr/local/pancakes/
119+
120+ # install openmpi with cuda and ucx
108121cd /opt
109122sudo mkdir -p /usr/local/pancakes && \
110- sudo wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.2.tar.gz && \
123+ sudo wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.2.tar.gz || true && \
111124 sudo tar -xzvf openmpi-4.1.2.tar.gz && \
112125 cd openmpi-4.1.2 && \
113126 sudo chown -R $USER $( pwd) && \
114- ./configure --with-cuda --prefix=/usr/local/pancakes && \
115- make -j 20 && sudo make install
116-
117- # TODO check these, should be provided in flux environment later
118- # ENV CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
119- # ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/pancakes/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
120- # ENV LD_LIBRARY_PATH=/usr/local/pancakes/lib:/opt/miniconda/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64
127+ make distclean || true && \
128+ mkdir build && cd build
129+ ../configure --with-cuda=/usr/local/cuda --with-ucx=/usr/ --prefix=/usr/local/pancakes
130+ make -j && sudo make install
121131
122132cd /opt
123133
@@ -384,3 +394,47 @@ sudo apt-get install -y --no-install-recommends --allow-change-held-packages apt
384394sudo echo " deb https://packages.cloud.google.com/apt google-fast-socket main" | tee /etc/apt/sources.list.d/google-fast-socket.list
385395curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
386396sudo apt update && sudo apt install -y --no-install-recommends google-fast-socket=0.0.5
397+
398+
399+ # Install additional apps for bare metal, osu and quicksilver and multi-gpu-models
400+ 54 make -j
401+ 55 make install
402+ 56 cd /opt/osu-benchmark/
403+ 57 rm -rf build.openmpi/
404+ 58 export OSU_VERSION=5.8
405+ 59 mkdir -p build.openmpi && cd build.openmpi && ../src/osu-micro-benchmarks-${OSU_VERSION} /configure CC=mpicc CXX=mpicxx CFLAGS=-I$( pwd) /../src/osu-micro-benchmarks-${OSU_VERSION} /util --prefix=$( pwd) --enable-cuda --with-cuda=/usr/local/cuda && make && make install
406+ 60 export PATH=/usr/local/pancakes/bin:$PATH
407+ 61 make && make install
408+ 62 cd /opt/containers/
409+ 63 cd /root
410+
411+ # OSU benchmarks
412+ sudo git clone --depth 1 https://github.com/ULHPC/tutorials /opt/tutorials && \
413+ sudo mkdir -p /opt/osu-benchmark && \
414+ sudo chown -R $USER /opt/tutorials /opt/osu-benchmark && \
415+ cd /opt/osu-benchmark && \
416+ ln -s /opt/tutorials/parallel/mpi/OSU_MicroBenchmarks ref.d && \
417+ ln -s ref.d/Makefile . && \
418+ ln -s ref.d/scripts . && \
419+ mkdir src && \
420+ cd src && \
421+ export OSU_VERSION=5.8 && \
422+ wget --no-check-certificate http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-${OSU_VERSION} .tgz && \
423+ tar xf osu-micro-benchmarks-${OSU_VERSION} .tgz && \
424+ cd /opt/osu-benchmark && \
425+ # Compile based on openmpi with cuda/ucx
426+ mkdir -p build.openmpi && cd build.openmpi && \
427+ ../src/osu-micro-benchmarks-${OSU_VERSION} /configure CC=mpicc CXX=mpicxx CFLAGS=-I$( pwd) /../src/osu-micro-benchmarks-${OSU_VERSION} /util --prefix=$( pwd) --enable-cuda --with-cuda=/usr/local/cuda && \
428+ make && make install
429+
430+ # Quicksilver
431+ sudo git clone https://github.com/LLNL/Quicksilver quicksilver
432+ sudo chown -R $USER /opt/quicksilver
433+ wget https://raw.githubusercontent.com/converged-computing/performance-study/main/docker/google/gpu/quicksilver/Makefile
434+ cd /opt/quicksilver/src
435+ make || nvcc -DHAVE_CUDA -std=c++11 -O2 -Xptxas -v -gencode=arch=compute_70,code=\" sm_70,compute_70\" --compiler-bindir=/usr/local/pancakes/bin/mpicxx -L/usr/local/cuda/lib64/ -lcuda -lcudart -lm -o qs CollisionEvent.o CoralBenchmark.o CycleTracking.o DecompositionObject.o DirectionCosine.o EnergySpectrum.o GlobalFccGrid.o GridAssignmentObject.o InputBlock.o MCT.o MC_Adjacent_Facet.o MC_Base_Particle.o MC_Domain.o MC_Facet_Crossing_Event.o MC_Fast_Timer.o MC_Load_Particle.o MC_Location.o MC_Particle_Buffer.o MC_RNG_State.o MC_Segment_Outcome.o MC_SourceNow.o MacroscopicCrossSection.o MeshPartition.o MonteCarlo.o MpiCommObject.o NuclearData.o Parameters.o ParticleVault.o ParticleVaultContainer.o PopulationControl.o SendQueue.o SharedMemoryCommObject.o Tallies.o cmdLineParser.o cudaFunctions.o initMC.o main.o parseUtils.o utils.o utilsMpi.o && sudo cp qs /usr/bin/qs
436+
437+ # Multi-gpu-models
438+ sudo git clone https://github.com/NVIDIA/multi-gpu-programming-models /opt/multi-gpu-programming-models && \
439+ cd multi-gpu-programming-models/mpi && \
440+ make && sudo mv jacobi /usr/local/bin
0 commit comments