-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Collect contribution ideas #1411
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: pavelkumbrasev <[email protected]>
Signed-off-by: pavelkumbrasev <[email protected]>
I did not cover each and every task that are available for contribution in this initial commits. |
## Beginner | ||
|
||
### Cleanup the code base from redundant macros. | ||
After the revamp from TBB to oneTBB, many macros were removed. However, some of them are still being used in the codebase. | ||
Retrieve a list of macros used in the library and clean up any redundant ones. | ||
|
||
### Introduce new examples. | ||
You have the option to contribute a new example that you deem significant. | ||
Alternatively, you can check library APIs that have not yet been covered and provide an example that addresses them. | ||
Any example you provide should adhere to the style of the existing benchmarks. | ||
|
||
### Stabilize examples performance. | ||
Several oneTBB examples serve as performance benchmarks for the library. It's recommended to check the relative error for these examples. | ||
If the error exceeds 5%, consider stabilizing the example to improve the reproducibility of results, while still maintaining a reasonable execution time. | ||
|
||
## Intermediate | ||
|
||
### C++ 20 Modules | ||
With the introduction of C++ 20 Modules, it is worth analyzing the applicability of this feature to the oneTBB library. | ||
Modules provide a more efficient and scalable way of organizing and managing code dependencies. | ||
To get started, you can refer to the C++ 20 Modules documentation and familiarize yourself with the syntax and concepts. | ||
Then, analyze the oneTBB codebase and propose a modularization strategy that aligns with the library's architecture. | ||
Please do not forget to document your finding into oneTBB discussion page. | ||
|
||
### NUMA related improvements | ||
The oneTBB scheduler, by default, does not incorporate platform characteristics into its task scheduling. | ||
You might want to enhance the scheduler's logic to take into account these platform characteristics. | ||
For instance, you could refer to Hierarchical task stealing (#523) as a starting point. | ||
|
||
## Expert | ||
|
||
### Graceful degradation on thread creation failure. | ||
On many Unix-like systems, `pthread_create` can fail spuriously even if | ||
the running machine has enough resources to spawn a new thread (#824). | ||
Consider reworking the thread creation process and avoid calling `std::terminate` if | ||
`pthread_create` has failed. One question to consider is how to handle `task_arena::enqueue` guarantees. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider submitting a separate GH issue for each task from this list. That would allow to reference them in this file and have a further discussion on each task in a corresponding thread.
### Introduce new examples. | ||
You have the option to contribute a new example that you deem significant. | ||
Alternatively, you can check library APIs that have not yet been covered and provide an example that addresses them. | ||
Any example you provide should adhere to the style of the existing benchmarks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Considering this as a "beginner" task, is it worth giving a hint on such possible API to have an example for?
Consider reworking the thread creation process and avoid calling `std::terminate` if | ||
`pthread_create` has failed. One question to consider is how to handle `task_arena::enqueue` guarantees. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The end goal of this task sounds pretty vague to me. Considering this as "expert" task, could you please elaborate more on what should be the output of this task?
This will help ensure that you can make meaningful contributions and continue to grow as a developer. | ||
|
||
## Beginner | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Сonsider the following "beginner" task:
### Align symbol exporting rules across oneTBB libraries/plugins | |
oneTBB uses .def files to list global symbols to be exported and also local symbols to hide. | |
For example, TBBMalloc hides symbols from static libraries which is a result of compilation with Intel Compiler (see https://github.com/oneapi-src/oneTBB/blob/master/cmake/compilers/Intel.cmake#L34). | |
oneTBB library hides all symbols which are not listed in global section. | |
But other libraries like TBBBind, for example, for some reason does neither of these things and it may result in some symbol conflicts in them environment where multiple libraries depends on the same symbols. | |
The goal of this task is to align approaches across all of these libraries: | |
- Define local section with the symbols not meant for the exporting for each library. | |
- Analyze if is there any unintendedly exported symbols that are not related to the oneTBB libraries themselves. Consider hiding these symbols not in .def files but in the corresponding compiler CMake files. |
Idea: improve proxy tasks clean-up mechanism |
Description
This patch provides a list of tasks that the community can help us with.