9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-12-22 03:23:29 +01:00

Removed IPP dependency with intel using C quicksort

This commit is contained in:
Anthony Scemama 2022-05-01 14:32:30 +02:00
parent 7cd6b13805
commit f168b885db
17 changed files with 70 additions and 70 deletions

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : ifort -fpic FC : ifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DINTEL -DSET_NESTED IRPF90_FLAGS : --ninja --align=32 -DINTEL -DSET_NESTED

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : mpiifort -fpic FC : mpiifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL -DSET_NESTED IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL -DSET_NESTED

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : mpiifort -fpic FC : mpiifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DINTEL -DSET_NESTED IRPF90_FLAGS : --ninja --align=32 -DINTEL -DSET_NESTED

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : ifort -fpic FC : ifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DINTEL -DSET_NESTED IRPF90_FLAGS : --ninja --align=32 -DINTEL -DSET_NESTED

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : ifort -fpic FC : ifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DINTEL -DSET_NESTED IRPF90_FLAGS : --ninja --align=32 -DINTEL -DSET_NESTED

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : mpiifort -fpic FC : mpiifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL -DSET_NESTED IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL -DSET_NESTED

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : ifort -fpic FC : ifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=64 -DINTEL -DSET_NESTED IRPF90_FLAGS : --ninja --align=64 -DINTEL -DSET_NESTED

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : ifort -fpic FC : ifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DINTEL IRPF90_FLAGS : --ninja --align=32 -DINTEL

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : mpiifort -fpic FC : mpiifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : mpiifort -fpic FC : mpiifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DINTEL IRPF90_FLAGS : --ninja --align=32 -DINTEL

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : ifort -fpic FC : ifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DINTEL IRPF90_FLAGS : --ninja --align=32 -DINTEL

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : ifort -fpic FC : ifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DINTEL IRPF90_FLAGS : --ninja --align=32 -DINTEL

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : mpiifort -fpic FC : mpiifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL

View File

@ -7,7 +7,7 @@
# #
[COMMON] [COMMON]
FC : ifort -fpic FC : ifort -fpic
LAPACK_LIB : -mkl=parallel -lirc -lsvml -limf -lipps LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=64 -DINTEL IRPF90_FLAGS : --ninja --align=64 -DINTEL

View File

@ -65,7 +65,7 @@ function run_stoch() {
@test "H2O2" { # 12.9214s @test "H2O2" { # 12.9214s
qp set_file h2o2.ezfio qp set_file h2o2.ezfio
qp set_mo_class --core="[1-2]" --act="[3-24]" --del="[25-38]" qp set_mo_class --core="[1-2]" --act="[3-24]" --del="[25-38]"
run -151.005848404095 1.e-3 100000 run -151.005848404095 2.e-3 100000
} }
@test "HBO" { # 13.3144s @test "HBO" { # 13.3144s

View File

@ -9,14 +9,14 @@ struct int16_t_comp {
int compare_int16_t( const void * l, const void * r ) int compare_int16_t( const void * l, const void * r )
{ {
const struct int16_t_comp * restrict _l= l; const int16_t * restrict _l= l;
const struct int16_t_comp * restrict _r= r; const int16_t * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_int16_t(int16_t* A_in, int32_t* iorder, int32_t isize) { void qsort_int16_t(int16_t* restrict A_in, int32_t* restrict iorder, int32_t isize) {
struct int16_t_comp* A = malloc(isize * sizeof(struct int16_t_comp)); struct int16_t_comp* A = malloc(isize * sizeof(struct int16_t_comp));
if (A == NULL) return; if (A == NULL) return;
@ -46,14 +46,14 @@ struct int16_t_comp_big {
int compare_int16_t_big( const void * l, const void * r ) int compare_int16_t_big( const void * l, const void * r )
{ {
const struct int16_t_comp_big * restrict _l= l; const int16_t * restrict _l= l;
const struct int16_t_comp_big * restrict _r= r; const int16_t * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_int16_t_big(int16_t* A_in, int64_t* iorder, int64_t isize) { void qsort_int16_t_big(int16_t* restrict A_in, int64_t* restrict iorder, int64_t isize) {
struct int16_t_comp_big* A = malloc(isize * sizeof(struct int16_t_comp_big)); struct int16_t_comp_big* A = malloc(isize * sizeof(struct int16_t_comp_big));
if (A == NULL) return; if (A == NULL) return;
@ -83,14 +83,14 @@ struct int32_t_comp {
int compare_int32_t( const void * l, const void * r ) int compare_int32_t( const void * l, const void * r )
{ {
const struct int32_t_comp * restrict _l= l; const int32_t * restrict _l= l;
const struct int32_t_comp * restrict _r= r; const int32_t * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_int32_t(int32_t* A_in, int32_t* iorder, int32_t isize) { void qsort_int32_t(int32_t* restrict A_in, int32_t* restrict iorder, int32_t isize) {
struct int32_t_comp* A = malloc(isize * sizeof(struct int32_t_comp)); struct int32_t_comp* A = malloc(isize * sizeof(struct int32_t_comp));
if (A == NULL) return; if (A == NULL) return;
@ -120,14 +120,14 @@ struct int32_t_comp_big {
int compare_int32_t_big( const void * l, const void * r ) int compare_int32_t_big( const void * l, const void * r )
{ {
const struct int32_t_comp_big * restrict _l= l; const int32_t * restrict _l= l;
const struct int32_t_comp_big * restrict _r= r; const int32_t * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_int32_t_big(int32_t* A_in, int64_t* iorder, int64_t isize) { void qsort_int32_t_big(int32_t* restrict A_in, int64_t* restrict iorder, int64_t isize) {
struct int32_t_comp_big* A = malloc(isize * sizeof(struct int32_t_comp_big)); struct int32_t_comp_big* A = malloc(isize * sizeof(struct int32_t_comp_big));
if (A == NULL) return; if (A == NULL) return;
@ -157,14 +157,14 @@ struct int64_t_comp {
int compare_int64_t( const void * l, const void * r ) int compare_int64_t( const void * l, const void * r )
{ {
const struct int64_t_comp * restrict _l= l; const int64_t * restrict _l= l;
const struct int64_t_comp * restrict _r= r; const int64_t * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_int64_t(int64_t* A_in, int32_t* iorder, int32_t isize) { void qsort_int64_t(int64_t* restrict A_in, int32_t* restrict iorder, int32_t isize) {
struct int64_t_comp* A = malloc(isize * sizeof(struct int64_t_comp)); struct int64_t_comp* A = malloc(isize * sizeof(struct int64_t_comp));
if (A == NULL) return; if (A == NULL) return;
@ -194,14 +194,14 @@ struct int64_t_comp_big {
int compare_int64_t_big( const void * l, const void * r ) int compare_int64_t_big( const void * l, const void * r )
{ {
const struct int64_t_comp_big * restrict _l= l; const int64_t * restrict _l= l;
const struct int64_t_comp_big * restrict _r= r; const int64_t * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_int64_t_big(int64_t* A_in, int64_t* iorder, int64_t isize) { void qsort_int64_t_big(int64_t* restrict A_in, int64_t* restrict iorder, int64_t isize) {
struct int64_t_comp_big* A = malloc(isize * sizeof(struct int64_t_comp_big)); struct int64_t_comp_big* A = malloc(isize * sizeof(struct int64_t_comp_big));
if (A == NULL) return; if (A == NULL) return;
@ -231,14 +231,14 @@ struct double_comp {
int compare_double( const void * l, const void * r ) int compare_double( const void * l, const void * r )
{ {
const struct double_comp * restrict _l= l; const double * restrict _l= l;
const struct double_comp * restrict _r= r; const double * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_double(double* A_in, int32_t* iorder, int32_t isize) { void qsort_double(double* restrict A_in, int32_t* restrict iorder, int32_t isize) {
struct double_comp* A = malloc(isize * sizeof(struct double_comp)); struct double_comp* A = malloc(isize * sizeof(struct double_comp));
if (A == NULL) return; if (A == NULL) return;
@ -268,14 +268,14 @@ struct double_comp_big {
int compare_double_big( const void * l, const void * r ) int compare_double_big( const void * l, const void * r )
{ {
const struct double_comp_big * restrict _l= l; const double * restrict _l= l;
const struct double_comp_big * restrict _r= r; const double * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_double_big(double* A_in, int64_t* iorder, int64_t isize) { void qsort_double_big(double* restrict A_in, int64_t* restrict iorder, int64_t isize) {
struct double_comp_big* A = malloc(isize * sizeof(struct double_comp_big)); struct double_comp_big* A = malloc(isize * sizeof(struct double_comp_big));
if (A == NULL) return; if (A == NULL) return;
@ -305,14 +305,14 @@ struct float_comp {
int compare_float( const void * l, const void * r ) int compare_float( const void * l, const void * r )
{ {
const struct float_comp * restrict _l= l; const float * restrict _l= l;
const struct float_comp * restrict _r= r; const float * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_float(float* A_in, int32_t* iorder, int32_t isize) { void qsort_float(float* restrict A_in, int32_t* restrict iorder, int32_t isize) {
struct float_comp* A = malloc(isize * sizeof(struct float_comp)); struct float_comp* A = malloc(isize * sizeof(struct float_comp));
if (A == NULL) return; if (A == NULL) return;
@ -342,14 +342,14 @@ struct float_comp_big {
int compare_float_big( const void * l, const void * r ) int compare_float_big( const void * l, const void * r )
{ {
const struct float_comp_big * restrict _l= l; const float * restrict _l= l;
const struct float_comp_big * restrict _r= r; const float * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_float_big(float* A_in, int64_t* iorder, int64_t isize) { void qsort_float_big(float* restrict A_in, int64_t* restrict iorder, int64_t isize) {
struct float_comp_big* A = malloc(isize * sizeof(struct float_comp_big)); struct float_comp_big* A = malloc(isize * sizeof(struct float_comp_big));
if (A == NULL) return; if (A == NULL) return;

View File

@ -11,14 +11,14 @@ struct TYPE_comp_big {
int compare_TYPE_big( const void * l, const void * r ) int compare_TYPE_big( const void * l, const void * r )
{ {
const struct TYPE_comp_big * restrict _l= l; const TYPE * restrict _l= l;
const struct TYPE_comp_big * restrict _r= r; const TYPE * restrict _r= r;
if( _l->x > _r->x ) return 1; if( *_l > *_r ) return 1;
if( _l->x < _r->x ) return -1; if( *_l < *_r ) return -1;
return 0; return 0;
} }
void qsort_TYPE_big(TYPE* A_in, int32_t* iorder, int32_t isize) { void qsort_TYPE_big(TYPE* restrict A_in, int32_t* restrict iorder, int32_t isize) {
struct TYPE_comp_big* A = malloc(isize * sizeof(struct TYPE_comp_big)); struct TYPE_comp_big* A = malloc(isize * sizeof(struct TYPE_comp_big));
if (A == NULL) return; if (A == NULL) return;