there is no strong evidence to show hash_map makes better performance for beignet, since hash_map requires std::hash which is not supported in some g++ old versions, so replace hash_map with map.
Signed-off-by: Guo Yejun <[email protected]> --- backend/src/CMakeLists.txt | 1 - backend/src/backend/program.hpp | 3 +- backend/src/ir/unit.hpp | 5 +-- backend/src/llvm/llvm_gen_backend.hpp | 5 +-- backend/src/sys/hash_map.hpp | 82 ----------------------------------- 5 files changed, 5 insertions(+), 91 deletions(-) delete mode 100644 backend/src/sys/hash_map.hpp diff --git a/backend/src/CMakeLists.txt b/backend/src/CMakeLists.txt index deba230..bec0d2a 100644 --- a/backend/src/CMakeLists.txt +++ b/backend/src/CMakeLists.txt @@ -21,7 +21,6 @@ add_dependencies(beignet_bitcode libocl) set (GBE_SRC ${ocl_blob_file} sys/vector.hpp - sys/hash_map.hpp sys/map.hpp sys/set.hpp sys/intrusive_list.hpp diff --git a/backend/src/backend/program.hpp b/backend/src/backend/program.hpp index 4e6b275..446c521 100644 --- a/backend/src/backend/program.hpp +++ b/backend/src/backend/program.hpp @@ -32,7 +32,6 @@ #include "ir/function.hpp" #include "ir/printf.hpp" #include "ir/sampler.hpp" -#include "sys/hash_map.hpp" #include "sys/vector.hpp" #include <string> @@ -307,7 +306,7 @@ namespace gbe { /*! Allocate an empty kernel. */ virtual Kernel *allocateKernel(const std::string &name) = 0; /*! Kernels sorted by their name */ - hash_map<std::string, Kernel*> kernels; + map<std::string, Kernel*> kernels; /*! Global (constants) outside any kernel */ ir::ConstantSet *constantSet; /*! Use custom allocators */ diff --git a/backend/src/ir/unit.hpp b/backend/src/ir/unit.hpp index b5b0fa9..e2ccbe8 100644 --- a/backend/src/ir/unit.hpp +++ b/backend/src/ir/unit.hpp @@ -26,7 +26,6 @@ #include "ir/constant.hpp" #include "ir/register.hpp" -#include "sys/hash_map.hpp" #include "sys/map.hpp" namespace gbe { @@ -41,7 +40,7 @@ namespace ir { class Unit : public NonCopyable { public: - typedef hash_map<std::string, Function*> FunctionSet; + typedef map<std::string, Function*> FunctionSet; /*! Create an empty unit */ Unit(PointerSize pointerSize = POINTER_32_BITS); /*! Release everything (*including* the function pointers) */ @@ -76,7 +75,7 @@ namespace ir { bool getValid() { return valid; } private: friend class ContextInterface; //!< Can free modify the unit - hash_map<std::string, Function*> functions; //!< All the defined functions + FunctionSet functions; //!< All the defined functions ConstantSet constantSet; //!< All the constants defined in the unit PointerSize pointerSize; //!< Size shared by all pointers GBE_CLASS(Unit); diff --git a/backend/src/llvm/llvm_gen_backend.hpp b/backend/src/llvm/llvm_gen_backend.hpp index 966a06c..e127996 100644 --- a/backend/src/llvm/llvm_gen_backend.hpp +++ b/backend/src/llvm/llvm_gen_backend.hpp @@ -37,7 +37,6 @@ #endif #include "sys/platform.hpp" #include "sys/map.hpp" -#include "sys/hash_map.hpp" #include <algorithm> // LLVM Type @@ -57,7 +56,7 @@ namespace gbe /*! Build the hash map for OCL functions on Gen */ struct OCLIntrinsicMap { - /*! Build the intrinsic hash map */ + /*! Build the intrinsic map */ OCLIntrinsicMap(void) { #define DECL_LLVM_GEN_FUNCTION(ID, NAME) \ map.insert(std::make_pair(#NAME, GEN_OCL_##ID)); @@ -65,7 +64,7 @@ namespace gbe #undef DECL_LLVM_GEN_FUNCTION } /*! Sort intrinsics with their names */ - hash_map<std::string, OCLInstrinsic> map; + gbe::map<std::string, OCLInstrinsic> map; OCLInstrinsic find(const std::string symbol) const { auto it = map.find(symbol); diff --git a/backend/src/sys/hash_map.hpp b/backend/src/sys/hash_map.hpp deleted file mode 100644 index e153cf3..0000000 --- a/backend/src/sys/hash_map.hpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * Author: Benjamin Segovia <[email protected]> - */ - -/** - * \file hash_map.hpp - * - * \author Benjamin Segovia <[email protected]> - */ - -#ifndef __GBE_HASH_MAP_HPP__ -#define __GBE_HASH_MAP_HPP__ - -#include "sys/platform.hpp" - -#ifdef __MSVC__ -#include <unordered_map> -#else -#include <tr1/unordered_map> -#endif /* __MSVC__ */ - -namespace gbe -{ - /*! Add specific allocator to the hash map */ - template <class Key, - class T, - class Hash = std::hash<Key>, - class Pred = std::equal_to<Key>> - class hash_map : public std::tr1::unordered_map<Key,T,Hash,Pred,Allocator<std::pair<const Key,T>>>, - public NonCopyable - { - public: - // Typedefs - typedef std::pair<const Key, T> value_type; - typedef Allocator<value_type> allocator_type; - typedef std::tr1::unordered_map<Key,T,Hash,Pred,allocator_type> parent_type; - typedef typename allocator_type::size_type size_type; - typedef Key key_type; - typedef T mapped_type; - typedef Hash hasher; - typedef Pred key_equal; - - /*! Default constructor */ - INLINE explicit hash_map(size_type n = 3, - const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()) : - parent_type(n, hf, eql, a) {} - /*! Iteration constructor */ - template <class InputIterator> - INLINE hash_map(InputIterator first, - InputIterator last, - size_type n = 3, - const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()) : - parent_type(first,last,n,hf,eql,a) {} -#if 0 - /*! Copy constructor */ - INLINE hash_map(const hash_map &other) : parent_type(other) {} -#endif - GBE_CLASS(hash_map); - }; -} /* namespace gbe */ - -#endif /* __GBE_HASH_MAP_HPP__ */ - -- 1.9.1 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
