Browse Source

merge correction for multi-core support

Alexander Freytag 8 years ago
parent
commit
1f47be9bac
3 changed files with 23 additions and 3 deletions
  1. 2 0
      initWorkspaceLibLinear.m
  2. 11 2
      liblinear_train.m
  3. 10 1
      liblinear_train_regression.m

+ 2 - 0
initWorkspaceLibLinear.m

@@ -26,6 +26,8 @@ function initWorkspaceLibLinear
         LIBLINEARDIR    = '/home/freytag/code/3rdParty/liblinear-1.93/matlab/';   
     elseif strcmp( getenv('USER'), 'rodner')
         LIBLINEARDIR    = '/home/freytag/code/3rdParty/liblinear-1.93/matlab/';
+    elseif strcmp( getenv('USER'), 'kaeding')
+        LIBLINEARDIR    = '/home/kaeding/lib/liblinear-multicore-2.1-2/matlab/';   
     else
         fprintf('Unknown user %s and unknown default settings', getenv('USER') ); 
     end    

+ 11 - 2
liblinear_train.m

@@ -15,7 +15,8 @@ function svmmodel = liblinear_train ( labels, feat, settings )
 %              svmtrain of the corresponding 1-vs-all-problem
 %
 % date: 30-04-2014 ( dd-mm-yyyy )
-% author: Alexander Freytag
+% last modified: 22-10-2015
+% author: Alexander Freytag, Christoph Käding
 
     if ( nargin < 3 ) 
         settings = [];
@@ -38,6 +39,14 @@ function svmmodel = liblinear_train ( labels, feat, settings )
         liblinear_options = sprintf('%s -B 1', liblinear_options);    
     end
     
+    % add multithreading
+    % NOTE: - requires liblinear-multicore
+    %       - supports only -s 0, -s 2, or -s 11 (so far)
+    i_numThreads = getFieldWithDefault ( settings, 'i_numThreads', 1);
+    if i_numThreads > 1
+        liblinear_options = sprintf('%s -n %d', liblinear_options, i_numThreads);
+    end
+        
     % which solver to use
     % copied from the liblinear manual:
 %       for multi-class classification
@@ -87,7 +96,7 @@ function svmmodel = liblinear_train ( labels, feat, settings )
         end
     else
         svmmodel = cell( i_numClasses,1);
-        for k=1:length(i_classesToRun)
+        for k=1:i_numClasses
             yBin        = 2*double( labels == uniqueLabels( k ) )-1;
             
             fraction = double(sum(yBin==1))/double(numel(yBin));

+ 10 - 1
liblinear_train_regression.m

@@ -14,7 +14,8 @@ function svmmodel = liblinear_train_regression ( labels, feat, settings )
 %  svmmodel -- resulting model
 %
 % date: 30-04-2014 ( dd-mm-yyyy )
-% author: Alexander Freytag
+% last modified: 22-10-2015
+% author: Alexander Freytag, Christoph Käding
 
     if ( nargin < 3 ) 
         settings = [];
@@ -37,6 +38,14 @@ function svmmodel = liblinear_train_regression ( labels, feat, settings )
         libsvm_options = sprintf('%s -B 1', libsvm_options);    
     end
     
+    % add multithreading
+    % NOTE: - requires liblinear-multicore
+    %       - supports only -s 0, -s 2, or -s 11 (so far)
+    i_numThreads = getFieldWithDefault ( settings, 'i_numThreads', 1);
+    if i_numThreads > 1
+        libsvm_options = sprintf('%s -n %d', libsvm_options, i_numThreads);
+    end
+    
     % which solver to use
     % copied from the liblinear manual:
 %        for regression