Skip to content

[RFC]: Improve sorted arrays generation in C benchmarks for sorted-input packages #10415

@LoayAhmed304

Description

@LoayAhmed304

Description

This RFC proposes to generalize the generation of random arrays in C benchmarks for sorted-input packages. It mainly tries to add a random factor for the generated values and make use of the already existing rand_double() function and time.h header for consistency between packages.

For example, for double precision packages, to be changed from: (e.g., from stats/base/strided/dminsorted)

x = (double *) malloc( len * sizeof( double ) );
for ( i = 0; i < len; i++ ) {
	x[ i ] = i;
}

To:

x = (double *) malloc( len * sizeof( double ) );
for ( i = 0; i < len; i++ ) {
    x[ i ] = (double)i + rand_double();
}

Packages that are directly affected by this (add more if found):

  • stats/strided/dmediansorted
  • stats/strided/dmaxsorted
  • stats/strided/dminsorted
  • stats/strided/smediansorted
  • stats/strided/smaxsorted
  • stats/strided/sminsorted

Related Issues

None.

Questions

Question 1

I suggest that we either enforce this or refactor the already existing packages that don't use any randomness by removing the time.h header and rand_double() function since they're not used anywhere in the benchmark.

Question 2

What about the absolute sorted-input packages? Current approach is: (from stats/base/strided/dmaxabssorted)

x = (double *) malloc( len * sizeof( double ) );
for ( i = 0; i < len; i++ ) {
		x[ i ] = i - (len/2);
	}

Other

No.

Checklist

  • I have read and understood the Code of Conduct.
  • Searched for existing issues and pull requests.
  • The issue name begins with RFC:.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions