test_mobilenet_GPU.cpp 2.3 KB
Newer Older
Y
yangfei 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/* Copyright (c) 2018 PaddlePaddle Authors. 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. */

#include <iostream>
Y
yangfei 已提交
16
#include "../../src/common/types.h"
Y
yangfei 已提交
17 18 19 20
#include "../test_helper.h"
#include "../test_include.h"

int main() {
Y
yangfei 已提交
21
  paddle_mobile::PaddleMobile<paddle_mobile::GPU_CL> paddle_mobile;
22
  //    paddle_mobile.SetThreadNum(4);
L
liuruilong 已提交
23
  auto time1 = paddle_mobile::time();
Y
yangfei 已提交
24
#ifdef PADDLE_MOBILE_CL
Y
yangfei 已提交
25
  paddle_mobile.SetCLPath("/data/local/tmp/bin");
Y
yangfei 已提交
26 27
#endif

L
liuruilong 已提交
28 29 30
  auto isok = paddle_mobile.Load(
      std::string(g_mobilenet_vision) + "/vision_mobilenet_model",
      std::string(g_mobilenet_vision) + "/vision_mobilenet_params", true);
Y
yangfei 已提交
31

L
liuruilong 已提交
32
  //  auto isok = paddle_mobile.Load(std::string(g_mobilenet), true);
33
  if (isok) {
L
liuruilong 已提交
34
    auto time2 = paddle_mobile::time();
L
liuruilong 已提交
35
    std::cout << "load cost :" << paddle_mobile::time_diff(time1, time2) << "ms"
Y
yangfei 已提交
36
              << std::endl;
37 38 39

    std::vector<float> input;
    std::vector<int64_t> dims{1, 3, 224, 224};
L
liuruilong 已提交
40 41
    GetInput<float>(g_test_image_1x3x224x224_vision_mobilenet_input, &input,
                    dims);
42

L
liuruilong 已提交
43
    std::vector<float> vec_result = paddle_mobile.Predict(input, dims);
L
liuruilong 已提交
44

L
liuruilong 已提交
45
    auto time3 = paddle_mobile::time();
L
liuruilong 已提交
46
    int max = 1;
L
liuruilong 已提交
47 48 49
    for (int i = 0; i < max; ++i) {
      vec_result = paddle_mobile.Predict(input, dims);
    }
L
liuruilong 已提交
50
    auto time4 = paddle_mobile::time();
L
liuruilong 已提交
51

L
liuruilong 已提交
52 53 54
    std::cout << "predict cost :"
              << paddle_mobile::time_diff(time3, time4) / max << "ms"
              << std::endl;
L
liuruilong 已提交
55 56 57 58
    std::vector<float>::iterator biggest =
        std::max_element(std::begin(vec_result), std::end(vec_result));
    std::cout << " Max element is " << *biggest << " at position "
              << std::distance(std::begin(vec_result), biggest) << std::endl;
59 60 61 62 63 64
  }

  std::cout << "如果结果Nan请查看: test/images/g_test_image_1x3x224x224_banana "
               "是否存在?"
            << std::endl;
  return 0;
Y
yangfei 已提交
65
}