| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[openmp] [test] Unbreak tests that rely on hidden_helper_task on Windows The hidden helper task is only enabled on Linux (kmp_runtime.cpp initializes __kmp_enable_hidden_helper to TRUE for linux but to FALSE for any other OS), and the __kmp_stg_parse_use_hidden_helper function always makes it disabled on non-Linux OSes too. Add a lit test feature for hidden helper tasks (only made available on Linux) and mark two tests as requiring this feature. Disable hidden helper tasks in the test that doesn't really involve them, for consistent behaviour across platforms. Differential Revision: https://reviews.llvm.org/D137749 | 3 年前 | |
[OpenMP][test][AIX] Make 64 the max number of threads for capacity tests in AIX 32-bit (#88739) This patch makes 64 the max number of threads for 2 capacity tests in AIX 32-bit mode rather than XFAILing them. | 2 年前 | |
[OpenMP][test][AIX] Make 64 the max number of threads for capacity tests in AIX 32-bit (#88739) This patch makes 64 the max number of threads for 2 capacity tests in AIX 32-bit mode rather than XFAILing them. | 2 年前 | |
[OpenMP] fix endianness dependent definitions in OMP headers for MSVC (#84540) MSVC does not define __BYTE_ORDER__ making the check for BigEndian erroneously evaluate to true and breaking the struct definitions in MSVC compiled builds correspondingly. The fix adds an additional check for whether __BYTE_ORDER__ is defined by the compiler to fix these. --------- Co-authored-by: Vadim Paretsky <b-vadipa@microsoft.com> | 2 年前 | |
[OpenMP] Fix task wait doesn't work as expected in serialized team As discussed in D107121, task wait doesn't work when a regular task T depends on a detached task or a hidden helper task T' in a serialized team. The root cause is, since the team is serialized, the last task will not be tracked by td_incomplete_child_tasks. When T' is finished, it first releases its dependences, and then decrements its parent counter. So far so good. For the thread that is running task wait, if at the moment it is still spinning and trying to execute tasks, it is fine because it can detect the new task and execute it. However, if it happends to finish the function flag.execute_tasks(...), it will be broken because td_incomplete_child_tasks is 0 now. In this patch, we update the rule to track children tasks a little bit. If the task team encounters a proxy task or a hidden helper task, all following tasks will be tracked. Reviewed By: AndreyChurbanov Differential Revision: https://reviews.llvm.org/D107496 | 4 年前 | |
[openmp] [test] Unbreak tests that rely on hidden_helper_task on Windows The hidden helper task is only enabled on Linux (kmp_runtime.cpp initializes __kmp_enable_hidden_helper to TRUE for linux but to FALSE for any other OS), and the __kmp_stg_parse_use_hidden_helper function always makes it disabled on non-Linux OSes too. Add a lit test feature for hidden helper tasks (only made available on Linux) and mark two tests as requiring this feature. Disable hidden helper tasks in the test that doesn't really involve them, for consistent behaviour across platforms. Differential Revision: https://reviews.llvm.org/D137749 | 3 年前 | |
[OpenMP] Have hidden helper team allocate new OS threads only (#87119) The hidden helper team pre-allocates the gtid space [1, num_hidden_helpers] (inclusive). If regular host threads are allocated, then put back in the thread pool, then the hidden helper team is initialized, the hidden helper team tries to allocate the threads from the thread pool with gtids higher than [1, num_hidden_helpers]. Instead, have the hidden helper team fork OS threads so the correct gtid range used for hidden helper threads. Fixes: #87117 | 2 年前 | |
[OpenMP][Tests][NFC] Mark unsupported libomp tests for GCC This patch properly marks the support level for libomp test when testing with GCC. Some new OpenMP features were only introduced with GCC 11. Tests using the target construct are incompatibe with GCC. Tests pass now with GCC 10, 11, 12 | 3 年前 | |
[OpenMP] Added the support for hidden helper task in RTL The basic design is to create an outer-most parallel team. It is not a regular team because it is only created when the first hidden helper task is encountered, and is only responsible for the execution of hidden helper tasks. We first use pthread_create to create a new thread, let's call it the initial and also the main thread of the hidden helper team. This initial thread then initializes a new root, just like what RTL does in initialization. After that, it directly calls __kmpc_fork_call. It is like the initial thread encounters a parallel region. The wrapped function for this team is, for main thread, which is the initial thread that we create via pthread_create on Linux, waits on a condition variable. The condition variable can only be signaled when RTL is being destroyed. For other work threads, they just do nothing. The reason that main thread needs to wait there is, in current implementation, once the main thread finishes the wrapped function of this team, it starts to free the team which is not what we want. Two environment variables, LIBOMP_NUM_HIDDEN_HELPER_THREADS and LIBOMP_USE_HIDDEN_HELPER_TASK, are also set to configure the number of threads and enable/disable this feature. By default, the number of hidden helper threads is 8. Here are some open issues to be discussed: 1. The main thread goes to sleeping when the initialization is finished. As Andrey mentioned, we might need it to be awaken from time to time to do some stuffs. What kind of update/check should be put here? Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D77609 | 5 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 4 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 5 年前 |