GithubHelp home page GithubHelp logo

bsc-pm / bots Goto Github PK

View Code? Open in Web Editor NEW
44.0 44.0 14.0 445 KB

Barcelona OpenMP Task Suite is a collection of applications that allow to test OpenMP tasking implementations and compare its behaviour under certain circumstances: task tiedness, throttle and cut-offs mechanisms, single/multiple task generators, etc.

License: GNU General Public License v2.0

Makefile 6.42% C 91.05% C++ 1.49% Shell 0.21% Roff 0.01% Objective-C 0.82%
benchmark ompss openmp testing

bots's People

Contributors

lee218llnl avatar smateo avatar xteruel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bots's Issues

alloca and malloc cast

There are a several calls to alloca and malloc that try to store the results to non void * variables without casting appropriately. For example in serial/nqueens/nqueens.c line 106, in the find_queens function, the code does this:

a = alloca(size * sizeof(char));

Where a is a char *. The Intel compiler does not like this.

strassen is incorrectly initialized

Strassen should compute a matrix multiplication C = A * B. Right now, matrices A and B are initialized, but then both strassen_main_par and strassen_main_seq are called to compute A = B * C instead. And since C is uninitialized, the result will mostly be 0.

If using validation, compare_matrix will calculate the relative difference between two cells of the parallel and sequential result. For most cells this will be (0-0)/0, which is of course undefined and passes the validation for whatever reason.

A simple fix could be to call the main functions as strassen_main_par(A,B,C,bots_arg_size) instead of strassen_main_par(C, A, B, bots_arg_size) in app-desc.h.

Health parses inputs wrong on 64-bit setup

Hi, I have been running the bots applications, including Health, for a paper I am writing. I have noticed that if Health is run with the -check flag, the verification is always unsuccessful. I have tried using -check on fft and sort, and there it is successful.

How to reproduce:

  1. Git pull latest version (master) or download older bots-1.1.2.tar.gz and extract
  2. ./configure and make on a modern 64-bit setup. I have tried using both gcc and Clang.
  3. cd run && ./run-health.sh -check

After going through the source, and re-checking compiler output, this is the culprit:
https://github.com/bsc-pm/bots/blob/master/omp-tasks/health/health.c#L561
Which gcc does complain about:

health.c:564:21: warning: format ‘%ld’ expects argument of type ‘long int *’, but argument 9 has type ‘int32_t * {aka int *}’ [-Wformat=]

For medium inputs, the parameters are incorrectly parsed as follows:

Number of levels    = 4
Cities per level    = 36
Population ratio    = 10
Simulation time     = 0    <-- Should be 365
Assess time         = 2
Convalescence time  = 12
Initial seed        = 23
Get sick prob.      = 0.002000
Convalescence prob. = 0.100000
Realloc prob.       = 0.150000

Changing the %ld format to %d fixes the problem. I assume it was %ld because it is an old application, and because the seed needed to be atleast 32 bits in the days where it was only guaranteed to be 16 bits. However, on modern setups, this causes a bug.

Versions with IF-clause or Final lead to compile objects with UNTIED tasks only

Health and nQueens sources leads to produce always executables with UNTIED tasks when compiling with IF-Clause or Final Cut-Off, even when executables with TIED tasks should be produced.

I generated some dump of the object files and indeed the "flag" parameter passed to function "GOMP_task" has always the UNTIED bit set in the aforementioned scenarios.

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.