Windows ARM64 support via LLVM (#15585)

This commit is contained in:
Ilya Lavrenov 2023-02-09 11:30:07 +04:00 committed by GitHub
parent 92788b1838
commit 84ecacda26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 85 additions and 46 deletions

View File

@ -192,7 +192,10 @@ macro(ie_arm_neon_optimization_flags flags)
endif()
else()
if(AARCH64)
set(${flags} -O2 -ftree-vectorize)
set(${flags} -O2)
if(NOT CMAKE_CL_64)
list(APPEND ${flags} -ftree-vectorize)
endif()
elseif(ARM)
set(${flags} -mfpu=neon -Wno-unused-command-line-argument)
endif()
@ -217,7 +220,9 @@ function(ov_disable_all_warnings)
if(target_type STREQUAL "SHARED_LIBRARY" OR target_type STREQUAL "EXECUTABLE")
set(link_interface LINK_OPTIONS)
endif()
set_target_properties(${target} PROPERTIES ${link_interface} "-Wno-error=maybe-uninitialized;-Wno-maybe-uninitialized")
if(CMAKE_COMPILER_IS_GNUCXX)
set_target_properties(${target} PROPERTIES ${link_interface} "-Wno-error=maybe-uninitialized;-Wno-maybe-uninitialized")
endif()
elseif(UNIX AND CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
# 193: zero used for undefined preprocessing identifier "XXX"
# 1011: missing return statement at end of non-void function "XXX"
@ -407,11 +412,6 @@ else()
# Warn if an undefined identifier is evaluated in an #if directive. Such identifiers are replaced with zero.
ie_add_compiler_flags(-Wundef)
# TODO
if(OV_COMPILER_IS_CLANG)
ie_add_compiler_flags(-Wno-delete-non-abstract-non-virtual-dtor)
endif()
check_cxx_compiler_flag("-Wsuggest-override" SUGGEST_OVERRIDE_SUPPORTED)
if(SUGGEST_OVERRIDE_SUPPORTED)
set(CMAKE_CXX_FLAGS "-Wsuggest-override ${CMAKE_CXX_FLAGS}")
@ -463,6 +463,10 @@ endif()
# if(OV_COMPILER_IS_CLANG)
# ie_add_compiler_flags(-Wshorten-64-to-32)
# endif()
# TODO
if(OV_COMPILER_IS_CLANG)
ie_add_compiler_flags(-Wno-delete-non-abstract-non-virtual-dtor)
endif()
#
# link_system_libraries(target <PUBLIC | PRIVATE | INTERFACE> <lib1 [lib2 lib3 ...]>)

View File

@ -19,16 +19,14 @@ else()
endif()
if(CI_BUILD_NUMBER)
set(TREAT_WARNING_AS_ERROR_DEFAULT ON)
set(CMAKE_COMPILE_WARNING_AS_ERROR_DEFAULT ON)
else()
set(TREAT_WARNING_AS_ERROR_DEFAULT OFF)
set(CMAKE_COMPILE_WARNING_AS_ERROR_DEFAULT OFF)
endif()
ie_dependent_option (TREAT_WARNING_AS_ERROR "WILL BE REMOVED SOON, NEED TO FIX PRIVATE COMPONENTS" ON "X86_64 OR X86" OFF)
if(NOT DEFINED CMAKE_COMPILE_WARNING_AS_ERROR)
set(CMAKE_COMPILE_WARNING_AS_ERROR ${TREAT_WARNING_AS_ERROR_DEFAULT})
endif()
ie_option (CMAKE_COMPILE_WARNING_AS_ERROR "Enable warnings as errors" ${CMAKE_COMPILE_WARNING_AS_ERROR_DEFAULT})
ie_dependent_option (ENABLE_INTEGRITYCHECK "build DLLs with /INTEGRITYCHECK flag" OFF "CMAKE_CXX_COMPILER_ID STREQUAL MSVC" OFF)

View File

@ -16,7 +16,21 @@ if(WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
endif()
endif()
macro(_ie_process_msvc_generator_platform flag_name)
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
set(arch_flag X86_64)
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*")
set(arch_flag X86)
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm64.*|aarch64.*|AARCH64.*)")
set(arch_flag AARCH64)
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)")
set(arch_flag ARM)
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^riscv64$")
set(arch_flag RISCV64)
endif()
set(HOST_${arch_flag} ON)
macro(_ie_process_msvc_generator_platform arch_flag)
# if cmake -A <ARM|ARM64> is passed
if(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
set(AARCH64 ON)
@ -27,14 +41,14 @@ macro(_ie_process_msvc_generator_platform flag_name)
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32")
set(X86 ON)
else()
set(${flag_name} ON)
set(${arch_flag} ON)
endif()
endmacro()
if(MSVC OR MINGW64)
_ie_process_msvc_generator_platform(X86_64)
if(MSVC64 OR MINGW64)
_ie_process_msvc_generator_platform(${arch_flag})
elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING))
_ie_process_msvc_generator_platform(X86)
_ie_process_msvc_generator_platform(${arch_flag})
elseif(CMAKE_OSX_ARCHITECTURES AND APPLE)
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
set(AARCH64 ON)
@ -57,18 +71,6 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^riscv64$")
set(RISCV64 ON)
endif()
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
set(HOST_X86_64 ON)
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*")
set(HOST_X86 ON)
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm64.*|aarch64.*|AARCH64.*)")
set(HOST_AARCH64 ON)
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)")
set(HOST_ARM ON)
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^riscv64$")
set(HOST_RISCV64 ON)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
set(EMSCRIPTEN ON)
endif()

View File

@ -21,6 +21,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# 'argument': conversion from 'size_t' to 'int', possible loss of data
ie_add_compiler_flags(/wd4267)
ie_add_compiler_flags(/wd4244)
elseif(CMAKE_COMPILER_IS_GNUCXX)
ie_add_compiler_flags(-Wno-unused-but-set-variable)
endif()
# create target

View File

@ -17,6 +17,10 @@ template void regclass_graph_Output<const ov::Node>(py::module m, std::string ty
template <typename T>
void def_type_dependent_functions(py::class_<ov::Output<T>, std::shared_ptr<ov::Output<T>>>& output) {}
template <>
void def_type_dependent_functions<const ov::Node>(
py::class_<ov::Output<const ov::Node>, std::shared_ptr<ov::Output<const ov::Node>>>& output) {}
template <>
void def_type_dependent_functions<ov::Node>(
py::class_<ov::Output<ov::Node>, std::shared_ptr<ov::Output<ov::Node>>>& output) {

View File

@ -28,6 +28,10 @@ template<>
void def_type_dependent_functions<ov::Node>(py::class_<ov::Output<ov::Node>,
std::shared_ptr<ov::Output<ov::Node>>>& output);
template<>
void def_type_dependent_functions<const ov::Node>(py::class_<ov::Output<const ov::Node>,
std::shared_ptr<ov::Output<const ov::Node>>>& output);
template <typename VT>
void regclass_graph_Output(py::module m, std::string typestring)
{

View File

@ -31,9 +31,11 @@ elseif(SELECTIVE_BUILD STREQUAL "ON")
target_compile_options(${TARGET_NAME} INTERFACE
-Wno-unused-function
-Wno-unused-variable
-Wno-unused-but-set-variable
-Wno-unused-parameter
-Wno-unused-local-typedefs)
if(CMAKE_COMPILER_IS_GNUCXX)
target_compile_options(${TARGET_NAME} INTERFACE -Wno-unused-but-set-variable)
endif()
endif()
set(GENERATED_HEADER ${CMAKE_CURRENT_BINARY_DIR}/conditional_compilation_gen.h CACHE FILEPATH "")

View File

@ -35,7 +35,6 @@ bool ngraph::pass::GenerateMappingFile::run_on_model(const std::shared_ptr<ngrap
for (auto&& node : f->get_ordered_ops()) {
uint64_t ie_port_index{node->inputs().size()};
uint64_t ng_port_index{0};
if (std::dynamic_pointer_cast<ov::op::v0::Result>(node))
continue;
for (auto&& output : node->outputs()) {
@ -52,7 +51,6 @@ bool ngraph::pass::GenerateMappingFile::run_on_model(const std::shared_ptr<ngrap
}
}
++ie_port_index;
++ng_port_index;
}
}

View File

@ -416,7 +416,12 @@ std::basic_string<C> get_path_name(const std::basic_string<C>& s) {
return {};
}
static std::string get_ov_library_path_a() {
#if defined __GNUC__ || defined __clang__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wunused-function"
#endif
std::string get_ov_library_path_a() {
#ifdef _WIN32
CHAR ov_library_path[MAX_PATH];
HMODULE hm = NULL;
@ -438,6 +443,10 @@ static std::string get_ov_library_path_a() {
#endif // _WIN32
}
#if defined __GNUC__ || defined __clang__
# pragma GCC diagnostic pop
#endif
} // namespace
std::string ov::util::get_ov_lib_path() {

View File

@ -6,7 +6,6 @@
#include "gtest/gtest.h"
using namespace std;
using namespace ngraph;
TEST(aligned_buffer, alignment) {
@ -18,7 +17,7 @@ TEST(aligned_buffer, alignment) {
TEST(aligned_buffer, move) {
{
runtime::AlignedBuffer buffer1(100, 64);
runtime::AlignedBuffer buffer2(move(buffer1));
runtime::AlignedBuffer buffer2(std::move(buffer1));
EXPECT_EQ(buffer1.size(), 0);
EXPECT_EQ(buffer1.get_ptr(), nullptr);
EXPECT_EQ(buffer2.size(), 100);
@ -27,7 +26,7 @@ TEST(aligned_buffer, move) {
{
runtime::AlignedBuffer buffer1(100, 64);
runtime::AlignedBuffer buffer2;
buffer2 = move(buffer1);
buffer2 = std::move(buffer1);
EXPECT_EQ(buffer1.size(), 0);
EXPECT_EQ(buffer1.get_ptr(), nullptr);
EXPECT_EQ(buffer2.size(), 100);

View File

@ -15,6 +15,7 @@
namespace ov {
namespace frontend {
class FrontEnd;
/// \brief InputModel class represents an original, not yet converted model graph in a
/// framework format given services to find places of interest in a graph or specialize/edit
/// the model before conversion.
@ -38,7 +39,7 @@ namespace frontend {
class FRONTEND_API InputModel {
std::shared_ptr<void> m_shared_object;
std::shared_ptr<InputModel> m_actual;
friend class FrontEnd;
friend class ::ov::frontend::FrontEnd;
public:
using Ptr = std::shared_ptr<InputModel>;

View File

@ -16,7 +16,6 @@ namespace frontend {
namespace ir {
class InputModel : public ov::frontend::InputModel {
friend class FrontEnd;
class InputModelIRImpl;
std::shared_ptr<InputModelIRImpl> _impl;

View File

@ -85,9 +85,7 @@ private:
m_handle = HandleHolder(h);
SYSTEM_INFO SystemInfo;
GetSystemInfo(&SystemInfo);
const int64_t page_size = SystemInfo.dwAllocationGranularity;
DWORD file_mode = GENERIC_READ;
DWORD map_mode = FILE_MAP_READ;
DWORD access = PAGE_READONLY;

View File

@ -12,7 +12,7 @@ namespace frontend {
namespace pytorch {
class InputModel : public ov::frontend::InputModel {
friend class FrontEnd;
friend class ::ov::frontend::pytorch::FrontEnd;
std::shared_ptr<TorchDecoder> m_model;
public:

View File

@ -65,9 +65,12 @@ std::basic_string<C> getPathName(const std::basic_string<C>& s) {
return {};
}
} // namespace
#if defined __GNUC__ || defined __clang__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wunused-function"
#endif
static std::string getIELibraryPathA() {
std::string getIELibraryPathA() {
#ifdef _WIN32
CHAR ie_library_path[MAX_PATH];
HMODULE hm = NULL;
@ -101,6 +104,12 @@ static std::string getIELibraryPathA() {
#endif // _WIN32
}
#if defined __GNUC__ || defined __clang__
# pragma GCC diagnostic pop
#endif
} // namespace
#ifdef OPENVINO_ENABLE_UNICODE_PATH_SUPPORT
std::wstring getIELibraryPathW() {

View File

@ -60,7 +60,6 @@ void parse_processor_info_win(const char* base_ptr,
int list_len = 0;
int base_proc = 0;
int proc_count = 0;
int mask_len = 0;
int group = 0;
_sockets = -1;
@ -91,7 +90,6 @@ void parse_processor_info_win(const char* base_ptr,
if (info->Relationship == RelationProcessorPackage) {
_sockets++;
MaskToList(info->Processor.GroupMask->Mask);
mask_len = list_len;
if (0 == _sockets) {
_proc_type_table.push_back(line_value_0);
} else {

View File

@ -251,9 +251,12 @@ if(ENABLE_GAPI_PREPROCESSING)
add_subdirectory(ade EXCLUDE_FROM_ALL)
add_subdirectory(fluid/modules/gapi EXCLUDE_FROM_ALL)
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 11 AND NOT OV_COMPILER_IS_CLANG)
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 11)
target_compile_options(fluid PRIVATE "-Wno-maybe-uninitialized")
endif()
if(CMAKE_COMPILER_IS_GNUCXX)
target_compile_options(fluid PRIVATE "-Wno-unused-but-set-variable")
endif()
set_target_properties(ade fluid PROPERTIES FOLDER thirdparty)
openvino_developer_export_targets(COMPONENT openvino_common TARGETS ade fluid)

View File

@ -9,5 +9,9 @@ set(INTTYPES_FORMAT C99)
set(BUILD_TESTING OFF)
set(BUILD_SHARED_LIBS OFF)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
endif()
add_subdirectory(gflags EXCLUDE_FROM_ALL)
set_target_properties(gflags_nothreads_static PROPERTIES FOLDER thirdparty)

View File

@ -13,6 +13,11 @@ else()
#266: function "XXX" declared implicitly
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -diag-disable=266")
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-non-prototype")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
endif()
endif()
set(TARGET_NAME "zlib")