Skip to content

Commit b774bdb

Browse files
authored
Compiler Updates - Set AMD clang++ as default compiler (#1454)
* Compiler - Set AMD clang++ as default compiler for HIP * C Compiler - Set AMD Clang * AMD Custom - Cleanup * Docs - added
1 parent e580795 commit b774bdb

File tree

15 files changed

+141
-107
lines changed

15 files changed

+141
-107
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ The full documentation for MIVisionX is available at [https://rocm.docs.amd.com/
99
### Changed
1010

1111
* Setup: OpenCV package install for Ubuntu
12+
* AMD Clang is now the default CXX and C compiler.
1213

1314
### Known issues
1415

CMakeLists.txt

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,21 @@
1818
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1919
# THE SOFTWARE.
2020
cmake_minimum_required(VERSION 3.10)
21+
22+
# ROCM Path
23+
if(DEFINED ENV{ROCM_PATH})
24+
set(ROCM_PATH $ENV{ROCM_PATH} CACHE PATH "Default ROCm installation path")
25+
elseif(ROCM_PATH)
26+
message("-- INFO:ROCM_PATH Set -- ${ROCM_PATH}")
27+
else()
28+
set(ROCM_PATH /opt/rocm CACHE PATH "Default ROCm installation path")
29+
endif()
30+
# Set AMD Clang as default compiler
31+
if (NOT DEFINED CMAKE_CXX_COMPILER AND EXISTS "${ROCM_PATH}/bin/amdclang++")
32+
set(CMAKE_C_COMPILER ${ROCM_PATH}/bin/amdclang)
33+
set(CMAKE_CXX_COMPILER ${ROCM_PATH}/bin/amdclang++)
34+
endif()
35+
2136
set(VERSION "3.2.0")
2237

2338
# Set Project Version and Language
@@ -34,14 +49,6 @@ find_program(MAKE_NSIS_EXE makensis)
3449
find_program(RPMBUILD_EXE rpmbuild)
3550
find_program(DPKG_EXE dpkg)
3651

37-
# ROCM Path
38-
if(DEFINED ENV{ROCM_PATH})
39-
set(ROCM_PATH $ENV{ROCM_PATH} CACHE PATH "Default ROCm installation path")
40-
elseif(ROCM_PATH)
41-
message("-- INFO:ROCM_PATH Set -- ${ROCM_PATH}")
42-
else()
43-
set(ROCM_PATH /opt/rocm CACHE PATH "Default ROCm installation path")
44-
endif()
4552
# avoid setting the default installation path to /usr/local
4653
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
4754
set(CMAKE_INSTALL_PREFIX ${ROCM_PATH} CACHE PATH "MIVisionX default installation path" FORCE)
@@ -53,7 +60,6 @@ option(NEURAL_NET "Build MIVisionX with Neural Net Support" ON)
5360
option(LOOM "Build MIVisionX with LOOM Support" ON)
5461
option(GPU_SUPPORT "Build MIVisionX with GPU Support" ON)
5562
option(MIGRAPHX "Build MIVisionX with MIGraphX Support" ON)
56-
option(BUILD_WITH_AMD_ADVANCE "Build MIVisionX for advanced AMD GPU Architecture" OFF)
5763

5864
if(WIN32)
5965
set(BACKEND "OpenCL")
@@ -110,8 +116,7 @@ endif()
110116
if(CMAKE_BUILD_TYPE MATCHES Debug)
111117
# -O0 -- Don't Optimize output file
112118
# -g -- generate debugging information
113-
# -Og -- Optimize for debugging experience rather than speed or size
114-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -Og")
119+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g")
115120
else()
116121
# -O3 -- Optimize output file
117122
# -DNDEBUG -- turn off asserts
@@ -164,7 +169,6 @@ message("-- ${Cyan} -D LOOM=${LOOM} [Turn ON/OFF LOOM OpenCL Modules (defaul
164169
message("-- ${Cyan} -D GPU_SUPPORT=${GPU_SUPPORT} [Turn ON/OFF GPU support (default:ON)]${ColourReset}")
165170
message("-- ${Cyan} -D MIGRAPHX=${MIGRAPHX} [Turn ON/OFF MIGraphX Module (default:ON)]${ColourReset}")
166171
message("-- ${Cyan} -D BACKEND=${BACKEND} [Select MIVisionX Backend [options:CPU/OPENCL/HIP](default:HIP)]${ColourReset}")
167-
message("-- ${Cyan} -D BUILD_WITH_AMD_ADVANCE=${BUILD_WITH_AMD_ADVANCE} [Turn ON/OFF Build for AMD advanced GPUs(default:OFF)]${ColourReset}")
168172

169173
add_subdirectory(amd_openvx)
170174
add_subdirectory(amd_openvx_extensions)

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ MIVisionX toolkit provides tools for accomplishing your tasks throughout the who
8484
* macOS - Ventura `13` / Sonoma `14` / Sequoia `15`
8585

8686
### Libraries
87+
* AMD Clang++ Version `18.0.0` or later - installed with ROCm
8788
* CMake - Version `3.10` and above
8889
```shell
8990
sudo apt install cmake
@@ -108,6 +109,10 @@ MIVisionX toolkit provides tools for accomplishing your tasks throughout the who
108109
```shell
109110
sudo apt install libopencv-dev
110111
```
112+
* OpenMP
113+
```
114+
sudo apt install libomp-dev
115+
```
111116
* pkg-config
112117
```shell
113118
sudo apt install pkg-config

amd_openvx/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ Build this project to generate AMD OpenVX™ library
183183

184184
### Build using CMake
185185

186-
* Install CMake 3.5 or later
186+
* Install CMake 3.10 or later
187187
* Use CMake to configure and generate Makefile
188188

189189
**NOTE:** OpenVX and the OpenVX logo are trademarks of the Khronos Group Inc.

amd_openvx/openvx/hipvx/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ list(APPEND HIPVX_SOURCES
3636
set_source_files_properties(${HIPVX_SOURCES} PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
3737

3838
set(HIP_CXX_FLAGS -std=gnu++14)
39-
set(COMPILER_FOR_HIP ${ROCM_PATH}/lib/llvm/bin/clang++)
40-
set(CMAKE_CXX_COMPILER ${COMPILER_FOR_HIP})
4139
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${HIP_CXX_FLAGS}")
4240

4341
add_library(${PROJECT_NAME} OBJECT ${HIPVX_SOURCES})

amd_openvx_extensions/amd_custom/CMakeLists.txt

Lines changed: 41 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -19,76 +19,72 @@
1919
# THE SOFTWARE.
2020

2121
cmake_minimum_required(VERSION 3.10)
22+
2223
set(VERSION "1.0.1")
2324
project(vx_amd_custom VERSION ${VERSION} LANGUAGES CXX)
2425

2526
set(CMAKE_CXX_STANDARD 14)
2627

27-
list (APPEND CMAKE_PREFIX_PATH ${ROCM_PATH} ${ROCM_PATH}/hip)
28+
# ROCM Path
29+
if(DEFINED ENV{ROCM_PATH})
30+
set(ROCM_PATH $ENV{ROCM_PATH} CACHE PATH "Default ROCm installation path")
31+
elseif(ROCM_PATH)
32+
message("-- ${PROJECT_NAME}: INFO -- ROCM_PATH Set -- ${ROCM_PATH}")
33+
else()
34+
set(ROCM_PATH /opt/rocm CACHE PATH "Default ROCm installation path")
35+
endif()
2836

29-
# OpenMP
30-
find_package(OpenMP QUIET)
37+
list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH} ${ROCM_PATH}/hip)
3138

32-
if(GPU_SUPPORT AND "${BACKEND}" STREQUAL "HIP" AND OpenMP_FOUND)
39+
# Find Packages
40+
# HIP
41+
if(GPU_SUPPORT AND "${BACKEND}" STREQUAL "HIP")
3342
if(NOT DEFINED HIP_PATH)
3443
if(NOT DEFINED ENV{HIP_PATH})
35-
set(HIP_PATH ${ROCM_PATH})
44+
set(HIP_PATH ${ROCM_PATH} CACHE PATH "Path to which HIP has been installed")
3645
else()
37-
set(HIP_PATH $ENV{HIP_PATH})
46+
set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed")
3847
endif()
3948
endif()
4049
list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH} ${ROCM_PATH}/hip)
4150
find_package(HIP QUIET)
51+
if(NOT HIP_FOUND)
52+
message("-- ${Red}${PROJECT_NAME} WARNING: HIP Not Found${ColourReset}")
53+
endif()
54+
endif()
55+
# OpenMP
56+
find_package(OpenMP QUIET)
57+
if(OpenMP_FOUND)
4258
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
4359
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
60+
include_directories(${OpenMP_INCLUDE_DIRS})
4461
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} OpenMP::OpenMP_CXX)
62+
message("-- ${White}${PROJECT_NAME} -- OpenMP Found${ColourReset}")
63+
else()
64+
message("-- ${Yellow}WARNING: ${PROJECT_NAME} -- OpenMP Not FOUND${ColourReset}")
65+
endif()
4566

46-
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
47-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
48-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
49-
else()
50-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -msse4.2")
51-
endif()
67+
list(APPEND SOURCES source/custom_kernels.cpp source/custom_layer.cpp)
68+
include_directories(../../amd_openvx/openvx/include ${ROCM_PATH}/include include ./custom_lib)
69+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
5270

71+
if(HIP_FOUND AND OpenMP_FOUND)
72+
message("-- ${Green}${PROJECT_NAME} -- Building HIP backend${ColourReset}")
73+
set(ENABLE_HIP 1)
74+
link_directories(${HIP_PATH}/lib)
5375
list(APPEND PACKAGE_DEPENDS PACKAGE HIP)
54-
55-
include_directories(../../amd_openvx/openvx/include ${ROCM_PATH}/include include ./custom_lib)
56-
57-
list(APPEND SOURCES
58-
source/custom_kernels.cpp
59-
source/custom_layer.cpp
60-
)
61-
62-
if (HIP_FOUND)
63-
message("-- ${Green}${PROJECT_NAME} -- Building with HIP backend${ColourReset}")
64-
set(ENABLE_HIP 1)
65-
add_definitions(-DENABLE_HIP=${ENABLE_HIP} -D__HIP_PLATFORM_AMD__)
66-
link_directories(${HIP_PATH}/lib)
67-
add_subdirectory(custom_lib)
68-
add_library(${PROJECT_NAME} SHARED ${SOURCES} $<TARGET_OBJECTS:custom_lib>)
69-
target_link_libraries(${PROJECT_NAME} openvx hip::host ${LINK_LIBRARY_LIST})
70-
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
71-
# install MIVisionX libs -- {ROCM_PATH}/lib -- TBD: Remove duplicate install
72-
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime NAMELINK_SKIP)
73-
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev NAMELINK_ONLY)
74-
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT asan)
75-
# install MIVisionX include files -- {ROCM_PATH}/include/mivisionx/
76-
install(FILES include/vx_amd_custom.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mivisionx COMPONENT dev)
77-
else()
78-
message("-- ${Red}WARNING: HIP Not Found -- ${PROJECT_NAME} module excluded${ColourReset}")
79-
endif()
80-
else()
81-
set(ENABLE_HIP 0)
82-
add_definitions(-DENABLE_HIP=${ENABLE_HIP})
83-
message("-- ${Red}WARNING: GPU Support Turned OFF -- ${PROJECT_NAME} built for CPU only${ColourReset}")
8476
add_subdirectory(custom_lib)
8577
add_library(${PROJECT_NAME} SHARED ${SOURCES} $<TARGET_OBJECTS:custom_lib>)
86-
target_link_libraries(${PROJECT_NAME} openvx hip::host)
78+
target_compile_definitions(${PROJECT_NAME} PRIVATE __HIP_PLATFORM_AMD__)
79+
target_link_libraries(${PROJECT_NAME} openvx hip::host ${LINK_LIBRARY_LIST})
80+
target_compile_definitions(${PROJECT_NAME} PUBLIC ENABLE_HIP=${ENABLE_HIP})
8781
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
88-
# install MIVisionX libs -- {ROCM_PATH}/lib
82+
# install MIVisionX libs -- {ROCM_PATH}/lib -- TBD: Remove duplicate install
8983
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime NAMELINK_SKIP)
9084
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev NAMELINK_ONLY)
9185
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT asan)
92-
# install include files -- {ROCM_PATH}/include/mivisionx/
86+
# install MIVisionX include files -- {ROCM_PATH}/include/mivisionx/
9387
install(FILES include/vx_amd_custom.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mivisionx COMPONENT dev)
88+
else()
89+
message("-- ${Red}WARNING:${PROJECT_NAME} -- CPU backend not supported${ColourReset}")
9490
endif()

amd_openvx_extensions/amd_custom/custom_lib/CMakeLists.txt

Lines changed: 10 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -23,50 +23,18 @@ project(custom_lib)
2323

2424
set(CMAKE_CXX_STANDARD 14)
2525

26-
# ROCm Path
27-
set(ROCM_PATH /opt/rocm CACHE PATH "Default ROCm installation path")
28-
# avoid setting the default installation path to /usr/local
29-
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
30-
set(CMAKE_INSTALL_PREFIX ${ROCM_PATH} CACHE PATH "MIVisionX default installation path" FORCE)
31-
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
32-
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
33-
34-
# Add Default libdir
35-
set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "Library install directory")
36-
include(GNUInstallDirs)
37-
38-
# Find Modules
3926
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake)
4027

41-
if(GPU_SUPPORT AND "${BACKEND}" STREQUAL "HIP" AND OpenMP_FOUND)
28+
set(CUSTOM_LIB_SOURCES custom_api.cpp custom_copy_impl.cpp)
29+
include_directories(${ROCM_PATH}/include)
30+
link_directories(${HIP_PATH}/lib)
31+
32+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
4233

43-
if(NOT DEFINED ENV{HIP_PATH})
44-
set(HIP_PATH ${ROCM_PATH} CACHE PATH "Path to which HIP has been installed")
45-
else()
46-
set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed")
47-
endif()
48-
list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH} ${ROCM_PATH}/hip)
49-
find_package(HIP QUIET)
50-
list(APPEND PACKAGE_DEPENDS PACKAGE HIP)
51-
include_directories(${ROCM_PATH}/include)
52-
set(CUSTOM_LIB_SOURCES
53-
custom_api.cpp
54-
custom_copy_impl.cpp
55-
)
34+
add_library(${PROJECT_NAME} OBJECT ${CUSTOM_LIB_SOURCES})
35+
target_compile_definitions(${PROJECT_NAME} PUBLIC ENABLE_HIP=${ENABLE_HIP})
36+
target_compile_definitions(${PROJECT_NAME} PRIVATE __HIP_PLATFORM_AMD__)
5637

57-
if (HIP_FOUND)
58-
set(ENABLE_HIP 1)
59-
add_definitions(-DENABLE_HIP=${ENABLE_HIP} -D__HIP_PLATFORM_AMD__)
60-
link_directories(${HIP_PATH}/lib)
61-
add_library(${PROJECT_NAME} OBJECT ${CUSTOM_LIB_SOURCES})
62-
else()
63-
message("-- ${Red}WARNING: HIP Not Found -- ${PROJECT_NAME} not built${ColourReset}")
64-
endif()
65-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
66-
else()
67-
message("-- ${Green}${PROJECT_NAME} -- Building for CPU backend${ColourReset}")
68-
set(ENABLE_HIP 0)
69-
add_library(${PROJECT_NAME} OBJECT ${CUSTOM_LIB_SOURCES})
70-
endif()
38+
list(APPEND PACKAGE_DEPENDS PACKAGE HIP)
7139

72-
message("-- ${White}custom_lib -- CMAKE_CXX_FLAGS:${CMAKE_CXX_FLAGS}${ColourReset}")
40+
message("-- ${White}${PROJECT_NAME} -- CMAKE_CXX_FLAGS:${CMAKE_CXX_FLAGS}${ColourReset}")

amd_openvx_extensions/amd_nn/nn_hip/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ set(NN_HIP_SOURCES
2727

2828
set_source_files_properties(${NN_HIP_SOURCES} PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
2929
set(HIP_CXX_FLAGS -std=gnu++14)
30-
set(COMPILER_FOR_HIP ${ROCM_PATH}/lib/llvm/bin/clang++)
31-
set(CMAKE_CXX_COMPILER ${COMPILER_FOR_HIP})
3230
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${HIP_CXX_FLAGS}")
3331

3432
add_library(${PROJECT_NAME} OBJECT ${NN_HIP_SOURCES})

amd_openvx_extensions/amd_rpp/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ The following is a list of RPP functions that have been included in the vx_rpp m
3636

3737
* AMD OpenVX&trade; library
3838
* [AMD RPP library](https://github.com/ROCm/rpp)
39-
* CMake 3.5 or later
39+
* CMake 3.10 or later
4040
* OpenCL (optional)
4141

4242
### Build using CMake on Linux

docs/install/amd_openvx-install.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,5 @@ Build using Microsoft Visual Studio
4242
Build using CMake
4343
-----------------
4444

45-
* Install CMake 3.5 or later
45+
* Install CMake 3.10 or later
4646
* Use CMake to configure and generate Makefile

0 commit comments

Comments
 (0)