I’m trying to build the examples/bert-tiny example against the current FIDESlib installation. I was able to build and install FIDESlib itself, but the bert-tiny example fails during compilation. I think the example might not be in sync with the current FIDESlib / OpenFHE versions due to the following reasons:
However, in the current FIDESlib::CKKS::Plaintext implementation, multPt is not part of the public API (it appears commented out / disabled). As a result, the example fails with errors like:
error: class "FIDESlib::CKKS::Plaintext" has no member "multPt"
This suggests the example code is written against an older version of the API.
which collides with std::chrono::duration<Rep, Period> used internally by CUDA’s implementation. This makes the example fail at compile time, even though FIDESlib itself builds successfully.
Below I provide the container setup and the compilation trace of the example.
[ 3%] Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
[ 6%] Linking CXX static library ../../../lib/libgtest.a
[ 6%] Built target gtest
[ 10%] Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
[ 13%] Building CXX object _deps/googletest-build/googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o
[ 17%] Linking CXX static library ../../../lib/libgtest_main.a
[ 17%] Built target gtest_main
[ 20%] Building CXX object CMakeFiles/llm.dir/src/MatMul.cpp.o
[ 27%] Building CUDA object CMakeFiles/llm.dir/src/Inputs.cu.o
[ 27%] Building CUDA object CMakeFiles/llm.dir/src/Inputs.cuh.o
[ 31%] Building CUDA object CMakeFiles/llm.dir/src/MatMul.cu.o
[ 34%] Building CUDA object CMakeFiles/llm.dir/src/MatMul.cuh.o
[ 37%] Building CUDA object CMakeFiles/llm.dir/src/PolyApprox.cu.o
[ 41%] Building CUDA object CMakeFiles/llm.dir/src/PolyApprox.cuh.o
[ 48%] Building CUDA object CMakeFiles/llm.dir/src/utils.cu.o
[ 48%] Building CUDA object CMakeFiles/llm.dir/src/Transformer.cu.o
[ 51%] Building CUDA object CMakeFiles/llm.dir/src/Transformer.cuh.o
[ 55%] Building CUDA object CMakeFiles/llm.dir/src/Transpose.cu.o
[ 58%] Building CUDA object CMakeFiles/llm.dir/src/Transpose.cuh.o
[ 62%] Building CUDA object CMakeFiles/llm.dir/src/utils.cuh.o
In file included from /root/fideslib/examples/bert-tiny/src/utils.cu:2:
In file included from /root/fideslib/examples/bert-tiny/src/utils.cuh:9:
In file included from /usr/local/include/fideslib/CKKS/KeySwitchingKey.cuh:11:
In file included from /usr/local/include/fideslib/CKKS/RNSPoly.cuh:9:
In file included from /usr/local/include/fideslib/CKKS/LimbPartition.cuh:12:
In file included from /usr/local/include/fideslib/PeerUtils.cuh:17:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/atomic:14:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/__cuda/atomic.h:24:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/atomic:41:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/__atomic/wait/polling.h:27:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/detail/libcxx/include/__threading_support:24:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/chrono:26:
/usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/detail/libcxx/include/chrono:1099:5: error: too many arguments provided to function-like macro invocation
1099 | __enable_if_t<is_convertible<_Rep2, rep>::value
| ^
/usr/local/include/openfhe/core/utils/debug.h:198:9: note: macro 'duration' defined here
198 | #define duration(a) std::chrono::duration_cast<std::chrono::milliseconds>(a).count()
| ^
In file included from /root/fideslib/examples/bert-tiny/src/utils.cu:2:
In file included from /root/fideslib/examples/bert-tiny/src/utils.cuh:9:
In file included from /usr/local/include/fideslib/CKKS/KeySwitchingKey.cuh:11:
In file included from /usr/local/include/fideslib/CKKS/RNSPoly.cuh:9:
In file included from /usr/local/include/fideslib/CKKS/LimbPartition.cuh:12:
In file included from /usr/local/include/fideslib/PeerUtils.cuh:17:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/atomic:14:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/__cuda/atomic.h:24:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/atomic:41:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/__atomic/wait/polling.h:27:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/detail/libcxx/include/__threading_support:24:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/chrono:26:
/usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/detail/libcxx/include/chrono:1107:27: error: too many arguments provided to function-like macro invocation
1107 | const duration<_Rep2, _Period2>& __d,
| ^
/usr/local/include/openfhe/core/utils/debug.h:198:9: note: macro 'duration' defined here
198 | #define duration(a) std::chrono::duration_cast<std::chrono::milliseconds>(a).cIn file included from o/root/fideslib/examples/bert-tiny/src/utils.cuhu:n9t:
(In file included from )/usr/local/include/fideslib/CKKS/KeySwitchingKey.cuh:
11 :
| In file included from /usr/local/include/fideslib/CKKS/RNSPoly.cuh ^:
9:
In file included from /usr/local/include/fideslib/CKKS/LimbPartition.cuh:12:
In file included from /usr/local/include/fideslib/PeerUtils.cuh:17:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/atomic:14:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/__cuda/atomic.h:24:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/atomic:41:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/__atomic/wait/polling.h:27:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/detail/libcxx/include/__threading_support:24:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/chrono:26:
/usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/detail/libcxx/include/chrono:1099:5: error: too many arguments provided to function-like macro invocation
1099 | __enable_if_t<is_convertible<_Rep2, rep>::value
| ^
/usr/local/include/openfhe/core/utils/debug.h:198:9: note: macro 'duration' defined here
198 | #define duration(a) std::chrono::duration_cast<std::chrono::milliseconds>(a).count()
| ^
In file included from /root/fideslib/examples/bert-tiny/src/utils.cuh:9:
In file included from /usr/local/include/fideslib/CKKS/KeySwitchingKey.cuh:11:
In file included from /usr/local/include/fideslib/CKKS/RNSPoly.cuh:9:
In file included from /usr/local/include/fideslib/CKKS/LimbPartition.cuh:12:
In file included from /usr/local/include/fideslib/PeerUtils.cuh:17:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/atomic:14:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/__cuda/atomic.h:24:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/atomic:41:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/__atomic/wait/polling.h:27:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/detail/libcxx/include/__threading_support:24:
In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/chrono:26:
/usr/local/cuda/bin/../targets/x86_64-linux/include/cuda/std/detail/libcxx/include/chrono:1107:27: error: too many arguments provided to function-like macro invocation
1107 | const duration<_Rep2, _Period2>& __d,
| ^
/usr/local/include/openfhe/core/utils/debug.h:198:9: note: macro 'duration' defined here
198 | #define duration(a) std::chrono::duration_cast<std::chrono::milliseconds>(a).count()
| ^
2 errors generated.
2 errors generated.
gmake[2]: *** [CMakeFiles/llm.dir/build.make:259: CMakeFiles/llm.dir/src/utils.cuh.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[2]: *** [CMakeFiles/llm.dir/build.make:244: CMakeFiles/llm.dir/src/utils.cu.o] Error 1
[ 65%] Linking CXX static library ../../../lib/libgmock.a
[ 65%] Built target gmock
[ 68%] Building CXX object _deps/googletest-build/googlemock/CMakeFiles/gmock_main.dir/src/gmock_main.cc.o
[ 72%] Linking CXX static library ../../../lib/libgmock_main.a
[ 72%] Built target gmock_main
/usr/local/include/openfhe/pke/scheme/ckksrns/ckksrns-fhe.h(152): warning #68-D: integer conversion resulted in a change of sign
uint32_t modevallevels = -1) override;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/root/fideslib/examples/bert-tiny/src/MatMul.cu(144): error: class "FIDESlib::CKKS::Plaintext" has no member "multPt"
bias_masked.multPt(bias_masked, mask_row, true);
^
/root/fideslib/examples/bert-tiny/src/PolyApprox.cu(202): error: class "FIDESlib::CKKS::Plaintext" has no member "multPt"
weight_masked.multPt(weight, mask_row, true);
^
/root/fideslib/examples/bert-tiny/src/PolyApprox.cu(207): error: class "FIDESlib::CKKS::Plaintext" has no member "multPt"
bias_masked.multPt(bias, mask_row, true);
^
/root/fideslib/examples/bert-tiny/src/Inputs.cu(589): warning #940-D: missing return statement at end of non-void function "FIDESlib::CKKS::CreateHeadMask"
}
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
2 errors detected in the compilation of "/root/fideslib/examples/bert-tiny/src/PolyApprox.cu".
1 error detected in the compilation of "/root/fideslib/examples/bert-tiny/src/MatMul.cu".
gmake[2]: *** [CMakeFiles/llm.dir/build.make:154: CMakeFiles/llm.dir/src/PolyApprox.cu.o] Error 2
gmake[2]: *** [CMakeFiles/llm.dir/build.make:124: CMakeFiles/llm.dir/src/MatMul.cu.o] Error 2
/root/fideslib/examples/bert-tiny/src/Transformer.cu(75): error: class "FIDESlib::CKKS::Plaintext" has no member "multPt"
double_mask.multPt(double_mask, masks.head_masks[0], true);
^
1 error detected in the compilation of "/root/fideslib/examples/bert-tiny/src/Transformer.cu".
gmake[2]: *** [CMakeFiles/llm.dir/build.make:184: CMakeFiles/llm.dir/src/Transformer.cu.o] Error 2
/usr/local/include/openfhe/pke/scheme/ckksrns/ckksrns-fhe.h(152): warning #68-D: integer conversion resulted in a change of sign
uint32_t modevallevels = -1) override;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/root/fideslib/examples/bert-tiny/src/Inputs.cu(589): warning #940-D: missing return statement at end of non-void function "FIDESlib::CKKS::CreateHeadMask"
}
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h(304): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILParamsImpl<IntType>::operator== [with IntType=lbcrypto::NativeInteger]" (declared at line 128 of /usr/local/include/openfhe/core/lattice/hal/default/ilparams.h)
if (*m_params[i] != *(dcrtParams.m_params[i]))
^
detected during:
instantiation of "__nv_bool lbcrypto::ILDCRTParams<IntType>::operator==(const lbcrypto::ElemParams<IntType> &) const [with IntType=M4Integer]" at line 117
instantiation of class "lbcrypto::ILDCRTParams<IntType> [with IntType=M4Integer]" at line 117
instantiation of "lbcrypto::ILDCRTParams<IntType>::ILDCRTParams(uint32_t, uint32_t, uint32_t) [with IntType=M4Integer]" at line 97 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h
instantiation of "auto std::construct_at(_Tp *, _Args &&...)->decltype((<expression>)) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 518 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h
instantiation of "void std::allocator_traits<std::allocator<_Tp>>::construct(std::allocator_traits<std::allocator<_Tp>>::allocator_type &, _Up *, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Up=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 520 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Lp=__gnu_cxx::_S_atomic, _Args=<>]" at line 651 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_count<_Lp>::__shared_count(_Tp *&, std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Lp=__gnu_cxx::_S_atomic, _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 1343 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Lp=__gnu_cxx::_S_atomic, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 410 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 863 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::allocate_shared<_Tp,_Alloc,_Args...>(const _Alloc &, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 879 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::make_shared<_Tp,_Args...>(_Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 396 of /usr/local/include/openfhe/core/lattice/hal/default/dcrtpoly.h
/usr/local/include/openfhe/pke/schemebase/base-cryptoparameters.h(218): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILDCRTParams<IntType>::operator== [with IntType=M4Integer]" (declared at line 288 of /usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h)
return (*m_encodingParams == *(rhs.m_encodingParams) && *m_params == *(rhs.m_params));
^
detected during instantiation of "__nv_bool lbcrypto::CryptoParametersBase<Element>::CompareTo(const lbcrypto::CryptoParametersBase<Element> &) const [with Element=lbcrypto::DCRTPoly]"
/usr/local/include/openfhe/pke/scheme/ckksrns/ckksrns-fhe.h(152): warning #68-D: integer conversion resulted in a change of sign
uint32_t modevallevels = -1) override;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h(304): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILParamsImpl<IntType>::operator== [with IntType=lbcrypto::NativeInteger]" (declared at line 128 of /usr/local/include/openfhe/core/lattice/hal/default/ilparams.h)
if (*m_params[i] != *(dcrtParams.m_params[i]))
^
detected during:
instantiation of "__nv_bool lbcrypto::ILDCRTParams<IntType>::operator==(const lbcrypto::ElemParams<IntType> &) const [with IntType=M4Integer]" at line 117
instantiation of class "lbcrypto::ILDCRTParams<IntType> [with IntType=M4Integer]" at line 117
instantiation of "lbcrypto::ILDCRTParams<IntType>::ILDCRTParams(uint32_t, uint32_t, uint32_t) [with IntType=M4Integer]" at line 97 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h
instantiation of "auto std::construct_at(_Tp *, _Args &&...)->decltype((<expression>)) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 518 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h
instantiation of "void std::allocator_traits<std::allocator<_Tp>>::construct(std::allocator_traits<std::allocator<_Tp>>::allocator_type &, _Up *, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Up=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 520 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Lp=__gnu_cxx::_S_atomic, _Args=<>]" at line 651 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_count<_Lp>::__shared_count(_Tp *&, std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Lp=__gnu_cxx::_S_atomic, _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 1343 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Lp=__gnu_cxx::_S_atomic, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 410 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 863 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::allocate_shared<_Tp,_Alloc,_Args...>(const _Alloc &, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 879 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::make_shared<_Tp,_Args...>(_Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 396 of /usr/local/include/openfhe/core/lattice/hal/default/dcrtpoly.h
/root/fideslib/examples/bert-tiny/src/Inputs.cu(589): warning #940-D: missing return statement at end of non-void function "FIDESlib::CKKS::CreateHeadMask"
}
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/local/include/openfhe/pke/schemebase/base-cryptoparameters.h(218): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILDCRTParams<IntType>::operator== [with IntType=M4Integer]" (declared at line 288 of /usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h)
return (*m_encodingParams == *(rhs.m_encodingParams) && *m_params == *(rhs.m_params));
^
detected during instantiation of "__nv_bool lbcrypto::CryptoParametersBase<Element>::CompareTo(const lbcrypto::CryptoParametersBase<Element> &) const [with Element=lbcrypto::DCRTPoly]"
/usr/local/include/openfhe/pke/scheme/ckksrns/ckksrns-fhe.h(152): warning #68-D: integer conversion resulted in a change of sign
uint32_t modevallevels = -1) override;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h(304): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILParamsImpl<IntType>::operator== [with IntType=lbcrypto::NativeInteger]" (declared at line 128 of /usr/local/include/openfhe/core/lattice/hal/default/ilparams.h)
if (*m_params[i] != *(dcrtParams.m_params[i]))
^
detected during:
instantiation of "__nv_bool lbcrypto::ILDCRTParams<IntType>::operator==(const lbcrypto::ElemParams<IntType> &) const [with IntType=M4Integer]" at line 117
instantiation of class "lbcrypto::ILDCRTParams<IntType> [with IntType=M4Integer]" at line 117
instantiation of "lbcrypto::ILDCRTParams<IntType>::ILDCRTParams(uint32_t, uint32_t, uint32_t) [with IntType=M4Integer]" at line 97 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h
instantiation of "auto std::construct_at(_Tp *, _Args &&...)->decltype((<expression>)) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 518 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h
instantiation of "void std::allocator_traits<std::allocator<_Tp>>::construct(std::allocator_traits<std::allocator<_Tp>>::allocator_type &, _Up *, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Up=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 520 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Lp=__gnu_cxx::_S_atomic, _Args=<>]" at line 651 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_count<_Lp>::__shared_count(_Tp *&, std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Lp=__gnu_cxx::_S_atomic, _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 1343 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Lp=__gnu_cxx::_S_atomic, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 410 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 863 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::allocate_shared<_Tp,_Alloc,_Args...>(const _Alloc &, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 879 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::make_shared<_Tp,_Args...>(_Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 396 of /usr/local/include/openfhe/core/lattice/hal/default/dcrtpoly.h
/usr/local/include/openfhe/pke/schemebase/base-cryptoparameters.h(218): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILDCRTParams<IntType>::operator== [with IntType=M4Integer]" (declared at line 288 of /usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h)
return (*m_encodingParams == *(rhs.m_encodingParams) && *m_params == *(rhs.m_params));
^
detected during instantiation of "__nv_bool lbcrypto::CryptoParametersBase<Element>::CompareTo(const lbcrypto::CryptoParametersBase<Element> &) const [with Element=lbcrypto::DCRTPoly]"
/root/fideslib/examples/bert-tiny/src/Inputs.cu(589): warning #940-D: missing return statement at end of non-void function "FIDESlib::CKKS::CreateHeadMask"
}
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/local/include/openfhe/pke/scheme/ckksrns/ckksrns-fhe.h(152): warning #68-D: integer conversion resulted in a change of sign
uint32_t modevallevels = -1) override;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h(304): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILParamsImpl<IntType>::operator== [with IntType=lbcrypto::NativeInteger]" (declared at line 128 of /usr/local/include/openfhe/core/lattice/hal/default/ilparams.h)
if (*m_params[i] != *(dcrtParams.m_params[i]))
^
detected during:
instantiation of "__nv_bool lbcrypto::ILDCRTParams<IntType>::operator==(const lbcrypto::ElemParams<IntType> &) const [with IntType=M4Integer]" at line 117
instantiation of class "lbcrypto::ILDCRTParams<IntType> [with IntType=M4Integer]" at line 117
instantiation of "lbcrypto::ILDCRTParams<IntType>::ILDCRTParams(uint32_t, uint32_t, uint32_t) [with IntType=M4Integer]" at line 97 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h
instantiation of "auto std::construct_at(_Tp *, _Args &&...)->decltype((<expression>)) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 518 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h
instantiation of "void std::allocator_traits<std::allocator<_Tp>>::construct(std::allocator_traits<std::allocator<_Tp>>::allocator_type &, _Up *, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Up=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 520 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Lp=__gnu_cxx::_S_atomic, _Args=<>]" at line 651 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_count<_Lp>::__shared_count(_Tp *&, std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Lp=__gnu_cxx::_S_atomic, _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 1343 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Lp=__gnu_cxx::_S_atomic, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 410 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 863 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::allocate_shared<_Tp,_Alloc,_Args...>(const _Alloc &, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 879 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::make_shared<_Tp,_Args...>(_Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 396 of /usr/local/include/openfhe/core/lattice/hal/default/dcrtpoly.h
/usr/local/include/openfhe/pke/schemebase/base-cryptoparameters.h(218): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILDCRTParams<IntType>::operator== [with IntType=M4Integer]" (declared at line 288 of /usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h)
return (*m_encodingParams == *(rhs.m_encodingParams) && *m_params == *(rhs.m_params));
^
detected during instantiation of "__nv_bool lbcrypto::CryptoParametersBase<Element>::CompareTo(const lbcrypto::CryptoParametersBase<Element> &) const [with Element=lbcrypto::DCRTPoly]"
/root/fideslib/examples/bert-tiny/src/Inputs.cu(589): warning #940-D: missing return statement at end of non-void function "FIDESlib::CKKS::CreateHeadMask"
}
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/local/include/openfhe/pke/scheme/ckksrns/ckksrns-fhe.h(152): warning #68-D: integer conversion resulted in a change of sign
uint32_t modevallevels = -1) override;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h(304): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILParamsImpl<IntType>::operator== [with IntType=lbcrypto::NativeInteger]" (declared at line 128 of /usr/local/include/openfhe/core/lattice/hal/default/ilparams.h)
if (*m_params[i] != *(dcrtParams.m_params[i]))
^
detected during:
instantiation of "__nv_bool lbcrypto::ILDCRTParams<IntType>::operator==(const lbcrypto::ElemParams<IntType> &) const [with IntType=M4Integer]" at line 117
instantiation of class "lbcrypto::ILDCRTParams<IntType> [with IntType=M4Integer]" at line 117
instantiation of "lbcrypto::ILDCRTParams<IntType>::ILDCRTParams(uint32_t, uint32_t, uint32_t) [with IntType=M4Integer]" at line 97 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h
instantiation of "auto std::construct_at(_Tp *, _Args &&...)->decltype((<expression>)) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 518 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h
instantiation of "void std::allocator_traits<std::allocator<_Tp>>::construct(std::allocator_traits<std::allocator<_Tp>>::allocator_type &, _Up *, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Up=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 520 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Lp=__gnu_cxx::_S_atomic, _Args=<>]" at line 651 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_count<_Lp>::__shared_count(_Tp *&, std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Lp=__gnu_cxx::_S_atomic, _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 1343 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h
instantiation of "std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Lp=__gnu_cxx::_S_atomic, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 410 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Alloc>, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 863 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::allocate_shared<_Tp,_Alloc,_Args...>(const _Alloc &, _Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Alloc=std::allocator<lbcrypto::ILDCRTParams<M4Integer>>, _Args=<>]" at line 879 of /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr.h
instantiation of "std::shared_ptr<_Tp> std::make_shared<_Tp,_Args...>(_Args &&...) [with _Tp=lbcrypto::ILDCRTParams<M4Integer>, _Args=<>]" at line 396 of /usr/local/include/openfhe/core/lattice/hal/default/dcrtpoly.h
/usr/local/include/openfhe/pke/schemebase/base-cryptoparameters.h(218): warning #3133-D: comparison is ambiguous in standard C++20 because the implied comparison operator with reversed parameters is an equally good match -- this is usually caused by a missing "const" qualifier on the comparison operator; see "lbcrypto::ILDCRTParams<IntType>::operator== [with IntType=M4Integer]" (declared at line 288 of /usr/local/include/openfhe/core/lattice/hal/default/ildcrtparams.h)
return (*m_encodingParams == *(rhs.m_encodingParams) && *m_params == *(rhs.m_params));
^
detected during instantiation of "__nv_bool lbcrypto::CryptoParametersBase<Element>::CompareTo(const lbcrypto::CryptoParametersBase<Element> &) const [with Element=lbcrypto::DCRTPoly]"
/root/fideslib/examples/bert-tiny/src/Inputs.cu(589): warning #940-D: missing return statement at end of non-void function "FIDESlib::CKKS::CreateHeadMask"
}
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:14: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:32:11: note: move assignment operator of 'PtMasks_GPU' is implicitly deleted because field 'mask_max' has a deleted move assignment operator
32 | Plaintext mask_max;
| ^
/usr/local/include/fideslib/CKKS/Plaintext.cuh:40:1: note: copy assignment operator is implicitly deleted because 'Plaintext' has a user-declared move constructor
40 | Plaintext(Plaintext && pt) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:42: note: replace 'default' with 'delete'
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^~~~~~~
| delete
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:14: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:32:11: note: move assignment operator of 'PtMasks_GPU' is implicitly deleted because field 'mask_max' has a deleted move assignment operator
32 | Plaintext mask_max;
| ^
/usr/local/include/fideslib/CKKS/Plaintext.cuh:40:1: note: copy assignment operator is implicitly deleted because 'Plaintext' has a user-declared move constructor
40 | Plaintext(Plaintext && pt) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:42: note: replace 'default' with 'delete'
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^~~~~~~
| delete
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:14: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:32:11: note: move assignment operator of 'PtMasks_GPU' is implicitly deleted because field 'mask_max' has a deleted move assignment operator
32 | Plaintext mask_max;
| ^
/usr/local/include/fideslib/CKKS/Plaintext.cuh:40:1: note: copy assignment operator is implicitly deleted because 'Plaintext' has a user-declared move constructor
40 | Plaintext(Plaintext && pt) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:42: note: replace 'default' with 'delete'
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^~~~~~~
| delete
/usr/local/include/openfhe/core/utils/sertype.h:44:22: warning: variable 'JSON' is not needed and will not be emitted [-Wunneeded-internal-declaration]
44 | static const SERJSON JSON;
| ^~~~
1 warning generated.
1 warning generated.
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:14: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:32:11: note: move assignment operator of 'PtMasks_GPU' is implicitly deleted because field 'mask_max' has a deleted move assignment operator
32 | Plaintext mask_max;
| ^
/usr/local/include/fideslib/CKKS/Plaintext.cuh:40:1: note: copy assignment operator is implicitly deleted because 'Plaintext' has a user-declared move constructor
40 | Plaintext(Plaintext && pt) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:42: note: replace 'default' with 'delete'
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^~~~~~~
| delete
1 warning generated.
1 warning generated.
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:14: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:32:11: note: move assignment operator of 'PtMasks_GPU' is implicitly deleted because field 'mask_max' has a deleted move assignment operator
32 | Plaintext mask_max;
| ^
/usr/local/include/fideslib/CKKS/Plaintext.cuh:40:1: note: copy assignment operator is implicitly deleted because 'Plaintext' has a user-declared move constructor
40 | Plaintext(Plaintext && pt) = default;
| ^
/root/fideslib/examples/bert-tiny/src/Inputs.cuh:42:42: note: replace 'default' with 'delete'
42 | PtMasks_GPU &operator=(PtMasks_GPU &&) = default;
| ^~~~~~~
| delete
/root/fideslib/examples/bert-tiny/src/Inputs.cu:589:1: warning: non-void function does not return a value in all control paths [-Wreturn-type]
589 | }
| ^
1 warning generated.
2 warnings generated.
gmake[1]: *** [CMakeFiles/Makefile2:163: CMakeFiles/llm.dir/all] Error 2
gmake: *** [Makefile:101: all] Error 2
I’m trying to build the examples/bert-tiny example against the current FIDESlib installation. I was able to build and install FIDESlib itself, but the bert-tiny example fails during compilation. I think the example might not be in sync with the current FIDESlib / OpenFHE versions due to the following reasons:
1. Plaintext::multPt is used but not available in the current API
Several files in examples/bert-tiny call
FIDESlib::CKKS::Plaintext::multPt(...)Examples include:
• bert-tiny/src/MatMul.cu
• bert-tiny/src/PolyApprox.cu
• bert-tiny/src/Transformer.cu
However, in the current FIDESlib::CKKS::Plaintext implementation, multPt is not part of the public API (it appears commented out / disabled). As a result, the example fails with errors like:
error: class "FIDESlib::CKKS::Plaintext" has no member "multPt"This suggests the example code is written against an older version of the API.
2. OpenFHE macro collision (duration) breaks CUDA compilation
During compilation of the bert-tiny CUDA sources (e.g. utils.cu / utils.cuh), the build fails inside CUDA’s libc++ headers with errors like:
error: too many arguments provided to function-like macro invocationThe error points to a macro defined in OpenFHE:
#define duration(a) std::chrono::duration_cast<std::chrono::milliseconds>(a).count()which collides with std::chrono::duration<Rep, Period> used internally by CUDA’s implementation. This makes the example fail at compile time, even though FIDESlib itself builds successfully.
Below I provide the container setup and the compilation trace of the example.
Container
• Based on Dockerfile.NVIDIA (with HIP/AMD steps removed)
• CUDA toolkit: 12.6
• Compiler: clang 17
• Patched OpenFHE installed system-wide
• FIDESlib builds and installs successfully
This is the trace of the compilation step and the error: