12 static int checksorted(
int * start,
int nmemb) {
14 for(i = 1; i < nmemb; i ++) {
15 if( start[i-1] > start[i]) {
22 static int compare(
const void *a,
const void *b) {
23 return ( *(
int*)a - *(
int*)b );
39 for(i = 0; i < size; i++)
40 a[i].
dd[0] = (
int) (size * drand48());
44 start = omp_get_wtime();
46 end = omp_get_wtime();
48 message(1,
"parallel sort time = %g s %d threads\n",end-start, omp_get_max_threads());
49 for(i=1; i<size; i++) {
50 if( a[i-1].
dd[0] >a[i].
dd[0] )
51 message(1,
"BAD: %d %d %d\n",i,a[i-1].
dd[0],a[i].
dd[0]);
52 assert_true(a[i-1].
dd[0] <= a[i].
dd[0]);
56 for(i = 0; i < size; i++)
57 a[i].
dd[0] = (
int) (size * drand48());
59 start = omp_get_wtime();
61 end = omp_get_wtime();
63 message(1,
"serial (glibc) sort time = %g s\n",end-start);
71 int *a = (
int *) malloc(size *
sizeof(
int));
74 for(i = 0; i < size; i++)
75 a[i] = (
int) (size * drand48());
79 start = omp_get_wtime();
81 end = omp_get_wtime();
83 message(1,
"parallel sort time = %g s %d threads\n",end-start, omp_get_max_threads());
84 for(i=1; i<size; i++) {
86 message(1,
"BAD: %d %d %d\n",i,a[i-1],a[i]);
87 assert_true(a[i-1] <= a[i]);
91 for(i = 0; i < size; i++)
92 a[i] = (
int) (size * drand48());
94 start = omp_get_wtime();
95 qsort(a, size,
sizeof(
int),
compare);
96 end = omp_get_wtime();
98 message(1,
"serial sort time = %g s\n",end-start);
103 const struct CMUnitTest tests[] = {
107 return cmocka_run_group_tests_mpi(tests, NULL, NULL);
void message(int where, const char *fmt,...)
static int compare(const void *a, const void *b)
static void test_openmpsort_struct(void **state)
static void test_openmpsort(void **state)