GithubHelp home page GithubHelp logo

jonghokim-raphael / aim7-modified Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 133 KB

Manycore OS Project with ETRI. Modify AIM7 for simulating microkernel.

Home Page: http://manycoreos.synology.me

Python 0.12% C 99.87% Shell 0.01%

aim7-modified's Introduction

AIM7-Modified

This is benchmark for manycore OS simulations.

This benchmark is made by modifying AIM7 benchmark.

If you want to see original AIM7 benchmark, see AIM7 mirror or https://sourceforge.net/projects/aimbench/.

If you want to know about 'Manycore OS Project with ETRI', see this

##How Original AIM7 Works ####AIM7 File List

  • Headers
    • files.h
    • funcal.h
    • suite.h
    • testerr.h
  • Source Codes
    • multitask.c
    • rpt.c
    • funcal.c
    • add.c
    • mul.c
    • div.c
    • num_fcns.c
    • int_fncs.c
    • rand.c
    • ram.c
    • disk1.c
    • disk_src.c
    • creat-clo.c
    • pipe-test.c
    • rtmsec.c
    • fillin.c
  • Workload
    • workload.compute
    • workload.dbase
    • workload.fserver
    • workload.shared
    • aim_1.sh
    • aim_2.sh
    • aim_3.sh
  • etc.

Every .c file except multitask.c and rpt.c has only one non-static function, whose name is same with the file name.
(ex) add.c has a function 'add_c()'

We will call the the non-static functions in .c files 'register function', because the functions register all function in the file.
(ex) add_c() will register all functions in add.c: add_double(), add_float(), add_long(), add_short(), add_int().

Every register function will return (source_file *) result.

In suite.h, data type source_file is defined.

typedef struct {

    char *sccs;
    char *filename;
    char *date;
    char *time;
} source_file;

For example, in add.c, register function looks like:

#define PI (3.14159)
#define OPS_PER_LOOP 12

source_file *add_c() {

	static char args_double[256];
	static char args_float[256];
	static source_file s = { " @(#) add.c:1.9 3/4/94 17:16:58",	/* SCCS info */
		__FILE__, __DATE__, __TIME__
	};

	sprintf(args_double, "%g %g 1500000", PI, -PI);	/* arbitrary use of pi */
	register_test("add_double", args_double, add_double,
		      1500 * OPS_PER_LOOP,
		      "Thousand Double Precision Additions");

	sprintf(args_float, "%g %g 1000000", 3.5, -3.5);	/* 3.5 to minimize round-off error */
	register_test("add_float", args_float, add_float, 1000 * OPS_PER_LOOP,
		      "Thousand Single Precision Additions");

	register_test("add_long", "3 -3 5000000", add_long,
		      5000 * OPS_PER_LOOP, "Thousand Long Integer Additions");
	register_test("add_int", "3 -3 5000000", add_int, 5000 * OPS_PER_LOOP,
		      "Thousand Integer Additions");
	register_test("add_short", "3 -3 2000000", add_short,
		      2000 * OPS_PER_LOOP, "Thousand Short Integer Additions");
	return &s;
}

In multitask.c, function register_test() is defined.

void register_test(char *name, char *args, int (*f)(), int factor, char *units) {

    if (num_cmdargs >= MAXCMDARGS) {
	
        fprintf(stderr, "\nInternal Error: Attempted to register too many tests.\n");
		exit(1);
	}

	cmdargs[num_cmdargs].name = name;
	cmdargs[num_cmdargs].args = args;
	cmdargs[num_cmdargs].f = f;
	cmdargs[num_cmdargs].factor = -1;	    /* unused by multitask */
	cmdargs[num_cmdargs].units = units;
	num_cmdargs++;
}

##How Modified AIM7 Works ####AIM7-Modified File List

  • Added or Modified to AIM7
    • aim7.h
      : Combine all macro and declarations in headers and source codes & Add custom repetition count macro.
    • fork_test.c
      : Split fork_test() from creat-clo.c
    • main.c
      : Split main() function from multitask.c
  • Removed from AIM7
    • suite.h
      : All contents in aim7.h
    • funcal.h
    • testerr.h
    • files.h
    • rtmsec.c
    • fillin.c
    • funcal.c
    • rpt.c

aim7-modified's People

Contributors

jonghokim-harry avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.