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 16 17
/* 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>
#include "../test_helper.h"
#include "../test_include.h"
Y
yangfei 已提交
18
#include "../../src/common/types.h"
Y
yangfei 已提交
19 20

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 25 26 27 28 29 30 31
#ifdef PADDLE_MOBILE_CL
    paddle_mobile.SetCLPath("/data/local/tmp/bin");
#endif

    auto isok = paddle_mobile.Load(std::string(g_mobilenet_mul) + "/model",
                       std::string(g_mobilenet_mul) + "/params", true);

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

    std::vector<float> input;
    std::vector<int64_t> dims{1, 3, 224, 224};
    GetInput<float>(g_test_image_1x3x224x224_banana, &input, dims);

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

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

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

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