1a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
2a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower
3a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowerLicensed under the Apache License, Version 2.0 (the "License");
4a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFloweryou may not use this file except in compliance with the License.
5a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowerYou may obtain a copy of the License at
6a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower
7a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower    http://www.apache.org/licenses/LICENSE-2.0
8a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower
9a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowerUnless required by applicable law or agreed to in writing, software
10a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowerdistributed under the License is distributed on an "AS IS" BASIS,
11a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowerSee the License for the specific language governing permissions and
13a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowerlimitations under the License.
14a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower==============================================================================*/
15a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower
16a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower#include "tensorflow/compiler/xla/tests/client_library_test_base.h"
17a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower
18a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowernamespace xla {
19a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowernamespace {
20a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlowerTEST_F(ClientLibraryTestBase, DeepGraph) {
21a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  // TODO(b/62624812): To trigger the stack overflow this test is
22a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  // intended to track, we need to set kDepth to 20000.
23a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  // Unfortunately, setting it that high causes the test to time out.
24a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  const int kDepth = 200;
25a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  ComputationBuilder b(client_, TestName());
26a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  ComputationDataHandle x;
27a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  ComputationDataHandle y;
28a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  auto x_data = CreateR0Parameter<int32>(3, 0, "x", &b, &x);
29a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  auto y_data = CreateR0Parameter<int32>(1, 1, "y", &b, &y);
30a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  ComputationDataHandle z = x;
31a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  for (int i = 0; i < kDepth; ++i) {
32a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower    z = b.Add(z, y);
33a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  }
34a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower  ComputeAndCompareR0<int32>(&b, /*expected=*/kDepth + 3,
35a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower                             {x_data.get(), y_data.get()});
36a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower}
37a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower}  // namespace
38a7c36173cabcc1289a836e8143accb5f0914b19aA. Unique TensorFlower}  // namespace xla
39