[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