mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-09 06:38:06 -05:00
This is done to get quick feedback to developpers in a Pull Request. It tests shorint level with only three sets of parameters. Integer level is tested with only the default operations with two sets of parameters. This profile will be automatically triggered on each push in a pull request. Conversely the full suite of test will also be triggered automatically but once the review is approved.
155 lines
4.7 KiB
Bash
Executable File
155 lines
4.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
function usage() {
|
|
echo "$0: shortint test runner"
|
|
echo
|
|
echo "--help Print this message"
|
|
echo "--rust-toolchain The toolchain to run the tests with default: stable"
|
|
echo "--multi-bit Run multi-bit tests only: default off"
|
|
echo
|
|
}
|
|
|
|
RUST_TOOLCHAIN="+stable"
|
|
multi_bit=""
|
|
not_multi_bit="_multi_bit"
|
|
|
|
while [ -n "$1" ]
|
|
do
|
|
case "$1" in
|
|
"--help" | "-h" )
|
|
usage
|
|
exit 0
|
|
;;
|
|
|
|
"--rust-toolchain" )
|
|
shift
|
|
RUST_TOOLCHAIN="$1"
|
|
;;
|
|
|
|
"--multi-bit" )
|
|
multi_bit="_multi_bit"
|
|
not_multi_bit=""
|
|
;;
|
|
|
|
*)
|
|
echo "Unknown param : $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [[ "${RUST_TOOLCHAIN::1}" != "+" ]]; then
|
|
RUST_TOOLCHAIN="+${RUST_TOOLCHAIN}"
|
|
fi
|
|
|
|
CURR_DIR="$(dirname "$0")"
|
|
ARCH_FEATURE="$("${CURR_DIR}/get_arch_feature.sh")"
|
|
|
|
nproc_bin=nproc
|
|
|
|
# macOS detects CPUs differently
|
|
if [[ $(uname) == "Darwin" ]]; then
|
|
nproc_bin="sysctl -n hw.logicalcpu"
|
|
fi
|
|
|
|
n_threads="$(${nproc_bin})"
|
|
|
|
if uname -a | grep "arm64"; then
|
|
if [[ $(uname) == "Darwin" ]]; then
|
|
# Keys are 4.7 gigs at max, CI M1 macs only has 8 gigs of RAM
|
|
n_threads=1
|
|
fi
|
|
else
|
|
# Keys are 4.7 gigs at max, test machine has 32 gigs of RAM
|
|
n_threads=6
|
|
fi
|
|
|
|
if [[ "${BIG_TESTS_INSTANCE}" != TRUE ]]; then
|
|
if [[ "${FAST_TESTS}" != TRUE ]]; then
|
|
# block pbs are too slow for high params
|
|
# mul_crt_4_4 is extremely flaky (~80% failure)
|
|
# test_wopbs_bivariate_crt_wopbs_param_message generate tables that are too big at the moment
|
|
# test_integer_smart_mul_param_message_4_carry_4 is too slow
|
|
filter_expression="""\
|
|
test(/^integer::.*${multi_bit}/) \
|
|
${not_multi_bit:+"and not test(~${not_multi_bit})"} \
|
|
and not test(/.*_block_pbs(_base)?_param_message_[34]_carry_[34]$/) \
|
|
and not test(~mul_crt_param_message_4_carry_4) \
|
|
and not test(/.*test_wopbs_bivariate_crt_wopbs_param_message_[34]_carry_[34]$/) \
|
|
and not test(/.*test_integer_smart_mul_param_message_4_carry_4$/)"""
|
|
else
|
|
# test only fast default operations with only two set of parameters
|
|
filter_expression="""\
|
|
test(/^integer::.*${multi_bit}/) \
|
|
${not_multi_bit:+"and not test(~${not_multi_bit})"} \
|
|
and test(/.*_default_.*/) \
|
|
and not test(/.*_param_message_[14]_carry_[14]$/) \
|
|
and not test(/.*default_add_sequence_multi_thread_param_message_3_carry_3$/)"""
|
|
fi
|
|
|
|
cargo "${RUST_TOOLCHAIN}" nextest run \
|
|
--tests \
|
|
--release \
|
|
--package tfhe \
|
|
--profile ci \
|
|
--features="${ARCH_FEATURE}",integer,internal-keycache \
|
|
--test-threads "${n_threads}" \
|
|
-E "$filter_expression"
|
|
|
|
if [[ "${multi_bit}" == "" ]]; then
|
|
cargo "${RUST_TOOLCHAIN}" test \
|
|
--release \
|
|
--package tfhe \
|
|
--features="${ARCH_FEATURE}",integer,internal-keycache \
|
|
--doc \
|
|
integer::
|
|
fi
|
|
else
|
|
if [[ "${FAST_TESTS}" != TRUE ]]; then
|
|
# block pbs are too slow for high params
|
|
# mul_crt_4_4 is extremely flaky (~80% failure)
|
|
# test_wopbs_bivariate_crt_wopbs_param_message generate tables that are too big at the moment
|
|
# test_integer_smart_mul_param_message_4_carry_4 is too slow
|
|
filter_expression="""\
|
|
test(/^integer::.*${multi_bit}/) \
|
|
${not_multi_bit:+"and not test(~${not_multi_bit})"} \
|
|
and not test(/.*_block_pbs(_base)?_param_message_[34]_carry_[34]$/) \
|
|
and not test(~mul_crt_param_message_4_carry_4) \
|
|
and not test(/.*test_wopbs_bivariate_crt_wopbs_param_message_[34]_carry_[34]$/) \
|
|
and not test(/.*test_integer_smart_mul_param_message_4_carry_4$/)"""
|
|
else
|
|
# test only fast default operations with only two set of parameters
|
|
filter_expression="""\
|
|
test(/^integer::.*${multi_bit}/) \
|
|
${not_multi_bit:+"and not test(~${not_multi_bit})"} \
|
|
and test(/.*_default_.*/) \
|
|
and not test(/.*_param_message_[14]_carry_[14]$/) \
|
|
and not test(/.*default_add_sequence_multi_thread_param_message_3_carry_3$/)"""
|
|
fi
|
|
|
|
num_cpu_threads="$(${nproc_bin})"
|
|
num_threads=$((num_cpu_threads * 2 / 3))
|
|
cargo "${RUST_TOOLCHAIN}" nextest run \
|
|
--tests \
|
|
--release \
|
|
--package tfhe \
|
|
--profile ci \
|
|
--features="${ARCH_FEATURE}",integer,internal-keycache \
|
|
--test-threads $num_threads \
|
|
-E "$filter_expression"
|
|
|
|
if [[ "${multi_bit}" == "" ]]; then
|
|
cargo "${RUST_TOOLCHAIN}" test \
|
|
--release \
|
|
--package tfhe \
|
|
--features="${ARCH_FEATURE}",integer,internal-keycache \
|
|
--doc \
|
|
integer:: -- --test-threads="$(${nproc_bin})"
|
|
fi
|
|
fi
|
|
|
|
echo "Test ran in $SECONDS seconds"
|