diff --git a/.gitmodules b/.gitmodules index 30e601bf23046bd8a41c69076845999c863b9f96..e80646e2911023ac96d45ac5f45f47523dce3f6f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "external/hermes"] path = external/hermes - url = https://github.com/bsc-ssrg/hermes.git + url = https://github.com/marcvef/hermes.git [submodule "external/fmt"] path = external/fmt url = https://github.com/fmtlib/fmt diff --git a/external/hermes b/external/hermes index 0af45bfa667f7ff9c78167ef94d975bffbd879f0..97820ed81aba9ef7c05891ce80c53a8533b78609 160000 --- a/external/hermes +++ b/external/hermes @@ -1 +1 @@ -Subproject commit 0af45bfa667f7ff9c78167ef94d975bffbd879f0 +Subproject commit 97820ed81aba9ef7c05891ce80c53a8533b78609 diff --git a/scripts/compile_dep.sh b/scripts/compile_dep.sh index d187b8115d5e24a7b35a14a424a146a5a51160f5..5f1f3f18903d20ae191ff9d9d5a789f77841d80f 100755 --- a/scripts/compile_dep.sh +++ b/scripts/compile_dep.sh @@ -40,34 +40,34 @@ VALID_DEP_OPTIONS="mogon2 mogon1 ngio direct all ci" MOGON1_DEPS=( "zstd" "lz4" "snappy" "capstone" "ofi" "mercury" "argobots" "margo" "rocksdb" - "syscall_intercept" "date" "verbs" + "syscall_intercept" "date" "verbs" "json-c" ) MOGON2_DEPS=( "bzip2" "zstd" "lz4" "snappy" "capstone" "ofi" "mercury" "argobots" "margo" "rocksdb" - "syscall_intercept" "date" "psm2" + "syscall_intercept" "date" "psm2" "json-c" ) NGIO_DEPS=( "zstd" "lz4" "snappy" "capstone" "ofi" "mercury" "argobots" "margo" "rocksdb" - "syscall_intercept" "date" "agios" "psm2" + "syscall_intercept" "date" "agios" "psm2" "json-c" ) DIRECT_DEPS=( - "ofi" "mercury" "argobots" "margo" "rocksdb" "syscall_intercept" "date" + "ofi" "mercury" "argobots" "margo" "rocksdb" "syscall_intercept" "date" ) ALL_DEPS=( "bzip2" "zstd" "lz4" "snappy" "capstone" "bmi" "ofi" "mercury" "argobots" "margo" "rocksdb" - "syscall_intercept" "date" "agios" + "syscall_intercept" "date" "agios" "json-c" ) CI_DEPS=( - "ofi" "mercury" "argobots" "margo" "rocksdb" "syscall_intercept" "date" "agios" + "ofi" "mercury" "argobots" "margo" "rocksdb" "syscall_intercept" "date" "agios" "json-c" ) usage_short() { - echo " + echo " usage: compile_dep.sh [-h] [-l] [-n ] [-c ] [-d ] [-j ] source_path install_path " @@ -114,22 +114,22 @@ list_dependencies() { for d in "${MOGON1_DEPS[@]}"; do echo -n "$d " done - echo + echo echo -n " Mogon 2: " for d in "${MOGON2_DEPS[@]}"; do echo -n "$d " done - echo + echo echo -n " NGIO: " for d in "${NGIO_DEPS[@]}"; do echo -n "$d " done - echo + echo echo -n " Direct GekkoFS dependencies: " for d in "${DIRECT_DEPS[@]}"; do echo -n "$d " done - echo + echo echo -n " All: " for d in "${ALL_DEPS[@]}"; do echo -n "$d " @@ -139,28 +139,28 @@ list_dependencies() { for d in "${CI_DEPS[@]}"; do echo -n "$d " done - echo + echo } check_dependency() { - local DEP=$1 - shift - local DEP_CONFIG=("$@") - # ignore template when specific dependency is set - if [[ -n "${DEPENDENCY}" ]]; then - # check if specific dependency was set and return from function - if echo "${DEPENDENCY}" | grep -q "${DEP}"; then - return - fi - else - # if not check if dependency is part of dependency config - for e in "${DEP_CONFIG[@]}"; do - if [[ "${DEP}" == "${e}" ]]; then - return + local DEP=$1 + shift + local DEP_CONFIG=("$@") + # ignore template when specific dependency is set + if [[ -n "${DEPENDENCY}" ]]; then + # check if specific dependency was set and return from function + if echo "${DEPENDENCY}" | grep -q "${DEP}"; then + return fi - done - fi - false + else + # if not check if dependency is part of dependency config + for e in "${DEP_CONFIG[@]}"; do + if [[ "${DEP}" == "${e}" ]]; then + return + fi + done + fi + false } prepare_build_dir() { @@ -275,29 +275,29 @@ fi # enable predefined dependency template case ${TMP_DEP_CONF} in mogon1) - DEP_CONFIG=("${MOGON1_DEPS[@]}") - echo "'Mogon1' dependencies are compiled" - ;; + DEP_CONFIG=("${MOGON1_DEPS[@]}") + echo "'Mogon1' dependencies are compiled" + ;; mogon2) - DEP_CONFIG=("${MOGON2_DEPS[@]}") - echo "'Mogon2' dependencies are compiled" - ;; + DEP_CONFIG=("${MOGON2_DEPS[@]}") + echo "'Mogon2' dependencies are compiled" + ;; ngio) - DEP_CONFIG=("${NGIO_DEPS[@]}") - echo "'NGIO' dependencies are compiled" - ;; + DEP_CONFIG=("${NGIO_DEPS[@]}") + echo "'NGIO' dependencies are compiled" + ;; all) - DEP_CONFIG=("${ALL_DEPS[@]}") - echo "'All' dependencies are compiled" - ;; + DEP_CONFIG=("${ALL_DEPS[@]}") + echo "'All' dependencies are compiled" + ;; ci) - DEP_CONFIG=("${CI_DEPS[@]}") - echo "'CI' dependencies are compiled" - ;; + DEP_CONFIG=("${CI_DEPS[@]}") + echo "'CI' dependencies are compiled" + ;; direct | *) - DEP_CONFIG=("${DIRECT_DEPS[@]}") - echo "'Direct' GekkoFS dependencies are compiled (default)" - ;; + DEP_CONFIG=("${DIRECT_DEPS[@]}") + echo "'Direct' GekkoFS dependencies are compiled (default)" + ;; esac USE_BMI="-DNA_USE_BMI:BOOL=OFF" @@ -372,6 +372,18 @@ if check_dependency "capstone" "${DEP_CONFIG[@]}"; then make -j"${CORES}" install fi +# build json-c for Margo +if check_dependency "json-c" "${DEP_CONFIG[@]}"; then + echo "############################################################ Installing: json-c" + CURR=${SOURCE}/json-c + prepare_build_dir ${CURR} + cd ${CURR}/build + ../cmake-configure --prefix=${INSTALL} + make -j${CORES} install + mkdir -p ${INSTALL}/lib/pkgconfig + find ${INSTALL} -type f -name "json-c.pc" -exec mv {} ${INSTALL}/lib/pkgconfig \; +fi + # build BMI if check_dependency "bmi" "${DEP_CONFIG[@]}"; then if [[ "${NA_LAYER}" == "bmi" || "${NA_LAYER}" == "all" ]]; then @@ -408,7 +420,7 @@ if check_dependency "ofi" "${DEP_CONFIG[@]}"; then elif check_dependency "psm2-system" "${DEP_CONFIG[@]}"; then OFI_CONFIG="${OFI_CONFIG} --enable-psm2=yes" fi - ${OFI_CONFIG} + ${OFI_CONFIG} make -j${CORES} make install [ "${PERFORM_TEST}" ] && make check @@ -417,12 +429,12 @@ fi # AGIOS if check_dependency "agios" "${DEP_CONFIG[@]}"; then - echo "############################################################ Installing: AGIOS" - CURR=${SOURCE}/agios - prepare_build_dir "${CURR}" - cd "${CURR}"/build - $CMAKE -DCMAKE_INSTALL_PREFIX="${INSTALL}" .. - make install + echo "############################################################ Installing: AGIOS" + CURR=${SOURCE}/agios + prepare_build_dir "${CURR}" + cd "${CURR}"/build + $CMAKE -DCMAKE_INSTALL_PREFIX="${INSTALL}" .. + make install fi # Mercury @@ -491,7 +503,8 @@ if check_dependency "rocksdb" "${DEP_CONFIG[@]}"; then cd "${CURR}" make clean USE_RTTI=1 make -j"${CORES}" static_lib - INSTALL_PATH="${INSTALL}" make install + # INSTALL_PATH older version, PREFIX newer versions + INSTALL_PATH="${INSTALL}" PREFIX="${INSTALL}" make install fi # syscall_intercept diff --git a/scripts/dl_dep.sh b/scripts/dl_dep.sh index 9b4e90f34fd083481cd391b7664129893fe22866..fdbea188a8c285e6571c2ea381bbbc8ede26153c 100755 --- a/scripts/dl_dep.sh +++ b/scripts/dl_dep.sh @@ -39,18 +39,18 @@ VERBOSE=false VALID_DEP_OPTIONS="mogon2 mogon1 ngio direct all ci" MOGON1_DEPS=( - "zstd" "lz4" "snappy" "capstone" "ofi-verbs" "mercury" "argobots" "margo" "rocksdb" - "syscall_intercept" "date" + "zstd" "lz4" "snappy" "capstone" "ofi" "mercury" "argobots" "margo" "rocksdb" + "syscall_intercept" "date" "json-c" ) MOGON2_DEPS=( - "bzip2" "zstd" "lz4" "snappy" "capstone" "ofi-experimental" "mercury" "argobots" "margo" "rocksdb-experimental" - "syscall_intercept" "date" "psm2" + "bzip2" "zstd" "lz4" "snappy" "capstone" "ofi" "mercury" "argobots" "margo" "rocksdb" + "syscall_intercept" "date" "psm2" "json-c" ) NGIO_DEPS=( - "zstd" "lz4" "snappy" "capstone" "ofi-experimental" "mercury" "argobots" "margo" "rocksdb" - "syscall_intercept" "date" "psm2" "agios" + "zstd" "lz4" "snappy" "capstone" "ofi" "mercury" "argobots" "margo" "rocksdb" + "syscall_intercept" "date" "psm2" "agios" "json-c" ) DIRECT_DEPS=( @@ -59,11 +59,11 @@ DIRECT_DEPS=( ALL_DEPS=( "bzip2" "zstd" "lz4" "snappy" "capstone" "bmi" "ofi" "mercury" "argobots" "margo" "rocksdb" - "syscall_intercept" "date" "agios" + "syscall_intercept" "date" "agios" "json-c" ) CI_DEPS=( - "ofi" "mercury" "argobots" "margo" "rocksdb" "syscall_intercept" "date" "agios" + "ofi" "mercury" "argobots" "margo" "rocksdb" "syscall_intercept" "date" "agios" "json-c" ) # Stop all backround jobs on interruption. @@ -372,6 +372,11 @@ if check_dependency "capstone" "${DEP_CONFIG[@]}"; then wgetdeps "capstone" "https://github.com/aquynh/capstone/archive/4.0.1.tar.gz" & fi +# get json-c for Margo +if check_dependency "json-c" "${DEP_CONFIG[@]}"; then + wgetdeps "json-c" "https://github.com/json-c/json-c/archive/json-c-0.15-20200726.tar.gz" & +fi + ## Direct GekkoFS dependencies # get BMI @@ -383,46 +388,44 @@ fi # get libfabric if [ "${NA_LAYER}" == "ofi" ] || [ "${NA_LAYER}" == "all" ]; then - if check_dependency "ofi-experimental" "${DEP_CONFIG[@]}"; then - clonedeps "libfabric" "https://github.com/ofiwg/libfabric.git" "" "-b v1.9.1" & + if check_dependency "ofi-legacy" "${DEP_CONFIG[@]}"; then + clonedeps "libfabric" "https://github.com/ofiwg/libfabric.git" "" "-b v1.8.1" & elif check_dependency "ofi-verbs" "${DEP_CONFIG[@]}"; then # libibverbs 1.2.1-1 used on mogon 1i (installed on system) which is linked to libfabric # libfabric 1.8 random RPCs fail to be send. 1.9 RPC client cannot be started when in an MPI environment clonedeps "libfabric" "https://github.com/ofiwg/libfabric.git" "" "-b v1.7.2" & elif check_dependency "ofi" "${DEP_CONFIG[@]}"; then - clonedeps "libfabric" "https://github.com/ofiwg/libfabric.git" "" "-b v1.8.1" & + clonedeps "libfabric" "https://github.com/ofiwg/libfabric.git" "" "-b v1.12.1" & fi fi if check_dependency "psm2" "${DEP_CONFIG[@]}"; then - wgetdeps "psm2" "https://github.com/intel/opa-psm2/archive/PSM2_11.2.86.tar.gz" & + wgetdeps "psm2" "https://github.com/cornelisnetworks/opa-psm2/archive/PSM2_11.2.185.tar.gz" & fi # get Mercury if check_dependency "mercury" "${DEP_CONFIG[@]}"; then - clonedeps "mercury" "https://github.com/mercury-hpc/mercury" "41caa143a07ed179a3149cac4af0dc7aa3f946fd" "--recurse-submodules" & + clonedeps "mercury" "https://github.com/mercury-hpc/mercury" "75cb615894699a4df5872ba9d187f37cc94330a3" "--recurse-submodules" & fi # get Argobots if check_dependency "argobots" "${DEP_CONFIG[@]}"; then - wgetdeps "argobots" "https://github.com/pmodels/argobots/archive/v1.0rc1.tar.gz" & + wgetdeps "argobots" "https://github.com/pmodels/argobots/archive/refs/tags/v1.1.tar.gz" & fi # get Margo if check_dependency "margo" "${DEP_CONFIG[@]}"; then - clonedeps "margo" "https://xgitlab.cels.anl.gov/sds/margo.git" "v0.6.3" & + clonedeps "margo" "https://github.com/mochi-hpc/mochi-margo" "34bff25aa8ec9e9348ee07a455308bfe3c17d623" & fi # get rocksdb -if check_dependency "rocksdb-experimental" "${DEP_CONFIG[@]}"; then - wgetdeps "rocksdb" "https://github.com/facebook/rocksdb/archive/v6.11.4.tar.gz" & -elif check_dependency "rocksdb" "${DEP_CONFIG[@]}"; then - wgetdeps "rocksdb" "https://github.com/facebook/rocksdb/archive/v6.2.2.tar.gz" & +if check_dependency "rocksdb" "${DEP_CONFIG[@]}"; then + wgetdeps "rocksdb" "https://github.com/facebook/rocksdb/archive/refs/tags/v6.16.4.tar.gz" & fi # get syscall_intercept if check_dependency "syscall_intercept" "${DEP_CONFIG[@]}"; then - clonedeps "syscall_intercept" "https://github.com/pmem/syscall_intercept.git" "f7cebb7b7e7512a19b78a31ce236ad6ca22636dd" "" "syscall_intercept.patch" & + clonedeps "syscall_intercept" "https://github.com/pmem/syscall_intercept.git" "304404581c57d43478438d175099d20260bae74e" "" "syscall_intercept.patch" & fi # get AGIOS diff --git a/src/client/preload_util.cpp b/src/client/preload_util.cpp index 255588a8f690aaa19611b9e5eaaa7205bb57196b..35104a92daf236c97253867fde2441660a39a0ea 100644 --- a/src/client/preload_util.cpp +++ b/src/client/preload_util.cpp @@ -111,6 +111,8 @@ extract_protocol(const string& uri) { protocol = gkfs::rpc::protocol::ofi_psm2; } else if(uri.find(gkfs::rpc::protocol::ofi_verbs) != string::npos) { protocol = gkfs::rpc::protocol::ofi_verbs; + } else if(uri.find(gkfs::rpc::protocol::ofi_tcp) != string::npos) { + protocol = gkfs::rpc::protocol::ofi_tcp; } // check for shared memory protocol. Can be plain shared memory or real ofi // protocol + auto_sm diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp index a8537ccddcc8cb9d34bf450da88b41ba69a9d8f3..dcc873f9b5d6819f100480ae8663a16fadca94cb 100644 --- a/src/daemon/daemon.cpp +++ b/src/daemon/daemon.cpp @@ -383,7 +383,8 @@ parse_input(const po::variables_map& vm) { rpc_protocol = vm["rpc-protocol"].as(); if(rpc_protocol != gkfs::rpc::protocol::ofi_verbs && rpc_protocol != gkfs::rpc::protocol::ofi_sockets && - rpc_protocol != gkfs::rpc::protocol::ofi_psm2) { + rpc_protocol != gkfs::rpc::protocol::ofi_psm2 && + rpc_protocol != gkfs::rpc::protocol::ofi_tcp) { throw runtime_error(fmt::format( "Given RPC protocol '{}' not supported. Check --help for supported protocols.", rpc_protocol));