From 8b29656003fb3280a196319566207e6a9b0ab89d Mon Sep 17 00:00:00 2001 From: pavelkumbrasev Date: Wed, 19 Jun 2024 08:47:48 +0100 Subject: [PATCH 1/2] Add initial form Signed-off-by: pavelkumbrasev --- CONTRIBUTION_IDEAS.MD | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 CONTRIBUTION_IDEAS.MD diff --git a/CONTRIBUTION_IDEAS.MD b/CONTRIBUTION_IDEAS.MD new file mode 100644 index 0000000000..96de7a2354 --- /dev/null +++ b/CONTRIBUTION_IDEAS.MD @@ -0,0 +1,64 @@ + + +# oneTBB Contribution Ideas +This file acts as a repository for potential contributions to the project. +It provides a centralized location where contributors can find tasks and features to work on, +helping to enhance the project. Its main purpose is to guide contributors towards areas where +they can make a positive impact on the project's development. + +## Complexity Brackets +Tasks in this repository are categorized into three complexity brackets: Beginner, Intermediate, and Expert. +Each task is labeled with the appropriate complexity bracket to indicate the level of difficulty. + +- Beginner:These tasks are suitable for contributors who are new to the project or have limited experience. +They involve relatively simple concepts and can be a good starting point for learning and getting familiar with the codebase. + +- Intermediate: These tasks require a moderate level of knowledge and experience. +They may involve more complex features or require understanding of specific areas of the project. +Contributors with some experience in the project can take on these tasks to further develop their skills. + +- Expert: These tasks are challenging and require advanced knowledge and expertise. +They often involve complex algorithms, performance optimizations, or deep understanding of the project's internals. +Contributors with extensive experience in the project can tackle these tasks to push the boundaries of the project's capabilities. + +When choosing a task to work on, consider your skill level and the complexity bracket that best matches your expertise. +This will help ensure that you can make meaningful contributions and continue to grow as a developer. + +## 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. + +## Intermediate + +### NUMA improvements +In the current state + +## 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. + From 17381569d9021062fa84e2f1ad64c41860845f31 Mon Sep 17 00:00:00 2001 From: pavelkumbrasev Date: Thu, 20 Jun 2024 15:34:40 +0100 Subject: [PATCH 2/2] Add more ideas Signed-off-by: pavelkumbrasev --- CONTRIBUTION_IDEAS.MD | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTION_IDEAS.MD b/CONTRIBUTION_IDEAS.MD index 96de7a2354..bbad2881af 100644 --- a/CONTRIBUTION_IDEAS.MD +++ b/CONTRIBUTION_IDEAS.MD @@ -49,10 +49,23 @@ 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 -### NUMA improvements -In the current state +### 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