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; } |
父主题: 使用示例