[Beignet] [PATCH] replace hash_map with map
Guo, Yejun
yejun.guo at intel.com
Fri Dec 26 04:58:19 PST 2014
Not yet, there are still something need to be done recently, stay tuned, ☺
From: spring_wind [mailto:18969076807 at yeah.net]
Sent: Friday, December 26, 2014 8:55 PM
To: Guo, Yejun
Cc: beignet at lists.freedesktop.org
Subject: Re:[Beignet] [PATCH] replace hash_map with map
Great, is it enough to let me build beignet on CentOS 6.5?
At 2014-12-24 16:17:46, "Guo Yejun" <yejun.guo at intel.com<mailto:yejun.guo at intel.com>> wrote:
>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 <yejun.guo at intel.com<mailto:yejun.guo at intel.com>>
>---
> 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 <benjamin.segovia at intel.com<mailto:benjamin.segovia at intel.com>>
>- */
>-
>-/**
>- * \file hash_map.hpp
>- *
>- * \author Benjamin Segovia <benjamin.segovia at intel.com<mailto:benjamin.segovia at intel.com>>
>- */
>-
>-#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
>Beignet at lists.freedesktop.org<mailto:Beignet at lists.freedesktop.org>
>http://lists.freedesktop.org/mailman/listinfo/beignet
来自网易手机号码邮箱了解更多<http://shouji.163.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/beignet/attachments/20141226/a9dc5c75/attachment-0001.html>
More information about the Beignet
mailing list