Mentions légales du service

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • solverstack/chameleon
  • lvilleve/chameleon-toto
  • jcletort/chameleon
  • thibault/chameleon
  • tcojean/chameleon
  • sylvand/chameleon
  • viroulea/chameleon
  • x-ltac/chameleon
  • agullo/chameleon
  • glucas/chameleon
  • pswartva/chameleon
  • aguermou1/chameleon
  • eyrauddu/chameleon
  • mverite/chameleon
  • alisito/chameleon
  • furmento/chameleon
  • fpruvost/chameleon
  • ahourcau/chameleon
  • bnicolas/chameleon
  • pesterie/chameleon
  • mmarcos/chameleon
21 results
Show changes
Commits on Source (6)
......@@ -232,6 +232,13 @@ if(CHAMELEON_SCHED_STARPU)
message("-- ${BoldGreen}CHAMELEON_SIMULATION is set to OFF, turn it ON to use"
" SIMULATION mode (only with StarPU compiled with SimGrid)${ColourReset}")
endif()
option(CHAMELEON_ENABLE_PRUNING_STATS "Enable pruning statistics" OFF)
if (NOT CHAMELEON_ENABLE_PRUNING_STATS)
message("-- ${BoldGreen}CHAMELEON_ENABLE_PRUNING_STATS is set to OFF, turn it ON to build pruning statistics${ColourReset}")
endif()
if(CHAMELEON_ENABLE_PRUNING_STATS)
add_definitions(-DCHAMELEON_ENABLE_PRUNING_STATS)
endif(CHAMELEON_ENABLE_PRUNING_STATS)
endif()
# Initially we need to generate files for different precisions
......
Subproject commit 32c1ba6ae5d7e19d570ac3bd86a24acb82f2081e
Subproject commit 0a974775b7192227b887dcba77515305083c1f13
......@@ -521,6 +521,8 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
}
morse_sequence_wait(morse, sequence);
#if !defined(CHAMELEON_SIMULATION)
info = LAPACKE_zgbbrd( LAPACK_COL_MAJOR,
gbbrd_vect,
M, N,
......@@ -533,6 +535,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
if (info != 0) {
fprintf(stderr, "MORSE_zgesvd_Tile_Async: LAPACKE_zgbbrd = %d\n", info );
}
#endif /* !defined(CHAMELEON_SIMULATION) */
morse_desc_mat_free(&descAB);
/* Transform U and Vt into tile format */
......@@ -594,6 +597,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
/* Solve the bidiagonal SVD problem */
/* On exit, U and VT are updated with bidiagonal matrix singular vectors */
#if !defined(CHAMELEON_SIMULATION)
info = LAPACKE_zbdsqr( LAPACK_COL_MAJOR, 'U',
MINMN, ncvt, nru, 0,
S, E,
......@@ -601,6 +605,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
if (info != 0) {
fprintf(stderr, "MORSE_zgesvd_Tile_Async: LAPACKE_zbdsqr = %d\n", info );
}
#endif /* !defined(CHAMELEON_SIMULATION) */
if (jobu != MorseNoVec)
morse_desc_mat_free( &descU );
......
......@@ -420,6 +420,7 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
if (jobz == MorseNoVec){
#if !defined(CHAMELEON_SIMULATION)
/* Tridiagonal eigensolver */
status = LAPACKE_zstedc( LAPACK_COL_MAJOR,
morse_lapack_const(jobz),
......@@ -428,6 +429,7 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
if (status != 0) {
morse_error("MORSE_zheevd_Tile_Async", "LAPACKE_zstedc failed");
}
#endif /* !defined(CHAMELEON_SIMULATION) */
free(E);
return MORSE_SUCCESS;
}
......@@ -441,8 +443,11 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
/* For bug in lapacke */
memset(V, 0, N * N * sizeof(MORSE_Complex64_t));
/* Tridiagonal eigensolver */
/* V contains the eigenvectors of the tridiagonal system on exit */
/*
* Tridiagonal eigensolver
* V contains the eigenvectors of the tridiagonal system on exit
*/
#if !defined(CHAMELEON_SIMULATION)
status = LAPACKE_zstedc( LAPACK_COL_MAJOR,
morse_lapack_const(MorseIvec),
N, W, E,
......@@ -450,6 +455,7 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
if (status != 0) {
morse_error("MORSE_zheevd_Tile_Async", "LAPACKE_zstedc failed");
}
#endif /* !defined(CHAMELEON_SIMULATION) */
/* Convert matrices in tile format */
/* A/T from MORSE_zhetrd refer to Q1 (tile layout) */
......
......@@ -408,6 +408,7 @@ int MORSE_zhetrd_Tile_Async(MORSE_enum jobz,
morse_sequence_wait(morse, sequence);
/* Reduce band matrix to tridiagonal matrix */
#if !defined(CHAMELEON_SIMULATION)
status = LAPACKE_zhbtrd( LAPACK_COL_MAJOR,
morse_lapack_const(jobz),
morse_lapack_const(uplo),
......@@ -417,6 +418,7 @@ int MORSE_zhetrd_Tile_Async(MORSE_enum jobz,
if (status != 0) {
morse_error("MORSE_zhetrd_Tile_Async", "LAPACKE_zhbtrd failed");
}
#endif /* !defined(CHAMELEON_SIMULATION) */
morse_desc_mat_free(&descAB);
return MORSE_SUCCESS;
......
......@@ -126,6 +126,9 @@ double RUNTIME_get_time();
void RUNTIME_start_profiling();
void RUNTIME_stop_profiling();
void RUNTIME_start_stats();
void RUNTIME_stop_stats();
#if defined(PRECISION_z)
void RUNTIME_zdisplay_allprofile ();
void RUNTIME_zdisplay_oneprofile (MORSE_kernel_t);
......
......@@ -88,6 +88,16 @@ void RUNTIME_stop_profiling()
morse_warning("RUNTIME_stop_profiling()", "FxT profiling is not available with PaRSEC\n");
}
void RUNTIME_start_stats()
{
morse_warning("RUNTIME_start_stats()", "pruning stats are not available with PaRSEC\n");
}
void RUNTIME_stop_stats()
{
morse_warning("RUNTIME_stop_stats()", "pruning stats are not available with PaRSEC\n");
}
void RUNTIME_schedprofile_display(void)
{
morse_warning("RUNTIME_schedprofile_display(parsec)", "Scheduler profiling is not available with PaRSEC\n");
......
......@@ -103,6 +103,16 @@ void RUNTIME_stop_profiling()
morse_warning("RUNTIME_stop_profiling()", "FxT profiling is not available with Quark\n");
}
void RUNTIME_start_stats()
{
morse_warning("RUNTIME_start_stats()", "pruning stats are not available with Quark\n");
}
void RUNTIME_stop_stats()
{
morse_warning("RUNTIME_stop_stats()", "pruning stats are not available with Quark\n");
}
void RUNTIME_schedprofile_display(void)
{
morse_warning("RUNTIME_schedprofile_display(quark)", "Scheduler profiling is not available with Quark\n");
......
......@@ -29,6 +29,12 @@
#include <starpu_fxt.h>
#endif
#ifdef CHAMELEON_ENABLE_PRUNING_STATS
unsigned long RUNTIME_total_tasks;
unsigned long RUNTIME_exec_tasks;
unsigned long RUNTIME_comm_tasks;
unsigned long RUNTIME_changed_tasks;
#endif
double RUNTIME_get_time(){
return starpu_timing_now()*1e-6;
......@@ -50,6 +56,21 @@ void RUNTIME_stop_profiling(){
#endif
}
void RUNTIME_start_stats(){
#ifdef CHAMELEON_ENABLE_PRUNING_STATS
RUNTIME_total_tasks = 0;
RUNTIME_exec_tasks = 0;
RUNTIME_comm_tasks = 0;
RUNTIME_changed_tasks = 0;
#endif
}
void RUNTIME_stop_stats(){
#ifdef CHAMELEON_ENABLE_PRUNING_STATS
fprintf(stderr, "\ntasks: %u = exec: %u + comm: %u + changed: %u\n", RUNTIME_total_tasks, RUNTIME_exec_tasks, RUNTIME_comm_tasks, RUNTIME_changed_tasks);
#endif
}
void RUNTIME_profiling_display_info(const char *kernel_name, measure_t perf[STARPU_NMAXWORKERS])
{
int header = 1;
......
......@@ -86,16 +86,53 @@ typedef struct starpu_conf starpu_conf_t;
void RUNTIME_set_reduction_methods(starpu_data_handle_t handle, MORSE_enum dtyp);
#define RUNTIME_BEGIN_ACCESS_DECLARATION
#ifdef CHAMELEON_ENABLE_PRUNING_STATS
#define RUNTIME_PRUNING_STATS_BEGIN_ACCESS_DECLARATION \
int __morse_exec = 0; \
int __morse_changed = 0;
#define RUNTIME_PRUNING_STATS_ACCESS_W(A, Am, An) \
if (morse_desc_islocal(A, Am, An)) \
__morse_exec = 1;
#define RUNTIME_PRUNING_STATS_END_ACCESS_DECLARATION \
RUNTIME_total_tasks++; \
if (__morse_exec) \
RUNTIME_exec_tasks++; \
else if (__morse_need_submit) \
RUNTIME_comm_tasks++; \
else if (__morse_changed) \
RUNTIME_changed_tasks++;
#define RUNTIME_PRUNING_STATS_RANK_CHANGED(rank) \
int __morse_myrank; \
RUNTIME_comm_rank(&__morse_myrank); \
__morse_exec = (rank) == __morse_myrank; \
__morse_changed = 1; \
#define RUNTIME_ACCESS_R(A, Am, An)
#else
#define RUNTIME_PRUNING_STATS_BEGIN_ACCESS_DECLARATION
#define RUNTIME_PRUNING_STATS_ACCESS_W(A, Am, An)
#define RUNTIME_PRUNING_STATS_END_ACCESS_DECLARATION
#define RUNTIME_PRUNING_STATS_RANK_CHANGED(rank)
#endif
#define RUNTIME_BEGIN_ACCESS_DECLARATION \
RUNTIME_PRUNING_STATS_BEGIN_ACCESS_DECLARATION
#define RUNTIME_ACCESS_R(A, Am, An) \
#define RUNTIME_ACCESS_W(A, Am, An)
#define RUNTIME_ACCESS_W(A, Am, An) \
RUNTIME_PRUNING_STATS_ACCESS_W(A, Am, An)
#define RUNTIME_ACCESS_RW(A, Am, An)
#define RUNTIME_ACCESS_RW(A, Am, An) \
RUNTIME_PRUNING_STATS_ACCESS_W(A, Am, An)
#define RUNTIME_RANK_CHANGED(rank)
#define RUNTIME_RANK_CHANGED(rank) \
RUNTIME_PRUNING_STATS_RANK_CHANGED(rank)
#define RUNTIME_END_ACCESS_DECLARATION
#define RUNTIME_END_ACCESS_DECLARATION \
RUNTIME_PRUNING_STATS_END_ACCESS_DECLARATION;
#endif /* _MORSE_STARPU_H_ */
......@@ -26,6 +26,13 @@
#ifndef _PROFILING_H_
#define _PROFILING_H_
#ifdef CHAMELEON_ENABLE_PRUNING_STATS
extern unsigned long RUNTIME_total_tasks;
extern unsigned long RUNTIME_exec_tasks;
extern unsigned long RUNTIME_comm_tasks;
extern unsigned long RUNTIME_changed_tasks;
#endif
typedef struct measure_s {
double sum;
double sum2;
......
......@@ -159,6 +159,7 @@ enum dparam_timing {
*
*/
#define START_TRACING() \
RUNTIME_start_stats(); \
if(iparam[IPARAM_TRACE] == 2) { \
RUNTIME_start_profiling(); \
} \
......@@ -167,6 +168,7 @@ enum dparam_timing {
}
#define STOP_TRACING() \
RUNTIME_stop_stats(); \
if(iparam[IPARAM_TRACE] == 2) { \
RUNTIME_stop_profiling(); \
} \
......