-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Enablement of onnxruntime for AIX and fixing issues related to big-endian platform. #21133
Conversation
/azp run Android CI Pipeline,iOS CI Pipeline,ONNX Runtime React Native CI Pipeline |
Azure Pipelines successfully started running 3 pipeline(s). |
/azp run Windows ARM64 QNN CI Pipeline,Windows x64 QNN CI Pipeline,Windows CPU CI Pipeline,Windows GPU CI Pipeline,Windows GPU TensorRT CI Pipeline,ONNX Runtime Web CI Pipeline,Linux CPU CI Pipeline,Linux CPU Minimal Build E2E CI Pipeline,Linux GPU CI Pipeline,Linux GPU TensorRT CI Pipeline |
/azp run Linux OpenVINO CI Pipeline,Linux QNN CI Pipeline,MacOS CI Pipeline,orttraining-amd-gpu-ci-pipeline,orttraining-linux-ci-pipeline,orttraining-linux-gpu-ci-pipeline,orttraining-ortmodule-distributed,onnxruntime-binary-size-checks-ci-pipeline,Big Models,Linux Android Emulator QNN CI Pipeline |
/azp run Android CI Pipeline,iOS CI Pipeline,ONNX Runtime React Native CI Pipeline |
Azure Pipelines successfully started running 3 pipeline(s). |
Azure Pipelines successfully started running 10 pipeline(s). |
Azure Pipelines successfully started running 10 pipeline(s). |
@tianleiwu |
Done. |
@yihonglyu, @liqunfu please take a look at mlas changes. |
Still , it's failing. Could you please re-run. |
thanks @tianleiwu for the approval. @yihonglyu, @liqunfu We are targeting to merge this PR in upcoming v1.19, so requesting you to complete the review/approval for mlas changes before tentatively feature complete date July 19 . Thank you in Advance. |
What linker is used on AIX? It doesn't support hiding private symbols? |
@snnn |
Thanks @tianleiwu @snnn @liqunfu @yihonglyu for providing suggestion/help on this issue/PR. |
Is there any public document I can take a look? |
https://www.ibm.com/docs/en/aix/7.3?topic=l-ld-command This is AIX linker man page. For reference, I am adding link.txt generated by cmake for onnxruntime library. In this file, we can see, cmake first creates exports.exp, then this file is passed to linker. |
So https://github.com/microsoft/onnxruntime/blob/main/tools/ci_build/gen_def.py should be extended to support this new format. |
Yes . This script needs some changes for AIX support. |
Description
Enablement of onnxruntime for AIX and fixing issues related to big-endian platform.
Motivation and Context
changes in this PR contains:
Below are list of files and the description about the change.
[BUILDING on AIX issue] check for "IBMClang" is added for handling -Wno-unused-parameter
[BUILDING on AIX issue]Enabling gtest_disable_pthreads for AIX
[BUILDING on AIX issue]
o Blocking codes for AIX which generates generated_source.c and further requires some symbol files.
o Putting NO AIX check for non-supported linker flags like --Xlinker
o iconv linking
[BUILDING on AIX issue]Putting NO AIX check for -Wl,-rpath='$ORIGIN'
[BUILDING on AIX issue]POWER10 releated macro/function definition .
[BUILDING on AIX issue]Putting NO AIX check for non-supported linker flags like --Xlinker
[BUILDING on AIX issue]
o Putting NO AIX check for non-supported linker flags like --Xlinker
o Adding required libraries for AIX linker under applicatiion like onnxruntime_shared_lib_test ,onnxruntime_logging_apis etc
[BUILDING on AIX issue] Handling of TypeCode in include/flatbuffers/flatbuffers.h under AIX + clang
[Big endian issue] Byte-Conversion handlling in compute() and getblock() routines
[Big endian issue] Handling of test failures . Byte swapping for quant_value.
[Big endian issue]
Implementation of SetRawDataInTensorProto , ConvertRawDataInTensorProto .
o SetRawDataInTensorProto : Wrapper for set_raw_data(). Calling ConvertRawDataInTensorProto() in big-endian system
o ConvertRawDataInTensorProto : function used mainly on big-endian system for byte-swapping of tensor raw_data
[Big endian issue]
Declaration of SetRawDataInTensorProto, ConvertRawDataInTensorProto
[Big endian issue]
o Call ConvertRawDataInTensorProto for SPARSE_TENSOR type
o Call ConvertRawDataInTensorProto for SaveToOrtFormat
[BUILDING on AIX issue] POWER10 released enablement for AIX
[BUILDING on AIX issue]Handling of __vector under AIX+clang
[BUILDING on AIX issue] Adding _AIX flag
[BUILDING on AIX issue] Handling of __vector under AIX+clang
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[BUILDING on AIX issue] Moving to normal function call, instead of template
[BUILDING on AIX issue]Blocking syscall.h in AIX
[Big endian issue] Removing ORT_RETURN_IF_NOT, FLATBUFFERS_LITTLEENDIAN
[Big endian issue] Call ConvertRawDataInTensorProto in CreateInitializer and ExternalWriteReadWithLoadInitializers
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Helper method ConvertEndianessForVector and call this from required place.
o. [BUILDING on AIX issue] Handling of getcwd for AIX
o. [Big endian issue] Bytes Swapping in run_external_data_test
[Big endian issue] including for AIX
[Big endian issue] Bytes swapping in UnpackTensorWithRawData
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[Big endian issue] Use util function SetRawDataInTensorProto, instead of set_raw_data
[BUILDING on AIX issue] Adding AIX check in MultinomialGoodCase