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

xiebaiyuan's avatar
xiebaiyuan 已提交
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

xiebaiyuan's avatar
xiebaiyuan 已提交
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};
xiebaiyuan's avatar
xiebaiyuan 已提交
40
    GetInput<float>(g_test_image_1x3x224x224_banana, &input, dims);
41

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

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

L
liuruilong 已提交
51 52 53
    std::cout << "predict cost :"
              << paddle_mobile::time_diff(time3, time4) / max << "ms"
              << std::endl;
L
liuruilong 已提交
54 55 56 57
    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;
58 59 60 61 62 63
  }

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