summaryrefslogtreecommitdiff
path: root/thirdparty/embree-aarch64/common/algorithms/parallel_map.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/embree-aarch64/common/algorithms/parallel_map.h')
-rw-r--r--thirdparty/embree-aarch64/common/algorithms/parallel_map.h85
1 files changed, 0 insertions, 85 deletions
diff --git a/thirdparty/embree-aarch64/common/algorithms/parallel_map.h b/thirdparty/embree-aarch64/common/algorithms/parallel_map.h
deleted file mode 100644
index 02e1a8f8d0..0000000000
--- a/thirdparty/embree-aarch64/common/algorithms/parallel_map.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2009-2020 Intel Corporation
-// SPDX-License-Identifier: Apache-2.0
-
-#pragma once
-
-#include "parallel_sort.h"
-
-namespace embree
-{
- /*! implementation of a key/value map with parallel construction */
- template<typename Key, typename Val>
- class parallel_map
- {
- /* key/value pair to build the map */
- struct KeyValue
- {
- __forceinline KeyValue () {}
-
- __forceinline KeyValue (const Key key, const Val val)
- : key(key), val(val) {}
-
- __forceinline operator Key() const {
- return key;
- }
-
- public:
- Key key;
- Val val;
- };
-
- public:
-
- /*! parallel map constructors */
- parallel_map () {}
-
- /*! construction from pair of vectors */
- template<typename KeyVector, typename ValVector>
- parallel_map (const KeyVector& keys, const ValVector& values) { init(keys,values); }
-
- /*! initialized the parallel map from a vector with keys and values */
- template<typename KeyVector, typename ValVector>
- void init(const KeyVector& keys, const ValVector& values)
- {
- /* reserve sufficient space for all data */
- assert(keys.size() == values.size());
- vec.resize(keys.size());
-
- /* generate key/value pairs */
- parallel_for( size_t(0), keys.size(), size_t(4*4096), [&](const range<size_t>& r) {
- for (size_t i=r.begin(); i<r.end(); i++)
- vec[i] = KeyValue((Key)keys[i],values[i]);
- });
-
- /* perform parallel radix sort of the key/value pairs */
- std::vector<KeyValue> temp(keys.size());
- radix_sort<KeyValue,Key>(vec.data(),temp.data(),keys.size());
- }
-
- /*! Returns a pointer to the value associated with the specified key. The pointer will be nullptr of the key is not contained in the map. */
- __forceinline const Val* lookup(const Key& key) const
- {
- typename std::vector<KeyValue>::const_iterator i = std::lower_bound(vec.begin(), vec.end(), key);
- if (i == vec.end()) return nullptr;
- if (i->key != key) return nullptr;
- return &i->val;
- }
-
- /*! If the key is in the map, the function returns the value associated with the key, otherwise it returns the default value. */
- __forceinline Val lookup(const Key& key, const Val& def) const
- {
- typename std::vector<KeyValue>::const_iterator i = std::lower_bound(vec.begin(), vec.end(), key);
- if (i == vec.end()) return def;
- if (i->key != key) return def;
- return i->val;
- }
-
- /*! clears all state */
- void clear() {
- vec.clear();
- }
-
- private:
- std::vector<KeyValue> vec; //!< vector containing sorted elements
- };
-}