Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List of features to deprecate #17

Closed
halimamer opened this issue Apr 7, 2017 · 5 comments
Closed

List of features to deprecate #17

halimamer opened this issue Apr 7, 2017 · 5 comments

Comments

@halimamer
Copy link

halimamer commented Apr 7, 2017

There are a number of features that were originally added to the public Argobots API that proved unnecessary or break some intentions. This issue keeps track of these features that will be considered for deprecation in the future.

  1. User-provided stacks (c.f. threads with user-provided stacks: Need stack free hook #16)
  2. Allowing busy-waiting, i.e., blocking, inside a tasklet (c.f. Disallow any form of blocking behaviour in tasklets #15)
  3. The event interface
@carns
Copy link
Contributor

carns commented Apr 24, 2018

FWIW, the Mochi project doesn't use either of these features; we wouldn't notice them being removed :)

@shintaro-iwasaki
Copy link
Collaborator

ABT_xstream_create_with_rank:
it does not seem very necessary. It just makes the ES management complicated.

ABT_thread_retain/ABT_thread_release/ABT_task_retain/ABT_task_release:

  1. They are totally broken now.
  2. There's no good fix without hurting performance (these features force atomic operations (just for counters) to the runtime).

ABT_thread_set_arg/ABT_thread_get_arg/ABT_task_get_arg/ABT_self_set_arg/ABT_self_get_arg:

  1. The runtime cannot guarantee when the arguments are read by ULTs.
  2. Currently this functionality is used to embed user data (a pointer) to a ULT, but again, it is not the intended use. We should create ABT_thread_set_data instead.

@pavanbalaji
Copy link
Contributor

@shintaro-iwasaki It might be useful to create a PR removing these features and have @carns and others (e.g., folks from the DAOS project) approve it.

@carns
Copy link
Contributor

carns commented Jul 9, 2019

FWIW we don't use any of those specific functions, but the PR approach seems reasonable to me.

@shintaro-iwasaki
Copy link
Collaborator

The information is obsolete, so I will close this issue. The following is the summary.

  1. [User-provided stacks] Argobots continues to support it.
    It is useful in some cases (ULT stack allocation method to address overrun scenario #274)

  2. [Allowing busy-waiting inside a tasklet] Argobots continues to support it. Argobots 2.0 allows more.
    All blocking operations support tasklets from Argobots 2.0. It is the user's responsibility to avoid a deadlock.

  3. [The event interface] Argobots 1.0 has removed it
    It was unused.

  4. [ABT_xstream_create_with_rank()] Argobots continues to support it.
    It's mostly useless but we cannot easily remove it. ABT_xstream_set_rank() should be also problematic, but at least we can keep supporting it without any performance overheads.

  5. [ABT_thread_retain(), ABT_thread_release(), ABT_task_retain(), ABT_task_release()] Argobots 1.0 has removed them.
    They were completely broken.

  6. [ABT_thread_set_arg(), ABT_thread_get_arg(), ABT_task_get_arg(), ABT_self_set_arg(), ABT_self_get_arg()] Argobots continues to support them.
    Although it is very error-prone, it is the user's responsibility to maintain the argument properly.

Other deprecated features are explicitly noted in the specification. Most of them are deprecated from Argobots 2.0. Note that Argobots 1.1 will not change the existing Argobots 1.0 behavior except for a few corner cases (e.g., ABT_barrier_create() with num_waiters = 0).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants