- #1
AIR&SPACE
- 101
- 0
So I'm trying to use max_element from the "thrust" library http://developer.nvidia.com/thrust" but am not sure the header file has the function it claims to have.
The header file for max_element can be found http://wiki.thrust.googlecode.com/hg/html/group__extrema.html#ga06e155dabb91848ffd1c5725f8e0ce14"
I am specifically interested in this version of the function:
However, when I run my code it breaks when it tries to use the BinaryPredicate comp that is found in this version of the function:
The header file, extrema.h is as follows (Note comment denoting where error occurs):
Here is the line where I call the function:
So is it just me, or is the problem that the version of the function I'm trying to use is missing from the header file?
The header file for max_element can be found http://wiki.thrust.googlecode.com/hg/html/group__extrema.html#ga06e155dabb91848ffd1c5725f8e0ce14"
I am specifically interested in this version of the function:
Code:
template<typename ForwardIterator >
ForwardIterator thrust::max_element (ForwardIterator first, ForwardIterator last)
However, when I run my code it breaks when it tries to use the BinaryPredicate comp that is found in this version of the function:
Code:
template<typename ForwardIterator , typename BinaryPredicate >
ForwardIterator thrust::max_element (ForwardIterator first, ForwardIterator last, BinaryPredicate comp)
The header file, extrema.h is as follows (Note comment denoting where error occurs):
Code:
/*
* Copyright 2008-2011 NVIDIA Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*//*! \file extrema.h
* \brief Host implementations of extrema functions.
*/
#pragma once
#include <thrust/pair.h>
namespace thrust
{
namespace detail
{
namespace host
{
template <typename ForwardIterator, typename BinaryPredicate>
ForwardIterator min_element(ForwardIterator first,
ForwardIterator last,
BinaryPredicate comp)
{
ForwardIterator imin = first;
for (; first != last; first++)
{
if (comp(*first, *imin)) imin = first;
}
return imin;
}template <typename ForwardIterator, typename BinaryPredicate>
ForwardIterator max_element(ForwardIterator first,
ForwardIterator last,
BinaryPredicate comp)
{
ForwardIterator imax = first;
for (; first != last; first++)
{
if (comp(*imax, *first)) imax = first; // ERROR OCCURS ON THIS LINE
}
return imax;
}template <typename ForwardIterator, typename BinaryPredicate>
thrust::pair<ForwardIterator,ForwardIterator> minmax_element(ForwardIterator first,
ForwardIterator last,
BinaryPredicate comp)
{
ForwardIterator imin = first;
ForwardIterator imax = first;
for (; first != last; first++)
{
if (comp(*first, *imin)) imin = first;
if (comp(*imax, *first)) imax = first;
}
return thrust::make_pair(imin, imax);
}
} // end namespace host
} // end namespace detail
} // end namespace thrust
Here is the line where I call the function:
Code:
max_loc = thrust::max_element(PsiRes,(PsiRes+Nx*My));
Last edited by a moderator: