-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【PIR OpTest Fix No.22】 fix test_elementwise_sub_op #62970
【PIR OpTest Fix No.22】 fix test_elementwise_sub_op #62970
Conversation
你的PR提交成功,感谢你对开源项目的贡献! |
这里怀疑是单测的问题,可以对比一下test/legacy_test/test_elementwise_sub_op.py和test/legacy_test/test_elementwise_add_op.py在complex类型上的测试逻辑是否一致@Eddie-Wang1120 |
如果需要打印C++报错栈,可以尝试 export FLAGS_call_stack_level=2 |
好嘞好嘞我检查一下 |
好的好的我试一下然后试着找一下错误原因 |
交换测试文件中虚数实数位置可以通过单侧,也即实数减虚数无法通过(纯比较output结果数值可以通过),虚数减实数可以通过。造成该问题的原因应该是elementsub算子推理出的out的type是错误的(应该?)(应为complex128实为float64),所以导致后面的mean操作中使用out作为输入时type不匹配,造成报错。但奇怪的是旧ir的计算图的out即为float64,且结果正确,并且新ir的elementwiseinfermeta方法中的promotetypes推理出的out类型就是complex128,但实际计算图打印的却为float64,属实非常奇怪。想请问一下目前这种情况可以算单侧通过吗,不能的话我再找一下原因。 |
看了一下,现在的问题不是单测造成的。新ir的elementwiseinfermeta方法中的promotetypes推理出的out类型就是complex128,但实际计算图打印的却为float64的原因是新ir下的计算图是直接翻译旧IR下的计算图得到的,所以才会为float64。旧IR下能成功执行的原因猜测可能是他并没有依赖静态图中的信息,而是依赖了实际数据中的信息? 类似于#58379中的这个问题。这里当时遇到的问题是旧IR下静态图组网时候声明的数据类型为float32,但是数据传入的确实float64,造成新IR选出的Kernel和实际数据类型不匹配,但是旧IR下根据数据本身的类型去选Kernel,所以可以正确执行。这里感兴趣的话可以分析一下。如果是这个原因引起的话,这个算子的修复可能要设置特殊的翻译规则,需要和研发老师确认一下。 |
了解了,非常感谢,我再仔细分析一下 |
这里新旧IR共用同一个infermeta函数,新IR推导正确,旧IR应该也正确推导才对。
整体上目前的分析挺好的,后续推荐按我上面说的整理一下,把每个步骤的现状都贴在评论里,这样可以节省下大家的沟通时间,更快的定位问题。 |
Sorry to inform you that fba474f's CIs have passed for more than 7 days. To prevent PR conflicts, you need to re-run all CIs manually. |
PR Category
Others
PR Types
Others
Description
PIR Op单测修复
修复单测
test_elementwise_sub_op
修复后打开
FLAGS_enable_pir_in_executor
单测是否通过:是报错函数:
报错信息:
这里的错误为type not match错误,错误发生在处理输出类型为complex128时的,但比较奇怪的点有以下几点:
疑问: