Skip to content

Commit 94b828f

Browse files
committed
Can run without validation
1 parent f273eb1 commit 94b828f

File tree

4 files changed

+36
-28
lines changed

4 files changed

+36
-28
lines changed

matlab/+caffe/private/caffe_.cpp

+34-18
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ static vector<shared_ptr<Net<float> > > nets_;
5050
static vector< vector<int> > gpu_groups_;
5151
static int now_solver_ = -1;
5252
static bool is_log_inited = false;
53+
static bool is_init = 0;
5354
// init_key is generated at the beginning and everytime you call reset
5455
#ifndef _MSC_VER // We are not using MSVC.
5556
static double init_key = static_cast<double>(caffe_rng_rand());
@@ -244,6 +245,8 @@ static mxArray* ptr_vec_to_handle_vec(const vector<shared_ptr<T> >& ptr_vec) {
244245
static void get_solver(MEX_ARGS) {
245246
mxCHECK(nrhs >= 1 && mxIsChar(prhs[0]),
246247
"Usage: caffe_('get_solver', solver_file, [gpu_id])");
248+
mxCHECK(!is_init, "Solver has already init, for now only support single multi-gpu solver.");
249+
is_init = true;
247250
//if ( nrhs == 2 )
248251
//{
249252
// mxCHECK(mxIsNumeric(prhs[ 1 ]), "Device_ids only supports double vector~");
@@ -397,19 +400,6 @@ static void solver_solve(MEX_ARGS) {
397400
mexPrintf("Solver %d finished.\n", now_solver_);
398401
}
399402

400-
static void do_set_phase(int ID, enum Phase phase_t){
401-
vector<boost::shared_ptr<Layer<float> > >& layers = syncSolvers_[ID]->solver()->net()->getlayers();
402-
for ( int i = 0; i < layers.size(); ++i ){
403-
layers[ i ]->set_phase(phase_t);
404-
}
405-
406-
for ( int i = 1; i < int(gpu_groups_[ ID ].size()); ++i ){
407-
vector<boost::shared_ptr<Layer<float> > >& layers = syncSolvers_[ ID ]->workers()[ i ]->solver()->net()->getlayers();
408-
for ( int j = 0; j < layers.size(); ++j ){
409-
layers[ j ]->set_phase(phase_t);
410-
}
411-
}
412-
}
413403

414404
static void do_set_phase(enum Phase phase_t){
415405
int ID = now_solver_;
@@ -508,6 +498,12 @@ static void net_set_phase(MEX_ARGS) {
508498
mxERROR("Unknown phase");
509499
}
510500
net->SetPhase(phase);
501+
vector<boost::shared_ptr<Layer<float> > >& layers = net->getlayers();
502+
for ( int i = 0; i < layers.size(); ++i ){
503+
layers[ i ]->set_phase(phase);
504+
}
505+
506+
511507
mxFree(phase_name);
512508
}
513509

@@ -731,11 +727,12 @@ static void reset(MEX_ARGS) {
731727
gpu_groups_.clear();
732728
// Generate new init_key, so that handles created before becomes invalid
733729
init_key = static_cast<double>(caffe_rng_rand());
734-
if ( is_log_inited )
730+
/*if ( is_log_inited )
735731
{
736732
is_log_inited = false;
737733
::google::ShutdownGoogleLogging();
738-
}
734+
}*/
735+
is_init = false;
739736
}
740737

741738
// Usage: caffe_('set_random_seed', random_seed)
@@ -773,8 +770,11 @@ static void init_log(MEX_ARGS) {
773770

774771
mxCHECK(nrhs == 1 && mxIsChar(prhs[0]),
775772
"Usage: caffe_('init_log', log_dir)");
776-
if (is_log_inited)
777-
::google::ShutdownGoogleLogging();
773+
if ( is_log_inited ){
774+
//::google::ShutdownGoogleLogging();
775+
return;
776+
777+
}
778778
char* log_base_filename = mxArrayToString(prhs[0]);
779779
::google::SetLogDestination(0, log_base_filename);
780780
mxFree(log_base_filename);
@@ -823,6 +823,21 @@ static void write_mean(MEX_ARGS) {
823823
mxFree(mean_proto_file);
824824
}
825825

826+
// Usage: caffe_('solver_test')
827+
static void solver_test(MEX_ARGS) {
828+
mxCHECK(nrhs == 1 && mxIsChar(prhs[ 0 ]),
829+
"Usage: caffe_('read_mean', mean_proto_file)");
830+
char* mean_proto_file = mxArrayToString(prhs[ 0 ]);
831+
mxCHECK_FILE_EXIST(mean_proto_file);
832+
Blob<float> data_mean;
833+
BlobProto blob_proto;
834+
bool result = ReadProtoFromBinaryFile(mean_proto_file, &blob_proto);
835+
mxCHECK(result, "Could not read your mean file");
836+
data_mean.FromProto(blob_proto);
837+
plhs[ 0 ] = blob_to_mx_mat(&data_mean, DATA);
838+
mxFree(mean_proto_file);
839+
}
840+
826841
// Usage: caffe_('version')
827842
static void version(MEX_ARGS) {
828843
mxCHECK(nrhs == 0, "Usage: caffe_('version')");
@@ -847,7 +862,8 @@ static handler_registry handlers[] = {
847862
{ "solver_get_max_iter", solver_get_max_iter },
848863
{ "solver_restore", solver_restore },
849864
{ "solver_solve", solver_solve },
850-
{ "solver_step", solver_step },
865+
{ "solver_step", solver_step },
866+
{ "solver_test", solver_test },
851867
{ "get_net", get_net },
852868
{ "net_get_attr", net_get_attr },
853869
{ "net_set_phase", net_set_phase },

src/caffe/parallel.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ void P2PSync<Dtype>::on_start() {
297297

298298
// Wait for update from parent
299299
if (parent_) {
300-
#ifdef _WIN32
300+
#ifdef _WIN32_
301301
P2PSync<Dtype> *parent = queue_.pop();
302302
#else
303303
P2PSync<Dtype> *parent = NULL;
@@ -339,7 +339,7 @@ void P2PSync<Dtype>::on_gradients_ready() {
339339

340340
// Sum children gradients as they appear in the queue
341341
for (int i = 0; i < children_.size(); ++i) {
342-
#ifdef _WIN32
342+
#ifdef _WIN32_
343343
P2PSync<Dtype> *child = queue_.pop();
344344
;
345345
#else

windows/libcaffe/libcaffe.vcxproj

-2
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,6 @@
141141
<ClCompile Include="..\..\src\caffe\layers\infogain_loss_layer.cpp" />
142142
<ClCompile Include="..\..\src\caffe\layers\inner_product_layer.cpp" />
143143
<ClCompile Include="..\..\src\caffe\layers\input_layer.cpp" />
144-
<ClCompile Include="..\..\src\caffe\layers\log_layer.cpp" />
145144
<ClCompile Include="..\..\src\caffe\layers\loss_layer.cpp" />
146145
<ClCompile Include="..\..\src\caffe\layers\lrn_layer.cpp" />
147146
<ClCompile Include="..\..\src\caffe\layers\memory_data_layer.cpp" />
@@ -332,7 +331,6 @@
332331
<CudaCompile Include="..\..\src\caffe\layers\hdf5_output_layer.cu" />
333332
<CudaCompile Include="..\..\src\caffe\layers\im2col_layer.cu" />
334333
<CudaCompile Include="..\..\src\caffe\layers\inner_product_layer.cu" />
335-
<CudaCompile Include="..\..\src\caffe\layers\log_layer.cu" />
336334
<CudaCompile Include="..\..\src\caffe\layers\lrn_layer.cu" />
337335
<CudaCompile Include="..\..\src\caffe\layers\mvn_layer.cu" />
338336
<CudaCompile Include="..\..\src\caffe\layers\pooling_layer.cu" />

windows/libcaffe/libcaffe.vcxproj.filters

-6
Original file line numberDiff line numberDiff line change
@@ -246,9 +246,6 @@
246246
<ClCompile Include="..\..\src\caffe\layers\input_layer.cpp">
247247
<Filter>src\layers</Filter>
248248
</ClCompile>
249-
<ClCompile Include="..\..\src\caffe\layers\log_layer.cpp">
250-
<Filter>src\layers</Filter>
251-
</ClCompile>
252249
<ClCompile Include="..\..\src\caffe\layers\loss_layer.cpp">
253250
<Filter>src\layers</Filter>
254251
</ClCompile>
@@ -793,9 +790,6 @@
793790
<CudaCompile Include="..\..\src\caffe\layers\filter_layer.cu">
794791
<Filter>cu\layers</Filter>
795792
</CudaCompile>
796-
<CudaCompile Include="..\..\src\caffe\layers\log_layer.cu">
797-
<Filter>cu\layers</Filter>
798-
</CudaCompile>
799793
<CudaCompile Include="..\..\src\caffe\layers\tile_layer.cu">
800794
<Filter>cu\layers</Filter>
801795
</CudaCompile>

0 commit comments

Comments
 (0)