提交 46fff4dd 编写于 作者: B baolei.an

[LITE][BM] modify device info location,test=develop

上级 3a60b583
......@@ -3,3 +3,4 @@ if (NOT LITE_WITH_BM)
endif()
lite_cc_library(target_wrapper_bm SRCS target_wrapper.cc DEPS ${bm_runtime_libs})
lite_cc_library(device_info_bm SRCS device_info.cc)
// Copyright (c) 2019 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.
// Parts of the following code in this file refs to
// https://github.com/Tencent/ncnn/blob/master/src/cpu.cpp
// Tencent is pleased to support the open source community by making ncnn
// available.
//
// Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved.
//
// Licensed under the BSD 3-Clause License (the "License"); you may not use this
// file except in compliance with the License. You may obtain a copy of the
// License at
//
// https://opensource.org/licenses/BSD-3-Clause
//
// 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 "lite/backends/bm/device_info.h"
#include <algorithm>
#include <limits>
namespace paddle {
namespace lite {
#ifdef LITE_WITH_BM
void Device<TARGET(kBM)>::SetId(int device_id) {
LOG(INFO) << "Set bm device " << device_id;
TargetWrapper<TARGET(kBM)>::SetDevice(device_id);
idx_ = device_id;
}
void Device<TARGET(kBM)>::Init() { SetId(idx_); }
int Device<TARGET(kBM)>::core_num() {
return TargetWrapper<TARGET(kBM)>::num_devices();
}
#endif // LITE_WITH_BM
} // namespace lite
} // namespace paddle
// Copyright (c) 2019 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.
#pragma once
#include <cstdarg>
#include <string>
#include <vector>
#include "lite/core/device_info.h"
#include "lite/core/tensor.h"
#include "lite/utils/cp_logging.h"
namespace paddle {
namespace lite {
#ifdef LITE_WITH_BM
template <>
class Device<TARGET(kBM)> {
public:
Device(int dev_id, int max_stream = 1)
: idx_(dev_id), max_stream_(max_stream) {}
void Init();
int id() { return idx_; }
int max_stream() { return 1; }
std::string name() { return "BM"; }
float max_memory() { return 16; }
int core_num();
void SetId(int idx);
int sm_version() { return 0; }
bool has_fp16() { return false; }
bool has_int8() { return false; }
bool has_hmma() { return false; }
bool has_imma() { return false; }
int runtime_version() { return 0; }
private:
void CreateQueue() {}
void GetInfo() {}
private:
int idx_{0};
int max_stream_{1};
std::string device_name_;
float max_memory_;
int sm_version_;
bool has_fp16_;
bool has_int8_;
bool has_hmma_;
bool has_imma_;
int runtime_version_;
};
template class Env<TARGET(kBM)>;
#endif
} // namespace lite
} // namespace paddle
......@@ -1240,19 +1240,6 @@ void Device<TARGET(kMLU)>::CreateQueue() {
}
#endif // LITE_WITH_MLU
#ifdef LITE_WITH_BM
void Device<TARGET(kBM)>::SetId(int device_id) {
LOG(INFO) << "Set bm device " << device_id;
TargetWrapper<TARGET(kBM)>::SetDevice(device_id);
idx_ = device_id;
}
void Device<TARGET(kBM)>::Init() { SetId(idx_); }
int Device<TARGET(kBM)>::core_num() {
return TargetWrapper<TARGET(kBM)>::num_devices();
}
#endif // LITE_WITH_BM
#ifdef LITE_WITH_CUDA
void Device<TARGET(kCUDA)>::Init() {
......
......@@ -221,49 +221,6 @@ class Device<TARGET(kMLU)> {
template class Env<TARGET(kMLU)>;
#endif // LITE_WITH_MLU
#ifdef LITE_WITH_BM
template <>
class Device<TARGET(kBM)> {
public:
Device(int dev_id, int max_stream = 1)
: idx_(dev_id), max_stream_(max_stream) {}
void Init();
int id() { return idx_; }
int max_stream() { return 1; }
std::string name() { return "BM"; }
float max_memory() { return 16; }
int core_num();
void SetId(int idx);
int sm_version() { return 0; }
bool has_fp16() { return false; }
bool has_int8() { return false; }
bool has_hmma() { return false; }
bool has_imma() { return false; }
int runtime_version() { return 0; }
private:
void CreateQueue() {}
void GetInfo() {}
private:
int idx_{0};
int max_stream_{1};
std::string device_name_;
float max_memory_;
int sm_version_;
bool has_fp16_;
bool has_int8_;
bool has_hmma_;
bool has_imma_;
int runtime_version_;
};
template class Env<TARGET(kBM)>;
#endif
#ifdef LITE_WITH_CUDA
template <>
class Device<TARGET(kCUDA)> {
......
......@@ -3,4 +3,4 @@ if(NOT LITE_WITH_BM)
endif()
add_subdirectory(bridges)
add_kernel(subgraph_compute_bm BM basic SRCS subgraph_compute.cc DEPS ${lite_kernel_deps} ${bm_subgraph_bridges})
add_kernel(subgraph_compute_bm BM basic SRCS subgraph_compute.cc DEPS ${lite_kernel_deps} ${bm_subgraph_bridges} device_info_bm)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册