From e826c365ea0bfcb7c036235d7b628cb1ffd50ec7 Mon Sep 17 00:00:00 2001 From: Konstantin Zhuravlyov Date: Thu, 15 Apr 2021 17:06:51 -0400 Subject: [PATCH] Remove loaders.c/hpp Change-Id: Ida507c2dd2de9172f250172f9c45a639953cb412 --- runtime/hsa-runtime/CMakeLists.txt | 1 - runtime/hsa-runtime/loader/loaders.cpp | 290 ------------------------- runtime/hsa-runtime/loader/loaders.hpp | 110 ---------- 3 files changed, 401 deletions(-) delete mode 100644 runtime/hsa-runtime/loader/loaders.cpp delete mode 100644 runtime/hsa-runtime/loader/loaders.hpp diff --git a/runtime/hsa-runtime/CMakeLists.txt b/runtime/hsa-runtime/CMakeLists.txt index a0a5cd58c2..c81b196b8e 100644 --- a/runtime/hsa-runtime/CMakeLists.txt +++ b/runtime/hsa-runtime/CMakeLists.txt @@ -191,7 +191,6 @@ set ( SRCS core/util/lnx/os_linux.cpp core/common/shared.cpp core/common/hsa_table_interface.cpp loader/executable.cpp - loader/loaders.cpp libamdhsacode/amd_elf_image.cpp libamdhsacode/amd_hsa_code_util.cpp libamdhsacode/amd_hsa_locks.cpp diff --git a/runtime/hsa-runtime/loader/loaders.cpp b/runtime/hsa-runtime/loader/loaders.cpp deleted file mode 100644 index 8d013850ea..0000000000 --- a/runtime/hsa-runtime/loader/loaders.cpp +++ /dev/null @@ -1,290 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#include -#include -#include "loaders.hpp" - -namespace rocr { -namespace amd { -namespace hsa { -namespace loader { - - // Helper function that allocates an aligned memory. - static inline void* - alignedMalloc(size_t size, size_t alignment) - { - #if defined(_WIN32) - return ::_aligned_malloc(size, alignment); - #else - void * ptr = NULL; - alignment = (std::max)(alignment, sizeof(void*)); - if (0 == ::posix_memalign(&ptr, alignment, size)) { - return ptr; - } - return NULL; - #endif - } - - // Helper function that frees an aligned memory. - static inline void - alignedFree(void *ptr) - { - #if defined(_WIN32) - ::_aligned_free(ptr); - #else - free(ptr); - #endif - } - - OfflineLoaderContext::OfflineLoaderContext() - : out(std::cout) - { - invalid.handle = 0; - gfx700.handle = 0x700; - gfx701.handle = 0x701; - gfx702.handle = 0x702; - gfx801.handle = 0x801; - gfx802.handle = 0x802; - gfx803.handle = 0x803; - gfx805.handle = 0x805; - gfx810.handle = 0x810; - gfx900.handle = 0x900; - gfx902.handle = 0x902; - gfx904.handle = 0x904; - gfx906.handle = 0x906; - gfx908.handle = 0x908; - gfx909.handle = 0x909; - gfx90a.handle = 0x90a; - gfx90c.handle = 0x90c; - gfx1010.handle = 0x1010; - gfx1011.handle = 0x1011; - gfx1012.handle = 0x1012; - gfx1030.handle = 0x1030; - gfx1031.handle = 0x1031; - gfx1032.handle = 0x1032; - gfx1033.handle = 0x1033; - } - - hsa_isa_t OfflineLoaderContext::IsaFromName(const char *name) - { - std::string sname(name); - if (sname == "AMD:AMDGPU:7:0:0") { - return gfx700; - } else if (sname == "AMD:AMDGPU:7:0:1") { - return gfx701; - } else if (sname == "AMD:AMDGPU:7:0:2") { - return gfx702; - } else if (sname == "AMD:AMDGPU:7:0:3") { - return gfx703; - } else if (sname == "AMD:AMDGPU:7:0:4") { - return gfx704; - } else if (sname == "AMD:AMDGPU:7:0:5") { - return gfx705; - } else if (sname == "AMD:AMDGPU:8:0:1") { - return gfx801; - } else if (sname == "AMD:AMDGPU:8:0:0" || sname == "AMD:AMDGPU:8:0:2") { - return gfx802; - } else if (sname == "AMD:AMDGPU:8:0:3" || sname == "AMD:AMDGPU:8:0:4") { - return gfx803; - } else if (sname == "AMD:AMDGPU:8:0:5") { - return gfx805; - } else if (sname == "AMD:AMDGPU:8:1:0") { - return gfx810; - } else if (sname == "AMD:AMDGPU:9:0:0" || sname == "AMD:AMDGPU:9:0:1") { - return gfx900; - } else if (sname == "AMD:AMDGPU:9:0:2" || sname == "AMD:AMDGPU:9:0:3") { - return gfx902; - } else if (sname == "AMD:AMDGPU:9:0:4" || sname == "AMD:AMDGPU:9:0:5") { - return gfx904; - } else if (sname == "AMD:AMDGPU:9:0:6" || sname == "AMD:AMDGPU:9:0:7") { - return gfx906; - } else if (sname == "AMD:AMDGPU:9:0:8") { - return gfx908; - } else if (sname == "AMD:AMDGPU:9:0:9") { - return gfx909; - } else if (sname == "AMD:AMDGPU:9:0:10") { - return gfx90a; - } else if (sname == "AMD:AMDGPU:9:0:12") { - return gfx90c; - } else if (sname == "AMD:AMDGPU:10:1:0") { - return gfx1010; - } else if (sname == "AMD:AMDGPU:10:1:1") { - return gfx1011; - } else if (sname == "AMD:AMDGPU:10:1:2") { - return gfx1012; - } else if (sname == "AMD:AMDGPU:10:3:0") { - return gfx1030; - } else if (sname == "AMD:AMDGPU:10:3:1") { - return gfx1031; - } else if (sname == "AMD:AMDGPU:10:3:2") { - return gfx1032; - } else if (sname == "AMD:AMDGPU:10:3:3") { - return gfx1033; - } - - // The offline loader only supports code object v2 which only supports - // asics up to gfx906. Do NOT add handling of new asics into this - // if-else-if* block. - assert(0); - return invalid; - } - - bool OfflineLoaderContext::IsaSupportedByAgent(hsa_agent_t agent, hsa_isa_t isa) - { - return true; - } - - void* OfflineLoaderContext::SegmentAlloc(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, size_t size, size_t align, bool zero) - { - void* ptr = alignedMalloc(size, align); - if (zero) { memset(ptr, 0, size); } - out << "SegmentAlloc: " << segment << ": " << "size=" << size << " align=" << align << " zero=" << zero << " result=" << ptr << std::endl; - pointers.insert(ptr); - return ptr; - } - - bool OfflineLoaderContext::SegmentCopy(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* dst, size_t offset, const void* src, size_t size) - { - out << "SegmentCopy: " << segment << ": " << "dst=" << dst << " offset=" << offset << " src=" << src << " size=" << size << std::endl; - if (!dst || !src || dst == src) { - return false; - } - if (0 == size) { - return true; - } - memcpy((char *) dst + offset, src, size); - return true; - } - - void OfflineLoaderContext::SegmentFree(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* seg, size_t size) - { - out << "SegmentFree: " << segment << ": " << " ptr=" << seg << " size=" << size << std::endl; - pointers.erase(seg); - alignedFree(seg); - } - - void* OfflineLoaderContext::SegmentAddress(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* seg, size_t offset) - { - out << "SegmentAddress: " << segment << ": " << " ptr=" << seg << " offset=" << offset << std::endl; - return (char*) seg + offset; - } - - void* OfflineLoaderContext::SegmentHostAddress(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* seg, size_t offset) - { - out << "SegmentHostAddress: " << segment << ": " << " ptr=" << seg << " offset=" << offset << std::endl; - return (char*) seg + offset; - } - - bool OfflineLoaderContext::SegmentFreeze(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* seg, size_t size) - { - out << "SegmentFreeze: " << segment << ": " << " ptr=" << seg << " size=" << size << std::endl; - return true; - } - - bool OfflineLoaderContext::ImageExtensionSupported() - { - return true; - } - - hsa_status_t OfflineLoaderContext::ImageCreate( - hsa_agent_t agent, - hsa_access_permission_t image_permission, - const hsa_ext_image_descriptor_t *image_descriptor, - const void *image_data, - hsa_ext_image_t *image_handle) - { - void* ptr = alignedMalloc(256, 8); - out << "ImageCreate" << ":" << - " permission=" << image_permission << - " geometry=" << image_descriptor->geometry << - " width=" << image_descriptor->width << - " height=" << image_descriptor->height << - " depth=" << image_descriptor->depth << - " array_size=" << image_descriptor->array_size << - " channel_type=" << image_descriptor->format.channel_type << - " channel_order=" << image_descriptor->format.channel_order<< - " data=" << image_data << - std::endl; - pointers.insert(ptr); - image_handle->handle = reinterpret_cast(ptr); - return HSA_STATUS_SUCCESS; - } - - hsa_status_t OfflineLoaderContext::ImageDestroy( - hsa_agent_t agent, hsa_ext_image_t image_handle) - { - void* ptr = reinterpret_cast(image_handle.handle); - pointers.erase(ptr); - alignedFree(ptr); - return HSA_STATUS_SUCCESS; - } - - hsa_status_t OfflineLoaderContext::SamplerCreate( - hsa_agent_t agent, - const hsa_ext_sampler_descriptor_t *sampler_descriptor, - hsa_ext_sampler_t *sampler_handle) - { - void* ptr = alignedMalloc(256, 8); - out << "SamplerCreate" << ":" << - " coordinate_mode=" << sampler_descriptor->coordinate_mode << - " filter_mode=" << sampler_descriptor->filter_mode << - " address_mode=" << sampler_descriptor->address_mode << - std::endl; - pointers.insert(ptr); - sampler_handle->handle = reinterpret_cast(ptr); - return HSA_STATUS_SUCCESS; - } - - hsa_status_t OfflineLoaderContext::SamplerDestroy( - hsa_agent_t agent, hsa_ext_sampler_t sampler_handle) - { - void* ptr = reinterpret_cast(sampler_handle.handle); - pointers.erase(ptr); - alignedFree(ptr); - return HSA_STATUS_SUCCESS; - } - -} // namespace loader -} // namespace hsa -} // namespace amd -} // namespace rocr diff --git a/runtime/hsa-runtime/loader/loaders.hpp b/runtime/hsa-runtime/loader/loaders.hpp deleted file mode 100644 index 606d6dffb2..0000000000 --- a/runtime/hsa-runtime/loader/loaders.hpp +++ /dev/null @@ -1,110 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef LOADERS_HPP_ -#define LOADERS_HPP_ - -#include "core/inc/amd_hsa_loader.hpp" -#include -#include - -namespace rocr { -namespace amd { -namespace hsa { -namespace loader { - - class OfflineLoaderContext : public amd::hsa::loader::Context { - private: - hsa_isa_t invalid; - hsa_isa_t gfx700, gfx701, gfx702, gfx703, gfx704, gfx705; - hsa_isa_t gfx801, gfx802, gfx803, gfx805, gfx810; - hsa_isa_t gfx900, gfx902, gfx904, gfx906, gfx908, gfx909, gfx90a, gfx90c; - hsa_isa_t gfx1010, gfx1011, gfx1012, gfx1030, gfx1031, gfx1032, gfx1033; - std::ostream& out; - typedef std::set PointerSet; - PointerSet pointers; - - public: - OfflineLoaderContext(); - - hsa_isa_t IsaFromName(const char *name) override; - - bool IsaSupportedByAgent(hsa_agent_t agent, hsa_isa_t isa) override; - - void* SegmentAlloc(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, size_t size, size_t align, bool zero) override; - - bool SegmentCopy(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* dst, size_t offset, const void* src, size_t size) override; - - void SegmentFree(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* seg, size_t size = 0) override; - - void* SegmentAddress(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* seg, size_t offset) override; - - void* SegmentHostAddress(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* seg, size_t offset) override; - - bool SegmentFreeze(amdgpu_hsa_elf_segment_t segment, hsa_agent_t agent, void* seg, size_t size) override; - - bool ImageExtensionSupported() override; - - hsa_status_t ImageCreate( - hsa_agent_t agent, - hsa_access_permission_t image_permission, - const hsa_ext_image_descriptor_t *image_descriptor, - const void *image_data, - hsa_ext_image_t *image_handle) override; - - hsa_status_t ImageDestroy( - hsa_agent_t agent, hsa_ext_image_t image_handle) override; - - hsa_status_t SamplerCreate( - hsa_agent_t agent, - const hsa_ext_sampler_descriptor_t *sampler_descriptor, - hsa_ext_sampler_t *sampler_handle) override; - - hsa_status_t SamplerDestroy( - hsa_agent_t agent, hsa_ext_sampler_t sampler_handle) override; - }; -} // namespace loader -} // namespace hsa -} // namespace amd -} // namespace rocr - -#endif // LOADERS_HPP_