update boost on linux

This commit is contained in:
Bassem Girgis
2019-08-10 16:06:25 -05:00
parent 76ad52be58
commit 861b918727
5363 changed files with 483306 additions and 116507 deletions

View File

@@ -103,6 +103,7 @@ dispatch_copy_async(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
mpl::not_<
@@ -118,7 +119,7 @@ dispatch_copy_async(InputIterator first,
"copy_async() is only supported for contiguous host iterators"
);
return copy_to_device_async(first, last, result, queue);
return copy_to_device_async(first, last, result, queue, events);
}
// host -> device (async)
@@ -129,6 +130,7 @@ dispatch_copy_async(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
mpl::not_<
@@ -167,7 +169,7 @@ dispatch_copy_async(InputIterator first,
context
);
return copy_on_device_async(
mapped_host.begin(), mapped_host.end(), result, queue
mapped_host.begin(), mapped_host.end(), result, queue, events
);
}
@@ -179,6 +181,7 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
mpl::not_<
@@ -190,7 +193,7 @@ dispatch_copy(InputIterator first,
>
>::type* = 0)
{
return copy_to_device(first, last, result, queue);
return copy_to_device(first, last, result, queue, events);
}
// host -> device
@@ -202,6 +205,7 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
mpl::not_<
@@ -227,8 +231,8 @@ dispatch_copy(InputIterator first,
boost::shared_ptr<parameter_cache> parameters =
detail::parameter_cache::get_global_cache(device);
size_t map_copy_threshold;
size_t direct_copy_threshold;
uint_ map_copy_threshold;
uint_ direct_copy_threshold;
// calculate default values of thresholds
if (device.type() & device::gpu) {
@@ -258,13 +262,15 @@ dispatch_copy(InputIterator first,
// [0; map_copy_threshold) -> copy_to_device_map()
if(input_size_bytes < map_copy_threshold) {
return copy_to_device_map(first, last, result, queue);
return copy_to_device_map(first, last, result, queue, events);
}
// [map_copy_threshold; direct_copy_threshold) -> convert [first; last)
// on host and then perform copy_to_device()
else if(input_size_bytes < direct_copy_threshold) {
std::vector<output_type> vector(first, last);
return copy_to_device(vector.begin(), vector.end(), result, queue);
return copy_to_device(
vector.begin(), vector.end(), result, queue, events
);
}
// [direct_copy_threshold; inf) -> map [first; last) to device and
@@ -275,7 +281,7 @@ dispatch_copy(InputIterator first,
// return the result.
// At this point we are sure that count > 1 (first != last), so event
// returned by dispatch_copy_async() must be valid.
return dispatch_copy_async(first, last, result, queue).get();
return dispatch_copy_async(first, last, result, queue, events).get();
}
// host -> device
@@ -286,6 +292,7 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
mpl::not_<
@@ -310,8 +317,8 @@ dispatch_copy(InputIterator first,
boost::shared_ptr<parameter_cache> parameters =
detail::parameter_cache::get_global_cache(device);
size_t map_copy_threshold;
size_t direct_copy_threshold;
uint_ map_copy_threshold;
uint_ direct_copy_threshold;
// calculate default values of thresholds
if (device.type() & device::gpu) {
@@ -345,12 +352,12 @@ dispatch_copy(InputIterator first,
// copy_to_device_map() is used for every input
if(input_size_bytes < map_copy_threshold
|| direct_copy_threshold <= map_copy_threshold) {
return copy_to_device_map(first, last, result, queue);
return copy_to_device_map(first, last, result, queue, events);
}
// [map_copy_threshold; inf) -> convert [first; last)
// on host and then perform copy_to_device()
std::vector<output_type> vector(first, last);
return copy_to_device(vector.begin(), vector.end(), result, queue);
return copy_to_device(vector.begin(), vector.end(), result, queue, events);
}
// device -> host (async)
@@ -360,6 +367,7 @@ dispatch_copy_async(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -375,7 +383,7 @@ dispatch_copy_async(InputIterator first,
"copy_async() is only supported for contiguous host iterators"
);
return copy_to_host_async(first, last, result, queue);
return copy_to_host_async(first, last, result, queue, events);
}
// device -> host (async)
@@ -386,6 +394,7 @@ dispatch_copy_async(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -426,7 +435,8 @@ dispatch_copy_async(InputIterator first,
first,
last,
make_buffer_iterator<output_type>(mapped_host),
queue
queue,
events
);
// update host memory asynchronously by maping and unmaping memory
event map_event;
@@ -451,6 +461,7 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -465,7 +476,7 @@ dispatch_copy(InputIterator first,
>
>::type* = 0)
{
return copy_to_host(first, last, result, queue);
return copy_to_host(first, last, result, queue, events);
}
// device -> host
@@ -478,6 +489,7 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -505,8 +517,8 @@ dispatch_copy(InputIterator first,
boost::shared_ptr<parameter_cache> parameters =
detail::parameter_cache::get_global_cache(device);
size_t map_copy_threshold;
size_t direct_copy_threshold;
uint_ map_copy_threshold;
uint_ direct_copy_threshold;
// calculate default values of thresholds
if (device.type() & device::gpu) {
@@ -540,12 +552,12 @@ dispatch_copy(InputIterator first,
// copy_to_host_map() is used for every input
if(input_size_bytes < map_copy_threshold
|| direct_copy_threshold <= map_copy_threshold) {
return copy_to_host_map(first, last, result, queue);
return copy_to_host_map(first, last, result, queue, events);
}
// [map_copy_threshold; inf) -> copy [first;last) to temporary vector
// then copy (and convert) to result using std::copy()
std::vector<input_type> vector(count);
copy_to_host(first, last, vector.begin(), queue);
copy_to_host(first, last, vector.begin(), queue, events);
return std::copy(vector.begin(), vector.end(), result);
}
@@ -559,6 +571,7 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -587,8 +600,8 @@ dispatch_copy(InputIterator first,
boost::shared_ptr<parameter_cache> parameters =
detail::parameter_cache::get_global_cache(device);
size_t map_copy_threshold;
size_t direct_copy_threshold;
uint_ map_copy_threshold;
uint_ direct_copy_threshold;
// calculate default values of thresholds
if (device.type() & device::gpu) {
@@ -618,13 +631,13 @@ dispatch_copy(InputIterator first,
// [0; map_copy_threshold) -> copy_to_host_map()
if(input_size_bytes < map_copy_threshold) {
return copy_to_host_map(first, last, result, queue);
return copy_to_host_map(first, last, result, queue, events);
}
// [map_copy_threshold; direct_copy_threshold) -> copy [first;last) to
// temporary vector then copy (and convert) to result using std::copy()
else if(input_size_bytes < direct_copy_threshold) {
std::vector<input_type> vector(count);
copy_to_host(first, last, vector.begin(), queue);
copy_to_host(first, last, vector.begin(), queue, events);
return std::copy(vector.begin(), vector.end(), result);
}
@@ -636,7 +649,7 @@ dispatch_copy(InputIterator first,
// return the result.
// At this point we are sure that count > 1 (first != last), so event
// returned by dispatch_copy_async() must be valid.
return dispatch_copy_async(first, last, result, queue).get();
return dispatch_copy_async(first, last, result, queue, events).get();
}
// device -> device
@@ -646,6 +659,7 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -658,7 +672,7 @@ dispatch_copy(InputIterator first,
>
>::type* = 0)
{
return copy_on_device(first, last, result, queue);
return copy_on_device(first, last, result, queue, events);
}
// device -> device (specialization for buffer iterators)
@@ -668,6 +682,7 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -691,7 +706,8 @@ dispatch_copy(InputIterator first,
result.get_buffer(),
first.get_index() * sizeof(value_type),
result.get_index() * sizeof(value_type),
static_cast<size_t>(n) * sizeof(value_type));
static_cast<size_t>(n) * sizeof(value_type),
events);
return result + n;
}
@@ -702,6 +718,7 @@ dispatch_copy_async(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -714,7 +731,7 @@ dispatch_copy_async(InputIterator first,
>
>::type* = 0)
{
return copy_on_device_async(first, last, result, queue);
return copy_on_device_async(first, last, result, queue, events);
}
// device -> device (async, specialization for buffer iterators)
@@ -724,6 +741,7 @@ dispatch_copy_async(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if<
mpl::and_<
is_device_iterator<InputIterator>,
@@ -749,7 +767,8 @@ dispatch_copy_async(InputIterator first,
result.get_buffer(),
first.get_index() * sizeof(value_type),
result.get_index() * sizeof(value_type),
static_cast<size_t>(n) * sizeof(value_type)
static_cast<size_t>(n) * sizeof(value_type),
events
);
return make_future(result + n, event_);
@@ -762,12 +781,14 @@ dispatch_copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue,
const wait_list &events,
typename boost::enable_if_c<
!is_device_iterator<InputIterator>::value &&
!is_device_iterator<OutputIterator>::value
>::type* = 0)
{
(void) queue;
(void) events;
return std::copy(first, last, result);
}
@@ -826,14 +847,17 @@ dispatch_copy(InputIterator first,
/// );
/// \endcode
///
/// Space complexity: \Omega(1)
///
/// \see copy_n(), copy_if(), copy_async()
template<class InputIterator, class OutputIterator>
inline OutputIterator copy(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue = system::default_queue())
command_queue &queue = system::default_queue(),
const wait_list &events = wait_list())
{
return detail::dispatch_copy(first, last, result, queue);
return detail::dispatch_copy(first, last, result, queue, events);
}
/// Copies the values in the range [\p first, \p last) to the range
@@ -845,9 +869,10 @@ inline future<OutputIterator>
copy_async(InputIterator first,
InputIterator last,
OutputIterator result,
command_queue &queue = system::default_queue())
command_queue &queue = system::default_queue(),
const wait_list &events = wait_list())
{
return detail::dispatch_copy_async(first, last, result, queue);
return detail::dispatch_copy_async(first, last, result, queue, events);
}
} // end compute namespace