| |
| // Copyright (c) 2023-2024, ARM Limited. |
| // |
| // 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. |
| |
| #ifndef VERIFIERS_H_ |
| #define VERIFIERS_H_ |
| |
| #include "verify_utils.h" |
| |
| namespace TosaReference |
| { |
| /// \brief Perform dot-product based verification |
| /// |
| /// \param referenceTensor Reference tensor |
| /// \param boundsTensor Reference tensor when ran on abs(input) |
| /// \param implementationTensor Implementation resulting tensor |
| /// \param dpInfo Dot-product verification meta-data |
| /// |
| /// \return True if compliant else false |
| bool verifyDotProduct(const CTensor* referenceTensor, |
| const CTensor* boundsTensor, |
| const CTensor* implementationTensor, |
| const DotProductVerifyInfo& dpInfo); |
| |
| /// \brief Perform exact result verification |
| /// |
| /// \param referenceTensor Reference tensor |
| /// \param implementationTensor Implementation resulting tensor |
| /// |
| /// \return True if compliant else false |
| bool verifyExact(const CTensor* referenceTensor, const CTensor* implementationTensor); |
| |
| /// \brief Perform reduce product result verification |
| /// |
| /// \param referenceTensor Reference tensor |
| /// \param implementationTensor Implementation resulting tensor |
| /// \param rpInfo Reduce-product verification meta-data |
| /// |
| /// \return True if compliant else false |
| bool verifyReduceProduct(const CTensor* referenceTensor, |
| const CTensor* implementationTensor, |
| const ReduceProductVerifyInfo& rpInfo); |
| |
| /// \brief Perform ULP result verification |
| /// |
| /// \param referenceTensor Reference tensor |
| /// \param implementationTensor Implementation resulting tensor |
| /// \param ulpInfo ULP tolerence info for the comparison |
| /// |
| /// \return True if compliant else false |
| bool verifyULP(const CTensor* referenceTensor, const CTensor* implementationTensor, const UlpVerifyInfo& ulpInfo); |
| |
| /// \brief Perform abs-error based verification |
| /// |
| /// \param referenceTensor Reference tensor |
| /// \param boundsTensor Reference bounds tensor (according to op) |
| /// \param implementationTensor Implementation resulting tensor |
| /// \param aeInfo Abs-error verification meta-data |
| /// |
| /// \return True if compliant else false |
| bool verifyAbsError(const CTensor* referenceTensor, |
| const CTensor* boundsTensor, |
| const CTensor* implementationTensor, |
| const AbsErrorVerifyInfo& aeInfo); |
| |
| /// \brief Perform relative result verification |
| /// |
| /// \param referenceTensor Reference tensor |
| /// \param implementationTensor Implementation resulting tensor |
| /// \param rInfo Relative verification meta-data |
| /// |
| /// \return True if compliant else false |
| bool verifyRelative(const CTensor* referenceTensor, |
| const CTensor* implementationTensor, |
| const RelativeVerifyInfo& rInfo); |
| |
| }; // namespace TosaReference |
| |
| #endif // VERIFIERS_H_ |