文件名称:任务分担接口函数-analysis i terence tao third edition
文件大小:4.28MB
文件格式:PDF
更新时间:2024-06-27 22:52:00
OpenMP
图 10.3 任务分担接口函数 从 编 译 后 的 代 码 中 插 入 的 函 数 ort_entering_sections() 、 ort_entering_for() 或 ort_entering_single()里面调用该函数,用于进入到工作分担区域。此时往往有多于 1 个线程在 并行执行。第一个进入并行域的线程负责更新相应的计数器数值并返回 1,其他线程则返回 0。 但是不论是 ort_entering_sections()还是 ort_entering_for()都不用检查这个返回值,该返回值是 给 ort_mysingle()函数使用的,以判别是否应该执行 single 修饰的语句或语句块。 传入的参数中 wstype 是任务分担的类型(sections 、for 或 single),如果是 sections 类 型,那么 arg1 是 section 的个数;如果是 for 类型,那么 arg1 是 for 循环的 lower bound,而 arg2 是循环增量,为将来的 ort_entering_for()、ort_entering_sections()和 ort_engering_single() 做好“记账”(因不涉及具体任务,所以称为记账)准备。 关于工作分担的细节,还需要在 for 语句、sections 语句和 single 语句的处理函数里面完 成。下面是该入口函数的代码。 1. /* Enter a workshare region, update the corresponding counters 2. * and return 1 if i am the first thread to enter the region.