Beispiel #1
0
void
apply_ukernel(View0 in0,
	      View1 in1,
	      View2 in2,
	      View3 out)
{
  dda::Data<typename View0::block_type, dda::in> data0(in0.block());
  dda::Data<typename View1::block_type, dda::in> data1(in1.block());
  dda::Data<typename View2::block_type, dda::in> data2(in2.block());
  dda::Data<typename View3::block_type, dda::out> data3(out.block());

  assert(data0.stride(1) == 1);
  assert(data1.stride(1) == 1);
  assert(data2.stride(1) == 1);
  assert(data3.stride(1) == 1);

  example::Cblock kernel((uintptr_t)data0.ptr(), data0.stride(0),
			 (uintptr_t)data1.ptr(), data1.stride(0),
			 (uintptr_t)data2.ptr(), data2.stride(0),
			 (uintptr_t)data3.ptr(), data3.stride(0),
			 out.size(0), out.size(1));
  
  vsip_csl::ukernel::Ukernel<example::Cblock> uk(kernel);

  uk();
}
Beispiel #2
0
void
apply_ukernel(View0 in0,
	      View1 in1,
	      View2 in2,
	      View3 out)
{
  dda::Ext_data<typename View0::block_type> ext0(in0.block());
  dda::Ext_data<typename View1::block_type> ext1(in1.block());
  dda::Ext_data<typename View2::block_type> ext2(in2.block());
  dda::Ext_data<typename View3::block_type> ext3(out.block());

  assert(ext0.stride(1) == 1);
  assert(ext1.stride(1) == 1);
  assert(ext2.stride(1) == 1);
  assert(ext3.stride(1) == 1);

  example::Cblock kernel((uintptr_t)ext0.data(), ext0.stride(0),
			 (uintptr_t)ext1.data(), ext1.stride(0),
			 (uintptr_t)ext2.data(), ext2.stride(0),
			 (uintptr_t)ext3.data(), ext3.stride(0),
			 out.size(0), out.size(1));
  
  vsip_csl::ukernel::Ukernel<example::Cblock> uk(kernel);

  uk();
}
Beispiel #3
0
void
check_alias(
  View1<T1, Block1>& vec1,
  View2<T2, Block2>& vec2)
{
  fill_block(vec1.block(), 2);
  test_assert(check_vector(vec1, 2));
  test_assert(check_vector(vec2, 2));

  fill_block(vec2.block(), 3);
  test_assert(check_vector(vec1, 3));
  test_assert(check_vector(vec2, 3));
}
Beispiel #4
0
void
check_not_alias(
  View1<T1, Block1>& vec1,
  View2<T2, Block2>& vec2)
{
  fill_block(vec1.block(), 2);
  fill_block(vec2.block(), 3);

  // Make sure that updates to vec2 do not affect vec1.
  test_assert(check_vector(vec1, 2));

  // And visa-versa.
  fill_block(vec1.block(), 4);
  test_assert(check_vector(vec2, 3));
}