-
Notifications
You must be signed in to change notification settings - Fork 67
/
Copy pathtest_torch_dlrm.h
57 lines (49 loc) · 3.89 KB
/
test_torch_dlrm.h
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
// in compliance with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
// or implied. See the License for the specific language governing permissions and limitations under
// the License.
//
// ╔════════════════════════════════════════════════════════════════════════════════════════╗
// ║──█████████╗───███████╗───████████╗───██╗──────██╗───███████╗───████████╗───████████╗───║
// ║──██╔══════╝──██╔════██╗──██╔════██╗──██║──────██║──██╔════██╗──██╔════██╗──██╔════██╗──║
// ║──████████╗───██║────██║──████████╔╝──██║──█╗──██║──█████████║──████████╔╝──██║────██║──║
// ║──██╔═════╝───██║────██║──██╔════██╗──██║█████╗██║──██╔════██║──██╔════██╗──██║────██║──║
// ║──██║─────────╚███████╔╝──██║────██║──╚████╔████╔╝──██║────██║──██║────██║──████████╔╝──║
// ║──╚═╝──────────╚══════╝───╚═╝────╚═╝───╚═══╝╚═══╝───╚═╝────╚═╝──╚═╝────╚═╝──╚═══════╝───║
// ╚════════════════════════════════════════════════════════════════════════════════════════╝
//
// Authors: Aster JIAN ([email protected])
// Yzx ([email protected])
// Ao LI ([email protected])
// Paul LU ([email protected])
#pragma once
#include <string>
#include <vector>
#include "unit_test/unit_test_torch_helper.h"
TEST(TestTorchDlrm, DLRM) {
const auto model_path = std::string(torch_root_dir) + "dlrm.pth";
std::vector<size_t> offset(6, 0);
offset[1] = 1;
offset[3] = 1;
offset[5] = 1;
std::vector<int> input0{3, 0, 2};
std::vector<int> input1{1, 1, 2};
std::vector<int> input2{1, 1};
const torch::Tensor sparse_offset =
::torch::from_blob(offset.data(), {3, 2}, ::torch::requires_grad(false).dtype(c10::kLong))
.clone();
const std::vector<at::Tensor> sparse_input{
::torch::tensor({3, 0, 2}, ::torch::requires_grad(false).dtype(c10::kLong)),
::torch::tensor({1, 1, 2}, ::torch::requires_grad(false).dtype(c10::kLong)),
::torch::tensor({1, 1}, ::torch::requires_grad(false).dtype(c10::kLong)),
};
const auto dense_input = ::torch::randn({2, 4}, device);
TestTorchInference(model_path, {dense_input, sparse_offset, sparse_input}, "float32", 1e-04);
}