提交 11e74c9a 编写于 作者: S storypku 提交者: Xiangquan Xiao

Build: trivial dependency removal

上级 a007e833
......@@ -257,14 +257,6 @@ new_local_repository(
path = "/usr/local/apollo/local_integ",
)
#
# paddlepaddle
new_local_repository(
name = "paddlepaddle",
build_file = "third_party/paddlepaddle.BUILD",
path = "/usr/local/apollo/paddlepaddle/include",
)
#
## mkldnn
#new_local_repository(
# name = "mkldnn",
......@@ -299,22 +291,7 @@ new_local_repository(
# build_file = "third_party/jsoncpp.BUILD",
# path = "/usr/local/apollo/jsoncpp/",
#)
#
#xxhash
new_local_repository(
name = "xxhash",
build_file = "third_party/xxhash.BUILD",
path = "/usr/local/apollo/paddlepaddle_dep/xxhash",
)
# snappystream
new_local_repository(
name = "snappystream",
build_file = "external/snappystream.BUILD",
path = "/usr/local/apollo/paddlepaddle_dep/snappystream",
)
#
#adv_plat
new_local_repository(
name = "adv_plat",
......
......@@ -210,7 +210,6 @@ fi
APOLLO_DEV_IMAGE=${DOCKER_REPO}:$VERSION
LOCALIZATION_VOLUME_IMAGE=${DOCKER_REPO}:localization_volume-${ARCH}-latest
PADDLE_VOLUME_IMAGE=${DOCKER_REPO}:paddlepaddle_volume-${ARCH}-2.0.0
LOCAL_THIRD_PARTY_VOLUME_IMAGE=${DOCKER_REPO}:local_third_party_volume-${ARCH}-latest
......@@ -360,12 +359,6 @@ function main() {
do_docker_pull ${LOCALIZATION_VOLUME_IMAGE}
docker run -it -d --rm --name ${LOCALIZATION_VOLUME} ${LOCALIZATION_VOLUME_IMAGE}
PADDLE_VOLUME=apollo_paddlepaddle_volume_$USER
docker stop ${PADDLE_VOLUME} > /dev/null 2>&1
PADDLE_VOLUME_IMAGE=${DOCKER_REPO}:paddlepaddle_volume-${ARCH}-2.0.0
do_docker_pull ${PADDLE_VOLUME_IMAGE}
docker run -it -d --rm --name ${PADDLE_VOLUME} ${PADDLE_VOLUME_IMAGE}
LOCAL_THIRD_PARTY_VOLUME=apollo_local_third_party_volume_$USER
docker stop ${LOCAL_THIRD_PARTY_VOLUME} > /dev/null 2>&1
......@@ -375,7 +368,6 @@ function main() {
docker run -it -d --rm --name ${LOCAL_THIRD_PARTY_VOLUME} ${LOCAL_THIRD_PARTY_VOLUME_IMAGE}
OTHER_VOLUME_CONF="${OTHER_VOLUME_CONF} --volumes-from ${LOCALIZATION_VOLUME} "
OTHER_VOLUME_CONF="${OTHER_VOLUME_CONF} --volumes-from ${PADDLE_VOLUME}"
OTHER_VOLUME_CONF="${OTHER_VOLUME_CONF} --volumes-from ${LOCAL_THIRD_PARTY_VOLUME}"
local display=""
......
load("@rules_cc//cc:defs.bzl", "cc_library")
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
cc_library(
name = "snappystream",
srcs = [
"lib/libsnappystream.a",
],
hdrs = glob([
"include/*.h",
]),
)
......@@ -5,7 +5,6 @@ The Perception module has been upgraded completely to handle comprehensive senso
## Introduction
Apollo 5.0 Perception has following new features:
* **Supports PaddlePaddle**: [PaddlePaddle](https://github.com/PaddlePaddle/Paddle) (PArallel Distributed Deep LEarning) is an easy-to-use, efficient, flexible and scalable deep learning platform, which is originally developed by Baidu scientists and engineers for the purpose of applying deep learning to many products at Baidu.
* **Online sensor calibration service**
* **Manual camera calibration**
* **Closest In-Path Object (CIPO) Detection**
......@@ -41,7 +40,7 @@ The perception module outputs are:
* The output of traffic light detection and recognition (cyber channel /apollo/perception/traffic_light)
### Note
1. Nvidia GPU and CUDA are required to run the perception module with Caffe or PaddlePaddle. Apollo provides the CUDA and Caffe libraries in the release docker image. However, the Nvidia GPU driver is not installed in the dev docker image.
1. Nvidia GPU and CUDA are required to run the perception module with Caffe. Apollo provides the CUDA and Caffe libraries in the release docker image. However, the Nvidia GPU driver is not installed in the dev docker image.
2. To run the perception module with CUDA acceleration, install the exact same version of the Nvidia driver in the docker image that is installed on your host machine, and then build Apollo with the GPU option (i.e., using `./apollo.sh build_opt_gpu`).
......
......@@ -48,7 +48,6 @@ cc_library(
deps = [
":inference_lib",
"//modules/perception/inference/caffe:caffe_net_lib",
"//modules/perception/inference/paddlepaddle:paddle_net_lib",
"//modules/perception/inference/tensorrt:rt_net",
"//modules/perception/inference/utils:inference_util_lib",
],
......@@ -61,7 +60,6 @@ cc_test(
deps = [
":inference_factory",
"@com_google_googletest//:gtest_main",
"@paddlepaddle",
],
)
......
......@@ -17,7 +17,6 @@
#include "modules/perception/inference/inference_factory.h"
#include "modules/perception/inference/caffe/caffe_net.h"
#include "modules/perception/inference/paddlepaddle/paddle_net.h"
#include "modules/perception/inference/tensorrt/rt_net.h"
namespace apollo {
......@@ -36,8 +35,6 @@ Inference *CreateInferenceByName(const std::string &name,
return new RTNet(proto_file, weight_file, outputs, inputs);
} else if (name == "RTNetInt8") {
return new RTNet(proto_file, weight_file, outputs, inputs, model_root);
} else if (name == "PaddleNet") {
return new PaddleNet(proto_file, weight_file, outputs, inputs);
}
return nullptr;
}
......
......@@ -19,7 +19,6 @@
#include "gtest/gtest.h"
#include "modules/perception/inference/caffe/caffe_net.h"
#include "modules/perception/inference/paddlepaddle/paddle_net.h"
#include "modules/perception/inference/tensorrt/rt_net.h"
namespace apollo {
......
load("@rules_cc//cc:defs.bzl", "cc_library")
load("//tools:cpplint.bzl", "cpplint")
package(default_visibility = ["//visibility:public"])
cc_library(
name = "paddle_net_lib",
srcs = ["paddle_net.cc"],
hdrs = ["paddle_net.h"],
linkopts = [
"-lsnappy",
"-lz",
"-ldl",
],
deps = [
"//cyber/common:log",
"//modules/perception/inference:inference_lib",
"//third_party:boost",
"//third_party:pthread",
"//third_party:rt",
"@com_github_gflags_gflags//:gflags",
"@com_google_protobuf//:protobuf",
"@eigen",
"@local_config_cuda//cuda:cudart",
"@mklml",
"@paddlepaddle",
"@snappystream",
"@xxhash",
],
)
cpplint()
/******************************************************************************
* Copyright 2019 The Apollo 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 <functional>
#include "modules/perception/inference/paddlepaddle/paddle_net.h"
#include "cyber/common/log.h"
namespace apollo {
namespace perception {
namespace inference {
PaddleNet::PaddleNet(const std::string &model_file,
const std::string &param_file,
const std::vector<std::string> &outputs)
: model_file_(model_file),
param_file_(param_file),
output_names_(outputs) {}
bool PaddleNet::Init(const std::map<std::string, std::vector<int>> &shapes) {
paddle::AnalysisConfig config;
// TODO(storypku):
// paddle::AnalysisConfig seems to have no such method:
// SetModel(const string&, const string&)
// config.SetModel(model_file_, param_file_);
config.SetModel(model_file_);
config.SwitchUseFeedFetchOps(false);
if (gpu_id_ >= 0) {
config.EnableUseGpu(MemoryPoolInitSizeMb, gpu_id_);
}
// init Net
predictor_ = paddle::CreatePaddlePredictor(config);
if (predictor_ == nullptr) {
return false;
}
// TODO(KAWAI) : shapes should only include input blobs.
// & a way to process multiple inputs.
std::vector<int> input_shape;
for (auto name_shape : shapes) {
std::shared_ptr<paddle::ZeroCopyTensor> blob =
predictor_->GetInputTensor(name_map_[name_shape.first]);
if (blob != nullptr) {
blob->Reshape(name_shape.second);
}
input_shape = name_shape.second;
}
/////////////////
int input_num = std::accumulate(input_shape.begin(), input_shape.end(), 1,
std::multiplies<int>());
std::vector<std::vector<float>> input_data(1);
input_data[0].resize(input_num);
for (int i = 0; i < input_num; i++) {
input_data[0][i] = static_cast<float>(i % 255);
}
// Prepare inputs
auto input_names = predictor_->GetInputNames();
int index = 0;
for (auto &name : input_names) {
auto input_t = predictor_->GetInputTensor(name);
input_t->Reshape(input_shape);
input_t->copy_from_cpu(input_data[index].data());
index += 1;
}
ACHECK(predictor_->ZeroCopyRun());
for (auto name : output_names_) {
if (name_map_.find(name) == name_map_.end()) {
continue;
}
auto paddle_blob = predictor_->GetOutputTensor(name_map_[name]);
std::shared_ptr<apollo::perception::base::Blob<float>> blob;
blob.reset(new apollo::perception::base::Blob<float>(paddle_blob->shape()));
blobs_.insert(std::make_pair(name, blob));
}
for (auto name : input_names_) {
auto paddle_blob = predictor_->GetInputTensor(name_map_[name]);
if (paddle_blob == nullptr) {
continue;
}
std::shared_ptr<apollo::perception::base::Blob<float>> blob;
blob.reset(new apollo::perception::base::Blob<float>(paddle_blob->shape()));
blobs_.insert(std::make_pair(name, blob));
}
return true;
}
PaddleNet::PaddleNet(const std::string &model_file,
const std::string &param_file,
const std::vector<std::string> &outputs,
const std::vector<std::string> &inputs)
: model_file_(model_file),
param_file_(param_file),
output_names_(outputs),
input_names_(inputs) {}
std::shared_ptr<apollo::perception::base::Blob<float>> PaddleNet::get_blob(
const std::string &name) {
auto iter = blobs_.find(name);
if (iter == blobs_.end()) {
return nullptr;
}
return iter->second;
}
bool PaddleNet::reshape() {
for (auto name : input_names_) {
auto blob = this->get_blob(name);
auto paddle_blob = predictor_->GetInputTensor(name_map_[name]);
if (paddle_blob != nullptr && blob != nullptr) {
paddle_blob->Reshape(blob->shape());
std::vector<int> paddle_blob_shape = paddle_blob->shape();
int count =
std::accumulate(paddle_blob_shape.begin(), paddle_blob_shape.end(), 1,
std::multiplies<int>());
cudaMemcpy(paddle_blob->mutable_data<float>(paddle::PaddlePlace::kGPU),
blob->gpu_data(), count * sizeof(float),
cudaMemcpyDeviceToDevice);
}
}
return true;
}
void PaddleNet::Infer() {
// reshape and get input data from blob to paddle_blob.
this->reshape();
// If `out_blob->mutable_cpu_data()` is invoked outside,
// HEAD will be set to CPU, and `out_blob->mutable_gpu_data()`
// after `enqueue` will copy data from CPU to GPU,
// which will overwrite the `inference` results.
// `out_blob->gpu_data()` will set HEAD to SYNCED,
// then no copy happends after `enqueue`.
for (auto name : output_names_) {
auto blob = get_blob(name);
if (blob != nullptr) {
blob->gpu_data();
}
}
predictor_->ZeroCopyRun();
for (auto name : output_names_) {
if (name_map_.find(name) == name_map_.end()) {
continue;
}
auto blob = get_blob(name);
auto paddle_blob = predictor_->GetOutputTensor(name_map_[name]);
if (paddle_blob != nullptr && blob != nullptr) {
blob->Reshape(paddle_blob->shape());
// TODO(KaWai) : use the output_size as the count;
std::vector<int> paddle_blob_shape = paddle_blob->shape();
int count =
std::accumulate(paddle_blob_shape.begin(), paddle_blob_shape.end(), 1,
std::multiplies<int>());
// int output_size;
// paddle::PaddlePlace* place;
cudaMemcpy(blob->mutable_gpu_data(),
paddle_blob->mutable_data<float>(paddle::PaddlePlace::kGPU),
count * sizeof(float), cudaMemcpyDeviceToDevice);
}
}
}
bool PaddleNet::shape(const std::string &name, std::vector<int> *res) {
bool in_input = false;
bool in_output = false;
if (std::find(input_names_.begin(), input_names_.end(), name) !=
input_names_.end()) {
in_input = true;
} else if (std::find(output_names_.begin(), output_names_.end(), name) !=
output_names_.end()) {
in_output = true;
}
if (~in_input && ~in_output) {
return false;
}
auto blob = in_input ? predictor_->GetInputTensor(name_map_[name])
: predictor_->GetOutputTensor(name_map_[name]);
if (blob == nullptr) {
return false;
}
*res = blob->shape();
return true;
}
} // namespace inference
} // namespace perception
} // namespace apollo
/******************************************************************************
* Copyright 2019 The Apollo 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 <chrono>
#include <iostream>
#include <map>
#include <memory>
#include <numeric>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
#include "paddle/paddle_analysis_config.h"
#include "paddle/paddle_inference_api.h"
#include "modules/perception/inference/inference.h"
namespace apollo {
namespace perception {
namespace inference {
typedef std::shared_ptr<apollo::perception::base::Blob<float>> BlobPtr;
constexpr uint64_t MemoryPoolInitSizeMb = 100;
class PaddleNet : public Inference {
public:
PaddleNet(const std::string &model_file, const std::string &param_file,
const std::vector<std::string> &outputs);
PaddleNet(const std::string &model_file, const std::string &param_file,
const std::vector<std::string> &outputs,
const std::vector<std::string> &inputs);
virtual ~PaddleNet() {}
bool Init(const std::map<std::string, std::vector<int>> &shapes) override;
void Infer() override;
BlobPtr get_blob(const std::string &name) override;
protected:
bool reshape();
bool shape(const std::string &name, std::vector<int> *res);
std::shared_ptr<paddle::PaddlePredictor> predictor_ = nullptr;
private:
std::string model_file_;
std::string param_file_;
std::vector<std::string> output_names_;
std::vector<std::string> input_names_;
BlobMap blobs_;
std::unordered_map<std::string, std::string> name_map_ = {
// object detection
{"data", "input"},
{"obj_pred", "save_infer_model/scale_0"},
{"cls_pred", "save_infer_model/scale_1"},
{"ori_pred", "save_infer_model/scale_2"},
{"dim_pred", "save_infer_model/scale_3"},
{"brvis_pred", "save_infer_model/scale_4"},
{"ltvis_pred", "save_infer_model/scale_5"},
{"rtvis_pred", "save_infer_model/scale_6"},
{"brswt_pred", "save_infer_model/scale_7"},
{"ltswt_pred", "save_infer_model/scale_8"},
{"rtswt_pred", "save_infer_model/scale_9"},
{"loc_pred", "save_infer_model/scale_13"},
{"conv3_3", "save_infer_model/scale_14"},
// lane line
{"softmax", "save_infer_model/scale_0"},
// lidar cnn_seg
{"confidence_score", "save_infer_model/scale_0"},
{"class_score", "save_infer_model/scale_1"},
{"category_score", "save_infer_model/scale_2"},
{"instance_pt", "save_infer_model/scale_3"},
{"heading_pt", "save_infer_model/scale_4"},
{"height_pt", "save_infer_model/scale_5"}};
};
} // namespace inference
} // namespace perception
} // namespace apollo
......@@ -74,18 +74,16 @@ cc_library(
hdrs = ["util.h"],
)
#TODO(storypku): Disable it temporarily
#cc_test(
# name = "cnn_segmentation_test",
# size = "small",
# srcs = ["cnn_segmentation_test.cc"],
# deps = [
# ":cnn_segmentation",
# "@paddlepaddle",
# "//modules/perception/common:perception_gflags",
# "@com_google_googletest//:gtest_main",
# ],
#)
cc_test(
name = "cnn_segmentation_test",
size = "small",
srcs = ["cnn_segmentation_test.cc"],
deps = [
":cnn_segmentation",
"//modules/perception/common:perception_gflags",
"@com_google_googletest//:gtest_main",
],
)
#cc_test(
# name = "feature_generator_test",
......
......@@ -478,15 +478,9 @@ bool CNNSegmentation::GetConfigs(std::string* param_file,
CNNSegConfig config;
ACHECK(apollo::cyber::common::GetProtoFromFile(config_file, &config))
<< "Failed to parse CNNSeg config file";
if (config.use_paddle()) {
*proto_file = GetAbsolutePath(work_root, config.paddle_proto_file());
*weight_file = GetAbsolutePath(work_root, config.paddle_weight_file());
*param_file = GetAbsolutePath(work_root, config.paddle_param_file());
} else {
*proto_file = GetAbsolutePath(work_root, config.proto_file());
*weight_file = GetAbsolutePath(work_root, config.weight_file());
*param_file = GetAbsolutePath(work_root, config.param_file());
}
*proto_file = GetAbsolutePath(work_root, config.proto_file());
*weight_file = GetAbsolutePath(work_root, config.weight_file());
*param_file = GetAbsolutePath(work_root, config.param_file());
*engine_file = GetAbsolutePath(work_root, config.engine_file());
return true;
......
......@@ -9,11 +9,4 @@ message CNNSegConfig {
[default = "./data/models/cnnseg/deploy.caffemodel"];
optional string engine_file = 4
[default = "./data/models/cnnseg/engine.conf"];
optional string paddle_param_file = 5
[default = "./data/models/cnnseg/paddle_param.conf"];
optional string paddle_proto_file = 6
[default = "./data/models/cnnseg/model"];
optional string paddle_weight_file = 7
[default = "./data/models/cnnseg/params"];
optional bool use_paddle = 8 [default = false];
}
gpu_id : 0
detector_param {
plugin_param{
name : "YoloObstacleDetector"
root_dir : "/apollo/modules/perception/production/data/perception/camera/models/yolo_obstacle_detector"
config_file : "config_paddle.pt"
}
camera_name : "front_6mm"
#camera_name : "spherical_left_forward"
}
detector_param {
plugin_param{
name : "YoloObstacleDetector"
root_dir : "/apollo/modules/perception/production/data/perception/camera/models/yolo_obstacle_detector"
config_file : "config_paddle.pt"
}
camera_name : "front_12mm"
}
tracker_param {
plugin_param{
name : "OMTObstacleTracker"
root_dir : "/apollo/modules/perception/production/data/perception/camera/models/omt_obstacle_tracker"
config_file : "config.pt"
}
}
transformer_param {
plugin_param{
name : "MultiCueObstacleTransformer"
root_dir : "/apollo/modules/perception/production/data/perception/camera/models/multicue_obstacle_transformer"
config_file : "config.pt"
}
}
postprocessor_param {
plugin_param{
name : "LocationRefinerObstaclePostprocessor"
root_dir : "/apollo/modules/perception/production/data/perception/camera/models/location_refiner_obstacle_postprocessor"
config_file : "config.pt"
}
}
lane_param {
lane_detector_param {
plugin_param {
name : "DarkSCNNLaneDetector"
root_dir : "/apollo/modules/perception/production/data/perception/camera/models/lane_detector/"
config_file : "config_darkSCNN_paddle.pt"
}
camera_name : "front_6mm"
}
lane_postprocessor_param {
name : "DarkSCNNLanePostprocessor"
root_dir : "/apollo/modules/perception/production/data/perception/camera/models/lane_postprocessor/darkSCNN/"
config_file : "config.pt"
}
}
calibration_service_param {
plugin_param {
name : "OnlineCalibrationService"
root_dir : ""
config_file : ""
}
calibrator_method : "LaneLineCalibrator"
}
object_template_param {
plugin_param{
name : "ObjectTemplate"
root_dir : "/apollo/modules/perception/production/data/perception/camera/common/object_template/"
config_file : "object_template.pt"
}
}
model_param {
model_name: "darkSCNN"
proto_file: "model"
weight_file: "params"
input_offset_y: 312
input_offset_x: 0
crop_height: 768
crop_width: 1920
resize_height: 480
resize_width: 640
mean_b: 95
mean_g: 99
mean_r: 96
is_bgr: true
confidence_threshold: 0.95
vpt_mean_dx: 0.0
vpt_mean_dy: -77.284
vpt_std_dx: 103.109
vpt_std_dy: 95.273
model_type: "PaddleNet"
}
net_param {
seg_blob: "softmax"
vpt_blob: "fc_out"
input_blob: "data"
}
model_param {
model_name: "./3d-r4-half"
model_type: "PaddleNet"
weight_file: "params"
proto_file: "model"
anchors_file: "anchors.txt"
types_file: "types.txt"
calibratetable_root: "./3d-r4-half"
confidence_threshold: 0.4
offset_ratio: 0.288889
cropped_ratio: 0.711111
resized_width: 1440
aligned_pixel: 32
min_2d_height: 10
min_3d_height: 0.1
ori_cycle: 2
with_box3d: true
light_swt_conf_threshold: 0
light_vis_conf_threshold: 0
with_lights: true
with_ratios: false
# num_areas: 4
border_ratio: 0.01
}
net_param {
det1_loc_blob: "loc_pred"
det1_obj_blob: "obj_pred"
det1_cls_blob: "cls_pred"
det1_ori_conf_blob: "ori_conf_pred"
det1_ori_blob: "ori_pred"
det1_dim_blob: "dim_pred"
input_blob: "data"
feat_blob: "conv3_3"
}
nms_param {
type: "NormalNMS"
threshold: 0.5
sigma: 0.4
inter_cls_nms_thresh: 0.6
}
use_paddle: false
param_file: "./data/perception/lidar/models/cnnseg/velodyne128/cnnseg_param.conf"
proto_file: "./data/perception/lidar/models/cnnseg/velodyne128/deploy.prototxt"
weight_file: "./data/perception/lidar/models/cnnseg/velodyne128/deploy.caffemodel"
paddle_param_file: "./data/perception/lidar/models/cnnseg/velodyne128/cnnseg_param_paddle.conf"
paddle_proto_file: "./data/perception/lidar/models/cnnseg/velodyne128/model"
paddle_weight_file: "./data/perception/lidar/models/cnnseg/velodyne128/params"
engine_file: "./data/perception/lidar/models/cnnseg/velodyne128/engine.conf"
objectness_thresh: 0.5
confidence_thresh: 0.1
confidence_range: 85.0
height_thresh: 0.5
min_pts_num: 3
model_type: "PaddleNet"
gpu_id: 0
ground_detector: "SpatioTemporalGroundDetector"
roi_filter: "HdmapROIFilter"
remove_ground_points: true
network_param {
instance_pt_blob: "instance_pt"
category_pt_blob: "category_score"
confidence_pt_blob: "confidence_score"
height_pt_blob: "height_pt"
heading_pt_blob: "heading_pt"
feature_blob: "data"
class_pt_blob: "class_score"
}
feature_param {
width: 864
height: 864
point_cloud_range: 90
min_height: -5.0
max_height: 5.0
use_intensity_feature: false
use_constant_feature: false
}
......@@ -57,9 +57,6 @@ function set_lib_path() {
else
export LD_LIBRARY_PATH=/usr/local/libtorch_gpu/lib:$LD_LIBRARY_PATH
fi
export LD_LIBRARY_PATH=/usr/local/apollo/paddlepaddle_dep/mkldnn/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/apollo/paddlepaddle/lib:$LD_LIBRARY_PATH
local PY_LIB_PATH="${APOLLO_ROOT_DIR}/py_proto"
local PY_TOOLS_PATH="${APOLLO_ROOT_DIR}/modules/tools"
......
......@@ -64,9 +64,6 @@
* KCFcpp
BSD 3-Clause "New" or "Revised" License
https://github.com/joaofaro/KCFcpp/blob/master/LICENSE
* PaddlePaddle
Apache License 2.0
https://github.com/PaddlePaddle/Paddle/blob/develop/LICENSE
* Protocol Buffer
https://github.com/google/protobuf/blob/master/LICENSE
* Protobuf Rules
......
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
cc_library(
name = "paddlepaddle",
includes = ["."],
linkopts = [
"-L/usr/local/apollo/paddlepaddle/lib",
"-lpaddle_fluid",
],
)
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
cc_library(
name = "xxhash",
srcs = [
"lib/libxxhash.a",
],
hdrs = glob([
"include/*.h",
]),
)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册