From 0091a0a6d6e2faf20f1e269789baca13a2cede77 Mon Sep 17 00:00:00 2001 From: jim19930609 Date: Fri, 6 May 2022 11:12:07 +0800 Subject: [PATCH 1/4] [build] Warning Suppression PR #1: Turned on -Wno-ignored-attributes & Removed unused functions --- cmake/TaichiCXXFlags.cmake | 4 +++ .../backends/metal/shaders/atomic_stubs.cpp | 7 +++++ taichi/backends/metal/shaders/atomic_stubs.h | 4 ++- taichi/backends/vulkan/vulkan_utils.cpp | 26 +------------------ 4 files changed, 15 insertions(+), 26 deletions(-) create mode 100644 taichi/backends/metal/shaders/atomic_stubs.cpp diff --git a/cmake/TaichiCXXFlags.cmake b/cmake/TaichiCXXFlags.cmake index 79fe36770b646..355f2e5f8f6a3 100644 --- a/cmake/TaichiCXXFlags.cmake +++ b/cmake/TaichiCXXFlags.cmake @@ -46,7 +46,11 @@ else() message("Invalid compiler ${CMAKE_CXX_COMPILER_ID} detected.") message(FATAL_ERROR "clang and MSVC are the only supported compilers for Taichi compiler development. Consider using 'cmake -DCMAKE_CXX_COMPILER=clang' if you are on Linux.") endif() + + # [Global] CXX compilation option to enable all warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ") + # [Global] CXX compilation option to suppress warnings when compiler ignores an attribute. + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-ignored-attributes ") endif () message("Building for processor ${CMAKE_SYSTEM_PROCESSOR}") diff --git a/taichi/backends/metal/shaders/atomic_stubs.cpp b/taichi/backends/metal/shaders/atomic_stubs.cpp new file mode 100644 index 0000000000000..4b1b778029bf4 --- /dev/null +++ b/taichi/backends/metal/shaders/atomic_stubs.cpp @@ -0,0 +1,7 @@ +#include "taichi/backends/metal/shaders/atomic_stubs.h" + +namespace metal { + +memory_order memory_order_relaxed = false; + +} // namespace metal diff --git a/taichi/backends/metal/shaders/atomic_stubs.h b/taichi/backends/metal/shaders/atomic_stubs.h index 8b6851929c94e..edf87f08996a9 100644 --- a/taichi/backends/metal/shaders/atomic_stubs.h +++ b/taichi/backends/metal/shaders/atomic_stubs.h @@ -9,7 +9,9 @@ struct _atomic {}; namespace metal { using memory_order = bool; -memory_order memory_order_relaxed = false; + +// Defined in atomic_stub.cpp +extern memory_order memory_order_relaxed; } // namespace metal diff --git a/taichi/backends/vulkan/vulkan_utils.cpp b/taichi/backends/vulkan/vulkan_utils.cpp index e54133ce0757a..1ac7354cf8750 100644 --- a/taichi/backends/vulkan/vulkan_utils.cpp +++ b/taichi/backends/vulkan/vulkan_utils.cpp @@ -5,31 +5,7 @@ namespace taichi { namespace lang { namespace vulkan { -namespace { - -std::vector GetInstanceExtensionProperties() { - constexpr char *kNoLayerName = nullptr; - uint32_t count = 0; - vkEnumerateInstanceExtensionProperties(kNoLayerName, &count, nullptr); - std::vector extensions(count); - vkEnumerateInstanceExtensionProperties(kNoLayerName, &count, - extensions.data()); - return extensions; -} - -std::vector GetDeviceExtensionProperties( - VkPhysicalDevice physicalDevice) { - constexpr char *kNoLayerName = nullptr; - uint32_t count = 0; - vkEnumerateDeviceExtensionProperties(physicalDevice, kNoLayerName, &count, - nullptr); - std::vector extensions(count); - vkEnumerateDeviceExtensionProperties(physicalDevice, kNoLayerName, &count, - extensions.data()); - return extensions; -} - -} // namespace +namespace {} // namespace } // namespace vulkan } // namespace lang From c6ba16b4aa87c098b9b1cbc031e901982b9247a5 Mon Sep 17 00:00:00 2001 From: jim19930609 Date: Fri, 6 May 2022 17:39:48 +0800 Subject: [PATCH 2/4] [build] Warning Suppression PR #2: Eliminate warnings from third-party headers --- cmake/TaichiCore.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/TaichiCore.cmake b/cmake/TaichiCore.cmake index 3096832be40c7..1a41bc2020552 100644 --- a/cmake/TaichiCore.cmake +++ b/cmake/TaichiCore.cmake @@ -379,7 +379,9 @@ if (TI_WITH_VULKAN) target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/SPIRV-Headers/include) target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/SPIRV-Reflect) - target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/VulkanMemoryAllocator/include) + + # By specifying SYSTEM, we suppressed the warnings from third-party headers. + target_include_directories(${CORE_LIBRARY_NAME} SYSTEM PRIVATE external/VulkanMemoryAllocator/include) if (LINUX) # shaderc requires pthread From 27cfff24c87a35fb856cab98aa2c1316993aa55f Mon Sep 17 00:00:00 2001 From: jim19930609 Date: Sat, 7 May 2022 10:02:12 +0800 Subject: [PATCH 3/4] Fixed an warning with enum comparison --- taichi/backends/vulkan/vulkan_device.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taichi/backends/vulkan/vulkan_device.cpp b/taichi/backends/vulkan/vulkan_device.cpp index 62b1b4fe6b865..a739758e69f88 100644 --- a/taichi/backends/vulkan/vulkan_device.cpp +++ b/taichi/backends/vulkan/vulkan_device.cpp @@ -278,7 +278,7 @@ void VulkanPipeline::create_descriptor_set_layout(const Params ¶ms) { for (auto var : variables) { // We want to remove auxiliary outputs such as frag depth - if (var->built_in == -1) { + if (static_cast(var->built_in) == -1) { render_target_count++; } } From 462c129af678ee4894b87e0b0f49bc6b660234b5 Mon Sep 17 00:00:00 2001 From: jim19930609 Date: Sat, 7 May 2022 11:18:56 +0800 Subject: [PATCH 4/4] [build] Warning Suppression PR #4: Fixed Mac-specific warnings --- taichi/backends/metal/codegen_metal.cpp | 2 +- taichi/backends/metal/device.cpp | 4 ++++ taichi/backends/metal/kernel_manager.cpp | 4 ++-- taichi/backends/metal/metal_program.cpp | 2 +- taichi/backends/opengl/codegen_opengl.cpp | 2 +- taichi/transforms/make_mesh_block_local.cpp | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/taichi/backends/metal/codegen_metal.cpp b/taichi/backends/metal/codegen_metal.cpp index 14bc796597aa1..b6b5c0c3c0937 100644 --- a/taichi/backends/metal/codegen_metal.cpp +++ b/taichi/backends/metal/codegen_metal.cpp @@ -190,7 +190,7 @@ class KernelCodegenImpl : public IRVisitor { for (int i = 0; i < compiled_snode_trees_.size(); ++i) { const auto &cst = compiled_snode_trees_[i]; - for (const auto [node_id, _] : cst.snode_descriptors) { + for (const auto &[node_id, _] : cst.snode_descriptors) { RootInfo ri{}; ri.snode_id = cst.root_id; ri.index_in_cst = i; diff --git a/taichi/backends/metal/device.cpp b/taichi/backends/metal/device.cpp index aa75d61847625..8a18b6d18aa4f 100644 --- a/taichi/backends/metal/device.cpp +++ b/taichi/backends/metal/device.cpp @@ -245,6 +245,8 @@ class StreamImpl : public Stream { const std::vector &wait_semaphores) override { auto *cb = static_cast(cmdlist)->command_buffer(); commit_command_buffer(cb); + + return nullptr; } StreamSemaphore submit_synced( CommandList *cmdlist, @@ -252,6 +254,8 @@ class StreamImpl : public Stream { auto *cb = static_cast(cmdlist)->command_buffer(); commit_command_buffer(cb); wait_until_completed(cb); + + return nullptr; } void command_sync() override { diff --git a/taichi/backends/metal/kernel_manager.cpp b/taichi/backends/metal/kernel_manager.cpp index 96863e178b973..9f3524cc35eed 100644 --- a/taichi/backends/metal/kernel_manager.cpp +++ b/taichi/backends/metal/kernel_manager.cpp @@ -188,7 +188,7 @@ class UserMtlKernel : public CompiledMtlKernelBase { // 0 is valid for |num_threads|! TI_ASSERT(kernel_attribs_.advisory_total_num_threads >= 0); BindBuffers buffers; - for (const auto b : kernel_attribs_.buffers) { + for (const auto &b : kernel_attribs_.buffers) { buffers.push_back({input_buffers.find(b)->second, b}); } launch_if_not_empty(std::move(buffers), command_buffer); @@ -215,7 +215,7 @@ class SparseRuntimeMtlKernelBase : public CompiledMtlKernelBase { void launch(InputBuffersMap &input_buffers, MTLCommandBuffer *command_buffer) override { BindBuffers buffers; - for (const auto b : kernel_attribs_.buffers) { + for (const auto &b : kernel_attribs_.buffers) { if (b.type() == BufferDescriptor::Type::Context) { buffers.push_back({args_buffer_.get(), b}); } else { diff --git a/taichi/backends/metal/metal_program.cpp b/taichi/backends/metal/metal_program.cpp index 209aeefef3f52..e7eb52ddf166a 100644 --- a/taichi/backends/metal/metal_program.cpp +++ b/taichi/backends/metal/metal_program.cpp @@ -11,7 +11,7 @@ namespace { std::unordered_set find_all_dense_snodes( const metal::SNodeDescriptorsMap &snodes_map) { std::unordered_set res; - for (const auto [_, desc] : snodes_map) { + for (const auto &[_, desc] : snodes_map) { const auto *sn = desc.snode; if (sn->type == SNodeType::dense) { res.insert(sn); diff --git a/taichi/backends/opengl/codegen_opengl.cpp b/taichi/backends/opengl/codegen_opengl.cpp index 7f232b26315b5..dbc762574c88a 100644 --- a/taichi/backends/opengl/codegen_opengl.cpp +++ b/taichi/backends/opengl/codegen_opengl.cpp @@ -224,7 +224,7 @@ class KernelGen : public IRVisitor { kernel_header += shaders::kOpenGlAtomicF32Source_gtmp; } std::unordered_set arr_ids; - for ([[maybe_unused]] const auto [arr_id, bind_idx] : + for ([[maybe_unused]] const auto &[arr_id, bind_idx] : used.arr_arg_to_bind_idx) { arr_ids.insert(arr_id); } diff --git a/taichi/transforms/make_mesh_block_local.cpp b/taichi/transforms/make_mesh_block_local.cpp index 86480250a75cd..c0add06662531 100644 --- a/taichi/transforms/make_mesh_block_local.cpp +++ b/taichi/transforms/make_mesh_block_local.cpp @@ -441,7 +441,7 @@ MakeMeshBlockLocal::MakeMeshBlockLocal(OffloadedStmt *offload, TI_TRACE("available cache attributes bytes = {}", available_bytes); TI_TRACE("caches size = {}", caches->caches.size()); std::vector priority_caches; - for (const auto [snode, cache] : caches->caches) { + for (const auto &[snode, cache] : caches->caches) { priority_caches.push_back(cache); } std::sort(priority_caches.begin(), priority_caches.end(),