tensorflow [RISCV64] 无法将软浮点模块与双浮点模块链接

px9o7tmv  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(105)
  1. 是否有其他方法解决这个问题?

可以尝试在llvm-config的路径下创建一个名为llvm-config.cfg的配置文件,然后在其中添加以下内容:

[Target.RISCV]
ABIName = "lp64d"

这将为RISC-V目标设置默认的双浮点ABI。然后,确保在运行TensorFlow时使用正确的llvm-config路径。例如,如果llvm-config位于/opt/llvm/bin,则可以在运行TensorFlow之前设置环境变量LLVM_CONFIG_PATH:

export LLVM_CONFIG_PATH=/opt/llvm/bin
  1. 如何修复:执行genrule //tensorflow/python/tools:aot_compiled_x_matmul_y_small_gen失败

请检查生成规则中的错误信息,并根据错误提示进行相应的修复。可能需要更新代码中的某些部分,以便正确处理生成的中间表示。

  1. 如何修复:分析目标xxx时遇到错误

同样,请检查与目标相关的日志输出,查找错误信息并进行相应的修复。可能需要更新代码中的某些部分,以便正确处理生成的中间表示。

xpszyzbs

xpszyzbs1#

这个问题是由于软浮点和双浮点ABI不兼容导致的。由于ABI之间的不兼容性,如果你尝试将软浮点模块与双浮点模块链接在一起,链接器将无法解析这两个模块之间的符号。这将导致这个错误。请尝试使用相同的浮点ABI编译所有模块,以避免这个问题。谢谢!

bqujaahr

bqujaahr2#

这个问题是由于软浮点和双浮点ABI不兼容导致的。由于这两个ABI之间的不兼容性,如果你尝试将软浮点模块与双浮点模块链接在一起,链接器将无法解析两个模块之间的符号。这将导致这个错误。请尝试使用相同的浮点ABI编译所有模块以避免这个问题。谢谢!

感谢你的回复。
我已经在打开这个问题之前找到了根本原因,并有一个快速的解决方案。
我的问题是:

  1. 还有其他方法可以解决这个问题吗?
    我在saved_model_cli.py和saved_model_aot_compile.py中没有找到从llvm传递abi信息的方法(也许是"target_features"选项?),或者我在测试目标//tensorflow/python/...方面漏掉了什么?
  2. 如何修复:执行genrule //tensorflow/python/tools:aot_compiled_x_matmul_y_small_gen失败
  3. 如何修复:在分析目标xxx时遇到错误
    也许你可以在这里看一眼
yb3bgrhw

yb3bgrhw3#

请查看以下解决方法如下:

  1. 是的,您可以通过在 saved_model_cli.py 和 saved_model_aot_compile.py 中使用 target_features 选项将 ABI 信息传递给 llvm。target_features 选项允许您指定用于编译已保存模型的浮点 ABI。
  2. 确保 AOT-编译的 XMatMulYSmall genrule 在您的平台上受支持。您可以通过运行以下命令来检查这一点:
python -m tensorflow.python.tools.aot_genrule_compiler --list_genrules
  1. 确保正确定义了目标 xxx。您可以通过运行以下命令来检查这一点:
bazel query 'kind(rule, xxx)'

谢谢!

mum43rcc

mum43rcc4#

感谢您的回复!请查看以下解决方法:

  1. 是的,您可以通过在 saved_model_cli.py 和 saved_model_aot_compile.py 中使用 target_features 选项将 ABI 信息传递给 llvm。target_features 选项允许您指定用于编译已保存模型的浮点 ABI。
  2. 请确保 AOT-compiled XMatMulYSmall genrule 在您的平台上受支持。您可以通过运行以下命令来检查这一点:
python -m tensorflow.python.tools.aot_genrule_compiler --list_genrules
  1. 请确保正确定义了目标 xxx。您可以通过运行以下命令来检查这一点:
bazel query 'kind(rule, xxx)'

谢谢!
@sushreebarsa 非常感谢。
我已经尝试了您的解决方法(基于 v2.13.1):

  1. 根据 "target_features" 的描述,可以将特征(如 "+avx2"、"+neon")传递给 llvm 目标特性,但它似乎与 "-mabi=lp64d"、"+mabi=lp64d" 或 "lp64d" 不起作用。那么,我应该使用哪个特性字符串来将浮点 ABI 传递给 llvm?您能给我一个示例吗?
'lp64d' is not a recognized feature for this target (ignoring feature)
  1. 没有名为 tensorflow.python.tools.aot_genrule_compiler 的模块
  2. 尝试使用目标 '//tensorflow/python/kernel_tests/math_ops:batch_matmul_op_test_cpu',目标似乎定义得很好:
bazel --output_user_root=$(pwd)/workspace query 'kind(rule,//tensorflow/python/kernel_tests/math_ops:batch_matmul_op_test_cpu)'
Starting local Bazel server and connecting to it...
... still trying to connect to local Bazel server (195) after 10 seconds ...
//tensorflow/python/kernel_tests/math_ops:batch_matmul_op_test_cpu
Loading: 1 packages loaded

相关问题