@@ -12,6 +12,8 @@ FEEDSIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
1212BENCHPRESS_ROOT=" $( readlink -f " $FEEDSIM_ROOT /../.." ) "
1313FEEDSIM_ROOT_SRC=" ${BENCHPRESS_ROOT} /benchmarks/feedsim"
1414FEEDSIM_THIRD_PARTY_SRC=" ${FEEDSIM_ROOT_SRC} /third_party"
15+ LIBTORCH_VERSION=" 2.1.0"
16+ DLRM_MODEL_URL=" https://github.com/facebookresearch/DCPerf-datasets/releases/download/feedsim-dlrm/dlrm_small.tar.gz"
1517echo " BENCHPRESS_ROOT is ${BENCHPRESS_ROOT} "
1618
1719source " ${BENCHPRESS_ROOT} /packages/common/os-distro.sh"
4850dnf install -y bc ninja-build flex bison git texinfo binutils-devel \
4951 libsodium-devel libunwind-devel bzip2-devel double-conversion-devel \
5052 libzstd-devel lz4-devel xz-devel snappy-devel libtool bzip2 openssl-devel \
51- zlib-devel libdwarf libdwarf-devel libaio-devel libatomic patch jq xxhash xxhash-devel
53+ zlib-devel libdwarf libdwarf-devel libaio-devel libatomic patch jq \
54+ xxhash xxhash-devel unzip
5255
5356# Creates feedsim directory under benchmarks/
5457mkdir -p " ${BENCHPRESS_ROOT} /benchmarks/feedsim"
176179
177180msg " Installing third-party dependencies ... DONE"
178181
182+ # Installing LibTorch for DLRM support
183+ msg " Installing LibTorch for DLRM support..."
184+ cd " ${FEEDSIM_THIRD_PARTY_SRC} "
185+
186+ ARCH=" $( uname -m) "
187+ if [ " $ARCH " = " x86_64" ]; then
188+ LIBTORCH_URL=" https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-${LIBTORCH_VERSION} %2Bcpu.zip"
189+ elif [ " $ARCH " = " aarch64" ]; then
190+ msg " WARNING: Pre-built LibTorch for ARM64 may not be available."
191+ msg " Attempting to download CPU version..."
192+ LIBTORCH_URL=" https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-${LIBTORCH_VERSION} %2Bcpu.zip"
193+ else
194+ die " Unsupported architecture: ${ARCH} "
195+ fi
196+
197+ if ! [ -d " libtorch" ]; then
198+ msg " Downloading LibTorch ${LIBTORCH_VERSION} ..."
199+ wget " ${LIBTORCH_URL} " -O libtorch.zip
200+ msg " Extracting LibTorch..."
201+ unzip -q libtorch.zip
202+ rm libtorch.zip
203+ msg " LibTorch installed to ${FEEDSIM_THIRD_PARTY_SRC} /libtorch"
204+ else
205+ msg " [SKIPPED] LibTorch already installed"
206+ fi
207+
208+ # Download DLRM model
209+ msg " Downloading DLRM model..."
210+ DLRM_MODEL_DIR=" ${FEEDSIM_ROOT_SRC} /models"
211+ mkdir -p " ${DLRM_MODEL_DIR} "
212+
213+ if ! [ -f " ${DLRM_MODEL_DIR} /dlrm_small.pt" ]; then
214+ msg " Downloading DLRM model from ${DLRM_MODEL_URL} ..."
215+ wget " ${DLRM_MODEL_URL} " -O " ${DLRM_MODEL_DIR} /dlrm_small.tar.gz"
216+ msg " Extracting DLRM model..."
217+ tar -xzf " ${DLRM_MODEL_DIR} /dlrm_small.tar.gz" -C " ${DLRM_MODEL_DIR} "
218+ rm " ${DLRM_MODEL_DIR} /dlrm_small.tar.gz"
219+ msg " DLRM model installed to ${DLRM_MODEL_DIR} "
220+ else
221+ msg " [SKIPPED] DLRM model already installed"
222+ fi
223+
179224
180225# Installing FeedSim
181226cd " ${FEEDSIM_ROOT_SRC} "
203248
204249mkdir -p build && cd build/
205250
206- # Build FeedSim
251+ # Build FeedSim with DLRM support
207252FS_CFLAGS=" ${BP_CFLAGS:- -O3 -DNDEBUG} "
208253FS_CXXFLAGS=" ${BP_CXXFLAGS:- -O3 -DNDEBUG } "
209254FS_LDFLAGS=" ${BP_LDFLAGS:- } -latomic -Wl,--export-dynamic"
210255
211256cmake -G Ninja \
212257 -DCMAKE_BUILD_TYPE=Release \
213- -DCMAKE_C_COMPILER=" $BP_CC " \
214- -DCMAKE_CXX_COMPILER=" $BP_CXX " \
258+ -DCMAKE_C_COMPILER=" ${ BP_CC:- gcc} " \
259+ -DCMAKE_CXX_COMPILER=" ${ BP_CXX:- g++} " \
215260 -DCMAKE_C_FLAGS_RELEASE=" $FS_CFLAGS " \
216261 -DCMAKE_CXX_FLAGS_RELEASE=" $FS_CXXFLAGS -DFMT_HEADER_ONLY=1" \
217262 -DCMAKE_EXE_LINKER_FLAGS_RELEASE=" $FS_LDFLAGS " \
263+ -DFEEDSIM_USE_DLRM=ON \
264+ -DTorch_DIR=" ${FEEDSIM_THIRD_PARTY_SRC} /libtorch/share/cmake/Torch" \
265+ -DCMAKE_PREFIX_PATH=" ${FEEDSIM_THIRD_PARTY_SRC} /libtorch" \
218266 ../
219267
220268ninja -v -j1
269+
270+ msg " "
271+ msg " === FeedSim Installation Complete ==="
272+ msg " "
273+ msg " To run FeedSim with DLRM workload:"
274+ msg " cd ${FEEDSIM_ROOT_SRC} "
275+ msg " ./run.sh --workload=dlrm --dlrm-model=${DLRM_MODEL_DIR} /dlrm_small.pt"
276+ msg " "
277+ msg " Or use the standard PageRank workload:"
278+ msg " ./run.sh"
279+ msg " "
0 commit comments