您好!
我的客户担心 SYS/BIOS 环境中 OpenMP 并行区域的限制。 它们在系统中有一些 SYS/BIOS 任务、并考虑在这些上下文中使用 OpenMP pragma。
我能否理解 TI OpenMP 运行时,例如 openmp_dsp_c667x_2_06_00_00允许在多个 SYS/BIOS 任务实例中使用 OpenMP pragma? 如果是,OpenMP 运行时如何安排从这些任务分派的工作?
此致、
Naoki
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我的客户担心 SYS/BIOS 环境中 OpenMP 并行区域的限制。 它们在系统中有一些 SYS/BIOS 任务、并考虑在这些上下文中使用 OpenMP pragma。
我能否理解 TI OpenMP 运行时,例如 openmp_dsp_c667x_2_06_00_00允许在多个 SYS/BIOS 任务实例中使用 OpenMP pragma? 如果是,OpenMP 运行时如何安排从这些任务分派的工作?
此致、
Naoki
您好、Naoki、
默认情况下,OpenMP 运行时配置为假设程序在 core0上启动,其中主线程运行,工作线程在其他内核上运行(不在 SYS/BIOS 任务中)。 在 core0上、可以将主线程配置为从 SYS/BIOS 任务的上下文中运行。 需要在运行时进行一些更改、才能将工作线程(在其他内核上)放入 SYS/BIOS 任务中。 因此、简单的答案是、在 core0上、您可以运行多个 SYS/BIOS 任务、其中一个任务可能运行 OpenMP 并行区域、该区域将工作卸载到其他内核上的线程。 其他内核不运行 SYS/BIOS 任务、而是专用于作为工作线程运行。
另一种方法是对器件进行分频、并在 SYS/BIOS 任务的不同内核上运行多个 OpenMP "主"线程。 一个 OpenMP 主系统/BIOS-任务可以在 core0上运行、并且在 Core1-3上具有工作线程、而另一个 OpenMP 主系统系统/BIOS-任务可以在 CORE4上运行、并在 CORE4-7上具有工作线程。 但这不是默认配置、需要对某些存储器进行分区。 就像并行运行两个独立的 OpenMP 程序一样。
我们有兴趣与您一起调整 OpenMP 运行时以满足您的要求。
此致、
Eric Stotzer
您好、Naoki、
运行时的当前配置支持运行并行区域的 CORE0上的一个 SYS/BIOS 任务(一次)。 OpenMP 运行时状态变量只有一个副本。 理论上,您可以设置一个具有多个运行时状态变量副本的配置,然后并行运行“多”OpenMP 实例。 这与我在前一封电子邮件中提出的多个 device-openmp-tasks 建议类似。
2.见上文第1段)。 主线程正在 SYS/BIOS 任务中运行。 但可以调整 OpenMP 运行时以将工作线程放入 OpenMP 任务中。 我认为、如果你想用一个更高优先级的任务(openmp 或 not)来挤占工作线程任务、那么考虑会发生什么情况是不够的。 只要与同一并行区域相对应的所有工作线程任务以相同的优先级执行、它似乎就能正常工作。
此致、Eric
1.是的。 默认配置为:core0上的一个 SYS/BIOS 任务可以执行一个并行区域。 Cores1-7被保留为工作,而不是运行 SYS/BIOS,等待从队列中提取工作(由 core0上的主系统发送给他们)。 目前支持此功能。
2、通过一些工作,可以支持您所概述的内容。 第一步是将内核1-7上的工作人员打包到 SYS/BIOS 任务中。 下一步是对 OpenMP 运行时状态进行打包,以便 OpenMP 主员工的多个实例可以以不同的优先级一起运行。 此模型类似于使多个 OpenMP 程序并行运行。
您的想象力对我来说似乎很好-您已经明白了。
Eric