Select

场景说明

给出用于判断的条件张量cond以及长度length,从两个输入张量t,e中选择元素,将比较结果存储于输出张量output。例如:

1
2
3
4
5
cond[true,false,true,true]
t: [5,7,15,3]
e: [8,6,20,0]
output: [5,6,15,3]
length: 4

代码示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <cmath>
#include <random>
#include <cstdint>
#include <iostream>
#include "ktfop.h"
void KtfopLog(int level, const char *message)
{
  std::cout << level << ' ' << message << std::endl;
}
int main()
{
  using namespace ktfop;
  SetExternalLogFunc(KtfopLog);
  size_t length = 4;
  bool condArray[] = {true, false, true, true};           //初始化判断条件数组
  int64_t tArray[] = {5, 7, 15, 3};                       //初始化若判断条件为真,则赋值给输出的数组
  int64_t eArray[] = {8, 6, 20, 0};                       //初始化若判断条件为假,则赋值给输出的数组
  bool *cond = condArray;                                
  int64_t *t = tArray;                                   
  int64_t *e = eArray;                                   
  auto *output = new int64_t[4];                          //为输出数组分配内存空间
  int ret = -1;
  ret = Select(cond, t, e, output, length);        //调用select算子,结果存储于output数组 [5, 6, 15, 3]
  std::cout << "output: [";
  for (int i = 0; i < 4; ++i) {
      std::cout << output[i];
      if (i < 3) {
          std::cout << ", ";
      }
  }
  std::cout << "]" << std::endl;
  ret = Select(nullptr, t, e, output, length);     //打印日志"ERROR Parameter verification failed for the Select Op."
  delete[] output;
}