| 313 | |
| 314 | template <typename NativeT> |
| 315 | void ParametricDotTest::TestImpl() { |
| 316 | DotTestParam param = GetParam(); |
| 317 | |
| 318 | std::unique_ptr<Array2D<NativeT>> dot_lhs_data = |
| 319 | MakeLinspaceArray2D<NativeT>(0.0, 1.0, param.m, param.k); |
| 320 | Literal dot_lhs_lit = LiteralUtil::CreateR2FromArray2DWithLayout( |
| 321 | *dot_lhs_data, LayoutUtil::MakeLayout( |
| 322 | MinorToMajorForIsRowMajor(param.dot_lhs_row_major))); |
| 323 | std::unique_ptr<GlobalData> dot_lhs_handle = |
| 324 | client_->TransferToServer(dot_lhs_lit).ConsumeValueOrDie(); |
| 325 | |
| 326 | std::unique_ptr<Array2D<NativeT>> dot_rhs_data = |
| 327 | MakeLinspaceArray2D<NativeT>(0.0, 1.0, param.k, param.n); |
| 328 | Layout rhs_layout = LayoutUtil::MakeLayout( |
| 329 | MinorToMajorForIsRowMajor(param.dot_rhs_row_major)); |
| 330 | Literal dot_rhs_lit = |
| 331 | LiteralUtil::CreateR2FromArray2DWithLayout(*dot_rhs_data, rhs_layout); |
| 332 | std::unique_ptr<GlobalData> dot_rhs_handle = |
| 333 | client_->TransferToServer(dot_rhs_lit).ConsumeValueOrDie(); |
| 334 | |
| 335 | std::unique_ptr<Array2D<NativeT>> addend_data; |
| 336 | Literal addend_lit; |
| 337 | std::unique_ptr<GlobalData> addend_handle; |
| 338 | |
| 339 | if (param.has_addend) { |
| 340 | addend_data = MakeLinspaceArray2D<NativeT>(0.0, 1.0, param.m, param.n); |
| 341 | addend_lit = LiteralUtil::CreateR2FromArray2DWithLayout( |
| 342 | *addend_data, LayoutUtil::MakeLayout( |
| 343 | MinorToMajorForIsRowMajor(param.addend_row_major))); |
| 344 | addend_handle = client_->TransferToServer(addend_lit).ConsumeValueOrDie(); |
| 345 | } |
| 346 | |
| 347 | XlaBuilder builder(TestName()); |
| 348 | auto prim_type = primitive_util::NativeToPrimitiveType<NativeT>(); |
| 349 | auto result = |
| 350 | Dot(Parameter(&builder, 0, |
| 351 | ShapeUtil::MakeShapeWithLayout( |
| 352 | prim_type, {param.m, param.k}, |
| 353 | MinorToMajorForIsRowMajor(param.dot_lhs_row_major)), |
| 354 | "dot_lhs"), |
| 355 | Parameter(&builder, 1, |
| 356 | ShapeUtil::MakeShapeWithLayout( |
| 357 | prim_type, {param.k, param.n}, |
| 358 | MinorToMajorForIsRowMajor(param.dot_rhs_row_major)), |
| 359 | "dot_rhs")); |
| 360 | |
| 361 | if (param.has_addend) { |
| 362 | result = |
| 363 | Add(result, |
| 364 | Parameter(&builder, 2, |
| 365 | ShapeUtil::MakeShapeWithLayout( |
| 366 | prim_type, {param.m, param.n}, |
| 367 | MinorToMajorForIsRowMajor(param.addend_row_major)), |
| 368 | "addend")); |
| 369 | } |
| 370 | |
| 371 | std::unique_ptr<Array2D<NativeT>> expected; |
| 372 | if (param.has_addend) { |
no test coverage detected