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
--- /dev/null
+// 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