Skip to content

Commit fe3604a

Browse files
authored
Initial commit of AIX port (#1231)
This PR is for enabling AIX porting of onnxruntime_genai. Below are detailed info. - build.py Calling the util.is_aix() which is introduced for aix platform check - cmake/global_variables.cmake Updating the ONNXRUNTIME_LIB and adding check of CMAKE_SYSTEM_PROCESSOR - cmake/ortlib.cmake Setting onnxruntime header path for ORT_HEADER_DIR - examples/c/CMakeLists.txt Update for ONNXRUNTIME_GENAI_LIB and ONNXRUNTIME_GENAI_DEPENDENCY - tools/python/util/__init__.py import is_aix - tools/python/util/platform_helpers.py is_aix() for aix platform check.
1 parent ac01aa3 commit fe3604a

6 files changed

Lines changed: 19 additions & 3 deletions

File tree

build.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ def clean(args: argparse.Namespace, env: dict[str, str]):
644644

645645

646646
if __name__ == "__main__":
647-
if not (util.is_windows() or util.is_linux() or util.is_mac()):
647+
if not (util.is_windows() or util.is_linux() or util.is_mac() or util.is_aix()):
648648
raise OSError(f"Unsupported platform {sys.platform}.")
649649

650650
arguments = _parse_args()

cmake/global_variables.cmake

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,12 @@ elseif(APPLE)
5656
set(ONNXRUNTIME_PROVIDERS_ROCM_LIB "libonnxruntime_providers_rocm.dylib")
5757
endif()
5858
else()
59-
set(ONNXRUNTIME_LIB "libonnxruntime.so")
59+
#In AIX, only CPU inferencing is supported, so no need to update ONNXRUNTIME_PROVIDERS_CUDA_LIB and ONNXRUNTIME_PROVIDERS_ROCM_LIB
60+
if (CMAKE_SYSTEM_NAME MATCHES "AIX")
61+
set(ONNXRUNTIME_LIB "libonnxruntime.a")
62+
else()
63+
set(ONNXRUNTIME_LIB "libonnxruntime.so")
64+
endif()
6065
set(ONNXRUNTIME_PROVIDERS_CUDA_LIB "libonnxruntime_providers_cuda.so")
6166
set(ONNXRUNTIME_PROVIDERS_ROCM_LIB "libonnxruntime_providers_rocm.so")
6267
endif()
@@ -142,6 +147,8 @@ else()
142147
set(genai_target_platform "arm64")
143148
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64)$")
144149
set(genai_target_platform "x64")
150+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc")
151+
set(genai_target_platform "powerpc")
145152
else()
146153
message(FATAL_ERROR "Unsupported architecture. CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
147154
endif()

cmake/ortlib.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ if(ORT_HOME)
1212
elseif (IOS OR MAC_CATALYST)
1313
set(ORT_HEADER_DIR ${ORT_HOME}/Headers)
1414
set(ORT_LIB_DIR ${ORT_HOME}/)
15+
elseif (CMAKE_SYSTEM_NAME MATCHES "AIX")
16+
set(ORT_HEADER_DIR ${ORT_HOME}/include/onnxruntime)
17+
set(ORT_LIB_DIR ${ORT_HOME}/lib)
1518
else()
1619
set(ORT_HEADER_DIR ${ORT_HOME}/include)
1720
set(ORT_LIB_DIR ${ORT_HOME}/lib)

examples/c/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ if(WIN32)
2727
elseif(APPLE)
2828
set(ONNXRUNTIME_GENAI_LIB "libonnxruntime-genai.dylib")
2929
set(ONNXRUNTIME_GENAI_DEPENDENCY "*.dylib")
30+
elseif(CMAKE_SYSTEM_NAME MATCHES "AIX")
31+
set(ONNXRUNTIME_GENAI_LIB "libonnxruntime-genai.a")
32+
set(ONNXRUNTIME_GENAI_DEPENDENCY "*.a")
3033
else()
3134
set(ONNXRUNTIME_GENAI_LIB "libonnxruntime-genai.so")
3235
set(ONNXRUNTIME_GENAI_DEPENDENCY "*.so")

tools/python/util/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
from .logger import get_logger
55
from .run import run
66
from .android import *
7-
from .platform_helpers import is_linux, is_mac, is_windows
7+
from .platform_helpers import is_linux, is_mac, is_windows, is_aix
88
from .dependency_resolver import download_dependencies, copy_dependencies

tools/python/util/platform_helpers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,6 @@ def is_mac():
1414

1515
def is_linux():
1616
return sys.platform.startswith("linux")
17+
18+
def is_aix():
19+
return sys.platform.startswith("aix")

0 commit comments

Comments
 (0)