Comments (21)
I know. I mean is that in our roadmap? what is the expectation of
later
?I'm actually trying now.
There are just too many missing pieces on arm64 Centos7.
Out of curious, can you provide glibc version ofLinux Kylin 10 sp3
? You can get it by runningldd --version
I'm seriously consider raise glibc requirement for arm64 Linux...kylin 10 is basically a wrapped centos 8, so glibc is 2.28 and libstdc++ is 6.0.24, raise it from centos 7 to centos 8 looks good to me.
stay tune, won't be a long wait :D
from spu.
I tried other protocols and it seems okay, but there is another error:
error channel.h:~ChannelBase:112 ChannelBase destructor is called before WaitLinkTaskFinish, try stop send thread
Have I configured something wrong? I think the same code is working well on x86_64.
Ignore this error for now, it should be a warn.
And this warn is due to the change in the behavior of the internal network interface: stop_link needs to be called before destroy it. But it should not cause any trouble, and we will fix it.
from spu.
Hi @lidh15
We do not have a Linux arm64 build for now, but we can try to provide later.
Thanks
from spu.
I know.
I mean is that in our roadmap? what is the expectation of later
?
from spu.
I know. I mean is that in our roadmap? what is the expectation of
later
?
I'm actually trying now.
There are just too many missing pieces on arm64 Centos7.
Out of curious, can you provide glibc version of Linux Kylin 10 sp3
? You can get it by running ldd --version
I'm seriously consider raise glibc requirement for arm64 Linux...
from spu.
I know. I mean is that in our roadmap? what is the expectation of
later
?I'm actually trying now.
There are just too many missing pieces on arm64 Centos7.
Out of curious, can you provide glibc version of
Linux Kylin 10 sp3
? You can get it by runningldd --version
I'm seriously consider raise glibc requirement for arm64 Linux...
kylin 10 is basically a wrapped centos 8, so glibc is 2.28 and libstdc++ is 6.0.24, raise it from centos 7 to centos 8 looks good to me.
from spu.
Hi @lidh15
Just got an experimental build, unfortunately we do not have a native Linux arm machine to test everything, so there might be some surprises.
Can you try this build and let me know if anything does not work properly on your end?
link here
from spu.
Hi @lidh15
Just got an experimental build, unfortunately we do not have a native Linux arm machine to test everything, so there might be some surprises.
Can you try this build and let me know if anything does not work properly on your end?
link here
Okay I'm working on it, but the first thing is that jaxlib doesn't provide with arm64 wheel.
Though it is said that we can build from source to use jaxlib, it is still a big obstacle for spu users...
from spu.
Hi @lidh15
Just got an experimental build, unfortunately we do not have a native Linux arm machine to test everything, so there might be some surprises.
Can you try this build and let me know if anything does not work properly on your end?
link hereOkay I'm working on it, but the first thing is that jaxlib doesn't provide with arm64 wheel. Though it is said that we can build from source to use jaxlib, it is still a big obstacle for spu users...
Jax has an open issue here
Linux arm still has a long way to go, our ci provider circleci has no Linux arm docker executor as well...
from spu.
we built arm64 jax 0.4.8 and run spu based on that, unfortunately, yacl brpc is not working:
stacktrace:
#0 yacl::link::Context::ConnectToMesh()+0xfffbd6d4e7c4
#1 spu::BindLink()::{lambda()#18}::operator()()+0xfffbd3839c00
#2 pybind11::detail::argument_loader<>::call_impl<>()+0xfffbd3847b04
#3 _ZNO8pybind116detail15argument_loaderIJRKN4yacl4link11ContextDescEmEE4callISt10shared_ptrINS3_7ContextEENS0_9void_typeERZN3spu8BindLinkERNS_7module_EEUlS6_mE16_EENSt9enable_ifIXntsrSt7is_voidIT_E5valueESK_E4typeEOT1_+0xfffbd384652c
#4 pybind11::cpp_function::initialize<>()::{lambda()#3}::operator()()+0xfffbd384380c
#5 pybind11::cpp_function::initialize<>()::{lambda()#3}::_FUN()+0xfffbd38438a4
#6 pybind11::cpp_function::dispatcher()+0xfffbd385d9b4
#7 PyCFunction_Call+0xfffc13e82ea4
#8 __Pyx_PyObject_Call+0xfffbdba42348
#9 __pyx_pf_19unbalanced_ecdh_psi_15EcdhOprfPsiBase_2setup_link+0xfffbdba25e84
#10 __pyx_pw_19unbalanced_ecdh_psi_15EcdhOprfPsiBase_3setup_link+0xfffbdba22850
#11 __Pyx_CyFunction_CallMethod+0xfffc06a53550
#12 __Pyx_CyFunction_Call+0xfffc06a53634
#13 __Pyx_CyFunction_CallAsMethod+0xfffc06a537ac
#14 __Pyx_PyObject_Call+0xfffbdba42348
#15 __Pyx__PyObject_CallOneArg+0xfffbdba435bc
shall I report this issue to YACL repo?
from spu.
we built arm64 jax 0.4.8 and run spu based on that, unfortunately, yacl brpc is not working:
stacktrace: #0 yacl::link::Context::ConnectToMesh()+0xfffbd6d4e7c4 #1 spu::BindLink()::{lambda()#18}::operator()()+0xfffbd3839c00 #2 pybind11::detail::argument_loader<>::call_impl<>()+0xfffbd3847b04 #3 _ZNO8pybind116detail15argument_loaderIJRKN4yacl4link11ContextDescEmEE4callISt10shared_ptrINS3_7ContextEENS0_9void_typeERZN3spu8BindLinkERNS_7module_EEUlS6_mE16_EENSt9enable_ifIXntsrSt7is_voidIT_E5valueESK_E4typeEOT1_+0xfffbd384652c #4 pybind11::cpp_function::initialize<>()::{lambda()#3}::operator()()+0xfffbd384380c #5 pybind11::cpp_function::initialize<>()::{lambda()#3}::_FUN()+0xfffbd38438a4 #6 pybind11::cpp_function::dispatcher()+0xfffbd385d9b4 #7 PyCFunction_Call+0xfffc13e82ea4 #8 __Pyx_PyObject_Call+0xfffbdba42348 #9 __pyx_pf_19unbalanced_ecdh_psi_15EcdhOprfPsiBase_2setup_link+0xfffbdba25e84 #10 __pyx_pw_19unbalanced_ecdh_psi_15EcdhOprfPsiBase_3setup_link+0xfffbdba22850 #11 __Pyx_CyFunction_CallMethod+0xfffc06a53550 #12 __Pyx_CyFunction_Call+0xfffc06a53634 #13 __Pyx_CyFunction_CallAsMethod+0xfffc06a537ac #14 __Pyx_PyObject_Call+0xfffbdba42348 #15 __Pyx__PyObject_CallOneArg+0xfffbdba435bc
shall I report this issue to YACL repo?
Can you provide repro steps?
from spu.
well, it was my fault that I didn't configure the link address correctly, now the story is:
terminate called after throwing an instance of 'yacl::EnforceNotMet'
what(): [Enforce fail at libspu/psi/core/ecdh_oprf/basic_ecdh_oprf.cc:262] (status). fourq ecc_mul error, status = false
Stacktrace:
#0 spu::psi::(anonymous namespace)::FourQPointMul()+0xfffbc63dc60c
#1 spu::psi::FourQBasicEcdhOprfServer::SimpleEvaluate[abi:cxx11]()+0xfffbc63dc838
#2 spu::psi::EcdhOprfPsiServer::FullEvaluate()+0xfffbc63d216c
#3 (unknown)+0xfffbc2fc5930
#4 (unknown)+0xfffc038388cc
what I'm doing is like:
conf = spu.psi.BucketPsiConfig(
psi_type=spu.psi.PsiType.Value('ECDH_OPRF_UB_PSI_2PC_OFFLINE'),
bucket_size=int(5e7),
curve_type=spu.psi.CurveType.CURVE_FOURQ,
# and some data IO configs...
)
spu.psi.bucket_psi(some_link, conf)
from spu.
ecc_mul
thanks for repro steps, will take a look :D
from spu.
ecc_mul
thanks for repro steps, will take a look :D
I looked into microsoft 4qlib and I found tons of stuffs around ARM... there are many implementations for ecc_mul
and I'm not sure about which one was called.
maybe there are other curve choices for ECDH_OPRF_UB_PSI_2PC_OFFLINE
?
from spu.
ecc_mul
thanks for repro steps, will take a look :D
I looked into microsoft 4qlib and I found tons of stuffs around ARM... there are many implementations for
ecc_mul
and I'm not sure about which one was called.maybe there are other curve choices for
ECDH_OPRF_UB_PSI_2PC_OFFLINE
?
SPU is using fourq provided by apsi
from spu.
I found these guys here, are they all useable in bucket_psi? how are they different from each other in speed?
from spu.
I tried other protocols and it seems okay, but there is another error:
error channel.h:~ChannelBase:112 ChannelBase destructor is called before WaitLinkTaskFinish, try stop send thread
Have I configured something wrong? I think the same code is working well on x86_64.
from spu.
I found these guys here, are they all useable in bucket_psi? how are they different from each other in speed?
@zhanglei486 Can you take a look?
from spu.
I tried other protocols and it seems okay, but there is another error:
error channel.h:~ChannelBase:112 ChannelBase destructor is called before WaitLinkTaskFinish, try stop send thread
Have I configured something wrong? I think the same code is working well on x86_64.
@warriorpaw any idea? Looks like a brpc bug?
from spu.
cool! then I think the only concern in our arm64 PSI use case is FourQ not working
from spu.
I found these guys here, are they all useable in bucket_psi? how are they different from each other in speed?
@zhanglei486 Can you take a look?
benchmark of ecdh-psi using 25519 curve, please reference:
(https://www.secretflow.org.cn/docs/spu/latest/en-US/development/psi)
on Intel Xeon Gen2 platform , ecdh-psi using fourq is the fast, fourq > 25519 >> sm2 = 256k1
on Intel Xeon Gen3(support AVX512-IFMA ) platform , ecdh-psi using 25519 is the fast, 25519 > fourq >> sm2 = 256k1
from spu.
Related Issues (20)
- 使用 SPU 计算 ANOVA F 统计量 HOT 4
- 使用 SPU 实现 t-SNE 算法
- [Bug]: Pickle Can't get attribute 'ObjectRef' HOT 11
- [Bug]: bazel: could not resolve the version 'latest' to an actual version number: unable to determine latest version ... HOT 10
- [Question]: unstable performance for basic operations in ABY3 HOT 4
- [Bug]: spu 使用GCC 13编译时出错 HOT 2
- [Bug]: compile failed HOT 1
- SPU的编译环境 HOT 2
- [Feature]: flax_gpt2 inference using FM32 secret sharing HOT 4
- How to get the communication volume and how to evaluate individual DNN layer? HOT 6
- [Question]: Are the plaintexts passed to AddPlainInplace in NTT form? HOT 3
- mac运行spu-psi_test中.so错误 HOT 12
- How to use SPU to evaluate private models in 2PC setting with only one machine? HOT 14
- [Bug]: One more minus sign HOT 2
- [Bug]: Package 'examples/python/ml/my_custom_file' contains errors HOT 10
- [Bug]: The critical condition judgment is wrong HOT 5
- [Bug]: Error when trying to benchmark SPU latency in 2PC setting. HOT 3
- another case where secret indexing doesn't seem to work HOT 2
- [Bug]: 8x communication compared to reported in Cheetah HOT 5
- [Operation Question] How to separate truncation and matmul operations HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spu.