本文整理汇总了C++中af::constant方法的典型用法代码示例。如果您正苦于以下问题:C++ af::constant方法的具体用法?C++ af::constant怎么用?C++ af::constant使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类af
的用法示例。
在下文中一共展示了af::constant方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TEST
TEST(Join, JoinLargeDim) {
using af::constant;
using af::deviceGC;
using af::span;
// const int nx = 32;
const int nx = 1;
const int ny = 4 * 1024 * 1024;
const int nw = 4 * 1024 * 1024;
deviceGC();
{
array in = randu(nx, ny, u8);
array joined = join(0, in, in);
dim4 in_dims = in.dims();
dim4 joined_dims = joined.dims();
ASSERT_EQ(2 * in_dims[0], joined_dims[0]);
ASSERT_EQ(0.f, sum<float>((joined(0, span) - joined(1, span)).as(f32)));
array in2 = constant(1, (dim_t)nx, (dim_t)ny, (dim_t)2, (dim_t)nw, u8);
joined = join(3, in, in);
in_dims = in.dims();
joined_dims = joined.dims();
ASSERT_EQ(2 * in_dims[3], joined_dims[3]);
}
}
示例2: constant
TEST(JIT, CPP_JIT_HASH)
{
const int num = 20;
const float valA = 3;
const float valB = 5;
const float valC = 2;
const float valD = valA + valB;
const float valE = valA + valC;
const float valF1 = valD * valE - valE;
const float valF2 = valD * valE - valD;
array a = constant(valA, num);
array b = constant(valB, num);
array c = constant(valC, num);
eval(a);
eval(b);
eval(c);
// Creating a kernel
{
array d = a + b;
array e = a + c;
array f1 = d * e - e;
float *hF1 = f1.host<float>();
for (int i = 0; i < num; i++) {
ASSERT_EQ(hF1[i], valF1);
}
freeHost(hF1);
}
// Making sure a different kernel is generated
{
array d = a + b;
array e = a + c;
array f2 = d * e - d;
float *hF2 = f2.host<float>();
for (int i = 0; i < num; i++) {
ASSERT_EQ(hF2[i], valF2);
}
freeHost(hF2);
}
}
示例3: constant
TEST(Accum, MaxDim)
{
const size_t largeDim = 65535 * 32 + 1;
//first dimension kernel tests
array input = constant(0, 2, largeDim, 2, 2);
input(span, seq(0, 9999), span, span) = 1;
array gold_first = constant(0, 2, largeDim, 2, 2);
gold_first(span, seq(0, 9999), span, span) = range(2, 10000, 2, 2) + 1;
array output_first = accum(input, 0);
ASSERT_ARRAYS_EQ(gold_first, output_first);
input = constant(0, 2, 2, 2, largeDim);
input(span, span, span, seq(0, 9999)) = 1;
gold_first = constant(0, 2, 2, 2, largeDim);
gold_first(span, span, span, seq(0, 9999)) = range(2, 2, 2, 10000) + 1;
output_first = accum(input, 0);
ASSERT_ARRAYS_EQ(gold_first, output_first);
//other dimension kernel tests
input = constant(0, 2, largeDim, 2, 2);
input(span, seq(0, 9999), span, span) = 1;
array gold_dim = constant(10000, 2, largeDim, 2, 2);
gold_dim(span, seq(0, 9999), span, span) = range(dim4(2, 10000, 2, 2), 1) + 1;
array output_dim = accum(input, 1);
ASSERT_ARRAYS_EQ(gold_dim, output_dim);
input = constant(0, 2, 2, 2, largeDim);
input(span, span, span, seq(0, 9999)) = 1;
gold_dim = constant(0, 2, 2, 2, largeDim);
gold_dim(span, span, span, seq(0, 9999)) = range(dim4(2, 2, 2, 10000), 1) + 1;
output_dim = accum(input, 1);
ASSERT_ARRAYS_EQ(gold_dim, output_dim);
}
示例4: TEST
TEST(FFTConvolve, Docs_Unified_Wrapper)
{
// This unit test doesn't necessarily need to function
// accuracy as af::convolve is merely a wrapper to
// af::convolve[1|2|3]
using af::array;
using af::dim4;
using af::randu;
using af::constant;
using af::convolve;
//![ex_image_convolve_1d]
array a = randu(10);
//af_print(a);
//a [10 1 1 1] = 0.0000 0.1315 0.7556 0.4587 0.5328 0.2190 0.0470 0.6789 0.6793 0.9347
array b = randu(4);
//af_print(b);
//b [4 1 1 1] = 0.3835 0.5194 0.8310 0.0346
array c = convolve(a, b);
//af_print(c);
//c [10 1 1 1] = 0.3581 0.6777 1.0750 0.7679 0.5903 0.4851 0.6598 1.2770 1.0734 0.8002
//![ex_image_convolve_1d]
//![ex_image_convolve_2d]
array d = constant(0.5, 5, 5);
//af_print(d);
//d [5 5 1 1]
// 0.5000 0.5000 0.5000 0.5000 0.5000
// 0.5000 0.5000 0.5000 0.5000 0.5000
// 0.5000 0.5000 0.5000 0.5000 0.5000
// 0.5000 0.5000 0.5000 0.5000 0.5000
// 0.5000 0.5000 0.5000 0.5000 0.5000
array e = constant(1, 2, 2);
//af_print(e);
//e [2 2 1 1]
// 1.0000 1.0000
// 1.0000 1.0000
array f = fftConvolve(d, e);
//af_print(f);
//f [5 5 1 1]
// 2.0000 2.0000 2.0000 2.0000 1.0000
// 2.0000 2.0000 2.0000 2.0000 1.0000
// 2.0000 2.0000 2.0000 2.0000 1.0000
// 2.0000 2.0000 2.0000 2.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000 0.5000
//![ex_image_convolve_2d]
//![ex_image_convolve_3d]
array g = constant(1, 4, 4, 4);
//af_print(g);
//g [4 4 4 1]
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
// 1.0000 1.0000 1.0000 1.0000
array h = constant(0.5, 2, 2, 2);
//af_print(h);
//h [2 2 2 1]
// 0.5000 0.5000
// 0.5000 0.5000
// 0.5000 0.5000
// 0.5000 0.5000
array i = fftConvolve(g, h);
//af_print(i);
//i [4 4 4 1]
// 4.0000 4.0000 4.0000 2.0000
// 4.0000 4.0000 4.0000 2.0000
// 4.0000 4.0000 4.0000 2.0000
// 2.0000 2.0000 2.0000 1.0000
// 4.0000 4.0000 4.0000 2.0000
// 4.0000 4.0000 4.0000 2.0000
// 4.0000 4.0000 4.0000 2.0000
// 2.0000 2.0000 2.0000 1.0000
// 4.0000 4.0000 4.0000 2.0000
// 4.0000 4.0000 4.0000 2.0000
// 4.0000 4.0000 4.0000 2.0000
// 2.0000 2.0000 2.0000 1.0000
// 2.0000 2.0000 2.0000 1.0000
// 2.0000 2.0000 2.0000 1.0000
// 2.0000 2.0000 2.0000 1.0000
//.........这里部分代码省略.........