Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 0da986e8 authored by Nicolas Bellot's avatar Nicolas Bellot Committed by hhakim
Browse files

time comparison for factorisation between matlab and matlab mexfunction

parent 93bbbd02
Branches
Tags
No related merge requests found
...@@ -277,15 +277,29 @@ set(FAUST_SRC_TEST_SRC_DIR ${FAUST_SRC_TEST_DIR}/src CACHE INTERNAL "") ...@@ -277,15 +277,29 @@ set(FAUST_SRC_TEST_SRC_DIR ${FAUST_SRC_TEST_DIR}/src CACHE INTERNAL "")
###### WRAPPER MATLAB DIRECTORIES ###### ###### WRAPPER MATLAB DIRECTORIES ######
if (BUILD_MATLAB_MEX_FILES) if (BUILD_MATLAB_MEX_FILES)
#version MATLAB du code (entierement MATLAB, pas de mexfunction)
###### SRC DIRECTORY ##### ###### SRC DIRECTORY #####
set(FAUST_MATLAB_SRC_DIR ${FAUST_SRC_WRAPPER_DIR}/matlab CACHE INTERNAL "") set(FAUST_MATLAB_SRC_DIR ${FAUST_SRC_WRAPPER_DIR}/matlab CACHE INTERNAL "")
set(FAUST_MATLAB_TOOLS_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/tools CACHE INTERNAL "") set(FAUST_MATLAB_TOOLS_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/tools CACHE INTERNAL "")
set(FAUST_MATLAB_MEX_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/src CACHE INTERNAL "") set(FAUST_MATLAB_MEX_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/src CACHE INTERNAL "")
set(FAUST_MATLAB_DOC_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/doc CACHE INTERNAL "") set(FAUST_MATLAB_DOC_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/doc CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/old_matlab CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_PROX_SRC_DIR ${FAUST_MATLAB_OLD_SRC_DIR}/proxs CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_UTILS_SRC_DIR ${FAUST_MATLAB_OLD_SRC_DIR}/utils CACHE INTERNAL "")
###### BIN DIRECTORY ###### ###### BIN DIRECTORY ######
set(FAUST_MATLAB_BIN_DIR ${FAUST_BIN_WRAPPER_DIR}/matlab CACHE INTERNAL "") set(FAUST_MATLAB_BIN_DIR ${FAUST_BIN_WRAPPER_DIR}/matlab CACHE INTERNAL "")
set(FAUST_MATLAB_MEX_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/mex CACHE INTERNAL "") set(FAUST_MATLAB_MEX_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/mex CACHE INTERNAL "")
set(FAUST_MATLAB_TOOLS_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/tools CACHE INTERNAL "") set(FAUST_MATLAB_TOOLS_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/tools CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/old_matlab CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_PROX_BIN_DIR ${FAUST_MATLAB_OLD_BIN_DIR}/proxs CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_UTILS_BIN_DIR ${FAUST_MATLAB_OLD_BIN_DIR}/utils CACHE INTERNAL "")
#### INSTALL DIRECTORY #### #### INSTALL DIRECTORY ####
#set(FAUST_MATLAB_INSTALL_DIR ${CMAKE_INSTALL_MATLAB_PREFIX}) #set(FAUST_MATLAB_INSTALL_DIR ${CMAKE_INSTALL_MATLAB_PREFIX})
set(FAUST_MATLAB_MEX_INSTALL_DIR ${CMAKE_INSTALL_MATLAB_PREFIX}/mex) set(FAUST_MATLAB_MEX_INSTALL_DIR ${CMAKE_INSTALL_MATLAB_PREFIX}/mex)
......
...@@ -5,33 +5,60 @@ function hier_fact_test(paramsfile,expectedLambda, expectedLambdaPrecision) ...@@ -5,33 +5,60 @@ function hier_fact_test(paramsfile,expectedLambda, expectedLambdaPrecision)
% load the hierarchical_fact configuration % load the hierarchical_fact configuration
disp(['*** LOADING PARAMS FILE ***']);
disp([paramsfile]);
disp(' ');
disp(' ');
load(paramsfile); load(paramsfile);
%% factorisation (mexfile)
disp('*** MEX FACTORISATION ***');
tic
[mexlambda,mexfact]=mexHierarchical_fact(params); [mexlambda,mexfact]=mexHierarchical_fact(params);
disp(['lambda value : ' num2str(mexlambda)]); t=toc;
disp(['time factorisation (mex) : ' num2str(t)]);
%% check if the result are ok
disp(['lambda value () : ' num2str(mexlambda)]);
if (abs(mexlambda - expectedLambda) > expectedLambdaPrecision) if (abs(mexlambda - expectedLambda) > expectedLambdaPrecision)
disp(''); disp(' ');
disp([ 'expected lamba value : ' int2str(expectedLambda) ' in the precision of ' int2str(expectedLambdaPrecision) ]); disp([ 'expected lamba value : ' int2str(expectedLambda) ' in the precision of ' int2str(expectedLambdaPrecision) ]);
error('invalid lambda value'); error('invalid lambda value');
end end
mexfact{1}=mexlambda*mexfact{1};
fc=Faust(mexfact);
mex_error = norm(params.data - get_product(fc));
disp(['relative error : ' num2str(mex_error)]);
mexfact{1}=mexlambda*mexfact{1}; %% factorisation (matlab)
fc=Faust(mexfact); disp(' ');
mex_error = norm(params.data - get_product(fc)); disp(' ');
disp(['*** MATLAB FACTORISATION ***']);
tic
[lambda,fact]=old_hierarchical_fact(params);
t=toc;
disp(['time factorisation (matlab) : ' num2str(t)]);
disp(['lambda value (MATLAB) : ' num2str(lambda)]);
disp(['relative error : ' num2str(mex_error)]);
%% speed-up test for multiplication with a vector %% speed-up test for multiplication with a vector
disp(' ');
disp(' ');
disp('*** product data matrix-vector vs product faust-vector ***'); disp('*** product data matrix-vector vs product faust-vector ***');
nbiter = 100; nbiter = 100;
dense_mat = params.data; dense_mat = params.data;
......
addpath('@FAUST_MATLAB_MEX_BIN_DIR@');%% access to the mexfunction addpath('@FAUST_MATLAB_MEX_BIN_DIR@');%% access to the mexfunction
addpath('@FAUST_DATA_MAT_DIR@');%% access to the data (meg and faust_hier configuration) addpath('@FAUST_DATA_MAT_DIR@');%% access to the data (meg and faust_hier configuration)
addpath('@FAUST_MATLAB_TOOLS_BIN_DIR@');%% access to Faust.m (interface betwwen faust_core C++ class and matlab class) addpath('@FAUST_MATLAB_TOOLS_BIN_DIR@');%% access to Faust.m (interface betwwen faust_core C++ class and matlab class)
%% access to the old matlab code (factorise a matrix) hierarchical_fact and palm4MSA)
addpath('@FAUST_MATLAB_OLD_BIN_DIR@');
addpath('@FAUST_MATLAB_OLD_PROX_BIN_DIR@');
addpath('@FAUST_MATLAB_OLD_UTILS_BIN_DIR@');
...@@ -141,7 +141,61 @@ foreach(mex_target ${MEXFILE_TARGET_LIST}) ...@@ -141,7 +141,61 @@ foreach(mex_target ${MEXFILE_TARGET_LIST})
endforeach() endforeach()
# CONFIGURATION DES CHEMINS
# CONFIGURATION DES CHEMINS
configure_file(${FAUST_MATLAB_SRC_DIR}/setup_FAUST.m.in ${FAUST_MATLAB_BIN_DIR}/setup_FAUST.m @ONLY) configure_file(${FAUST_MATLAB_SRC_DIR}/setup_FAUST.m.in ${FAUST_MATLAB_BIN_DIR}/setup_FAUST.m @ONLY)
install(FILES ${FAUST_MATLAB_BIN_DIR}/setup_FAUST.m DESTINATION ${CMAKE_INSTALL_MATLAB_PREFIX}) install(FILES ${FAUST_MATLAB_BIN_DIR}/setup_FAUST.m DESTINATION ${CMAKE_INSTALL_MATLAB_PREFIX})
### OLD MATLAB VERSION CODE TO MAKE TIME COMPARISON ########
#version MATLAB du code (entierement MATLAB, pas de mexfunction)
set(FAUST_MATLAB_OLD_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/old_matlab CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/old_matlab CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_PROX_BIN_DIR ${FAUST_MATLAB_OLD_BIN_DIR}/proxs CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_PROX_SRC_DIR ${FAUST_MATLAB_OLD_SRC_DIR}/proxs CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_UTILS_BIN_DIR ${FAUST_MATLAB_OLD_BIN_DIR}/utils CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_UTILS_SRC_DIR ${FAUST_MATLAB_OLD_SRC_DIR}/utils CACHE INTERNAL "")
configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/old_hierarchical_fact.m ${FAUST_MATLAB_OLD_BIN_DIR}/old_hierarchical_fact.m)
configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/old_palm4MSA.m ${FAUST_MATLAB_OLD_BIN_DIR}/old_palm4MSA.m)
configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/setup_old_FAUST.m ${FAUST_MATLAB_OLD_BIN_DIR}/setup_old_FAUST.m COPYONLY)
#prox matlab function
file(GLOB MATLAB_PROX RELATIVE ${FAUST_MATLAB_OLD_PROX_SRC_DIR} "${FAUST_MATLAB_OLD_PROX_SRC_DIR}/*.m")
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}")
foreach(prox ${MATLAB_PROX})
configure_file(${FAUST_MATLAB_OLD_PROX_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_PROX_BIN_DIR}/${prox} COPYONLY)
#install(FILES ${FAUST_MATLAB_MEX_SRC_DIR}/proxs/${prox} DESTINATION ${FAUST_MATLAB_MEX_INSTALL_DIR})
endforeach()
file(GLOB MATLAB_PROX RELATIVE ${FAUST_MATLAB_OLD_PROX_SRC_DIR} "${FAUST_MATLAB_OLD_PROX_SRC_DIR}/*.m")
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}")
foreach(prox ${MATLAB_PROX})
configure_file(${FAUST_MATLAB_OLD_PROX_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_PROX_BIN_DIR}/${prox} COPYONLY)
#install(FILES ${FAUST_MATLAB_MEX_SRC_DIR}/proxs/${prox} DESTINATION ${FAUST_MATLAB_MEX_INSTALL_DIR})
endforeach()
file(GLOB MATLAB_UTILS RELATIVE ${FAUST_MATLAB_OLD_UTILS_SRC_DIR} "${FAUST_MATLAB_OLD_UTILS_SRC_DIR}/*.m")
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}")
foreach(prox ${MATLAB_UTILS})
configure_file(${FAUST_MATLAB_OLD_UTILS_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_UTILS_BIN_DIR}/${prox} COPYONLY)
#install(FILES ${FAUST_MATLAB_MEX_SRC_DIR}/proxs/${prox} DESTINATION ${FAUST_MATLAB_MEX_INSTALL_DIR})
endforeach()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment