зеркало из https://github.com/microsoft/caffe.git
Separate WindowDataLayer::Forward_gpu into a cu file
This commit is contained in:
Родитель
3f33c202ce
Коммит
af26a549cd
|
@ -418,24 +418,6 @@ Dtype WindowDataLayer<Dtype>::Forward_cpu(const vector<Blob<Dtype>*>& bottom,
|
|||
return Dtype(0.);
|
||||
}
|
||||
|
||||
template <typename Dtype>
|
||||
Dtype WindowDataLayer<Dtype>::Forward_gpu(const vector<Blob<Dtype>*>& bottom,
|
||||
vector<Blob<Dtype>*>* top) {
|
||||
// First, join the thread
|
||||
CHECK(!pthread_join(thread_, NULL)) << "Pthread joining failed.";
|
||||
// Copy the data
|
||||
CUDA_CHECK(cudaMemcpy((*top)[0]->mutable_gpu_data(),
|
||||
prefetch_data_->cpu_data(), sizeof(Dtype) * prefetch_data_->count(),
|
||||
cudaMemcpyHostToDevice));
|
||||
CUDA_CHECK(cudaMemcpy((*top)[1]->mutable_gpu_data(),
|
||||
prefetch_label_->cpu_data(), sizeof(Dtype) * prefetch_label_->count(),
|
||||
cudaMemcpyHostToDevice));
|
||||
// Start a new prefetch thread
|
||||
CHECK(!pthread_create(&thread_, NULL, WindowDataLayerPrefetch<Dtype>,
|
||||
reinterpret_cast<void*>(this))) << "Pthread execution failed.";
|
||||
return Dtype(0.);
|
||||
}
|
||||
|
||||
INSTANTIATE_CLASS(WindowDataLayer);
|
||||
|
||||
} // namespace caffe
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
// Copyright 2013 Ross Girshick
|
||||
//
|
||||
// Based on data_layer.cpp by Yangqing Jia.
|
||||
|
||||
#include <stdint.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <fstream> // NOLINT(readability/streams)
|
||||
#include <utility>
|
||||
|
||||
#include "opencv2/core/core.hpp"
|
||||
#include "opencv2/highgui/highgui.hpp"
|
||||
#include "opencv2/imgproc/imgproc.hpp"
|
||||
|
||||
#include "caffe/layer.hpp"
|
||||
#include "caffe/util/io.hpp"
|
||||
#include "caffe/vision_layers.hpp"
|
||||
|
||||
using std::string;
|
||||
using std::map;
|
||||
using std::pair;
|
||||
|
||||
// caffe.proto > LayerParameter
|
||||
// 'source' field specifies the window_file
|
||||
// 'cropsize' indicates the desired warped size
|
||||
|
||||
namespace caffe {
|
||||
|
||||
template <typename Dtype>
|
||||
Dtype WindowDataLayer<Dtype>::Forward_gpu(const vector<Blob<Dtype>*>& bottom,
|
||||
vector<Blob<Dtype>*>* top) {
|
||||
// First, join the thread
|
||||
CHECK(!pthread_join(thread_, NULL)) << "Pthread joining failed.";
|
||||
// Copy the data
|
||||
CUDA_CHECK(cudaMemcpy((*top)[0]->mutable_gpu_data(),
|
||||
prefetch_data_->cpu_data(), sizeof(Dtype) * prefetch_data_->count(),
|
||||
cudaMemcpyHostToDevice));
|
||||
CUDA_CHECK(cudaMemcpy((*top)[1]->mutable_gpu_data(),
|
||||
prefetch_label_->cpu_data(), sizeof(Dtype) * prefetch_label_->count(),
|
||||
cudaMemcpyHostToDevice));
|
||||
// Start a new prefetch thread
|
||||
CHECK(!pthread_create(&thread_, NULL, WindowDataLayerPrefetch<Dtype>,
|
||||
reinterpret_cast<void*>(this))) << "Pthread execution failed.";
|
||||
return Dtype(0.);
|
||||
}
|
||||
|
||||
INSTANTIATE_CLASS(WindowDataLayer);
|
||||
|
||||
} // namespace caffe
|
Загрузка…
Ссылка в новой задаче