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
No related branches found
No related tags found
No related merge requests found
......@@ -277,15 +277,29 @@ set(FAUST_SRC_TEST_SRC_DIR ${FAUST_SRC_TEST_DIR}/src CACHE INTERNAL "")
###### WRAPPER MATLAB DIRECTORIES ######
if (BUILD_MATLAB_MEX_FILES)
#version MATLAB du code (entierement MATLAB, pas de mexfunction)
###### SRC DIRECTORY #####
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_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_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 ######
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_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 ####
#set(FAUST_MATLAB_INSTALL_DIR ${CMAKE_INSTALL_MATLAB_PREFIX})
set(FAUST_MATLAB_MEX_INSTALL_DIR ${CMAKE_INSTALL_MATLAB_PREFIX}/mex)
......
......@@ -5,33 +5,60 @@ function hier_fact_test(paramsfile,expectedLambda, expectedLambdaPrecision)
% load the hierarchical_fact configuration
disp(['*** LOADING PARAMS FILE ***']);
disp([paramsfile]);
disp(' ');
disp(' ');
load(paramsfile);
%% factorisation (mexfile)
disp('*** MEX FACTORISATION ***');
tic
[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)
disp('');
disp(' ');
disp([ 'expected lamba value : ' int2str(expectedLambda) ' in the precision of ' int2str(expectedLambdaPrecision) ]);
error('invalid lambda value');
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};
fc=Faust(mexfact);
mex_error = norm(params.data - get_product(fc));
%% factorisation (matlab)
disp(' ');
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
disp(' ');
disp(' ');
disp('*** product data matrix-vector vs product faust-vector ***');
nbiter = 100;
dense_mat = params.data;
......
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_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})
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)
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