最近在《OpenCL异构计算》这本书(《Heterogeneous computing with OpenCL》翻译而来)上看到有一部分解释这些异构常用字段方法的含义,加上个人理解,希望可以帮助“码友”快速理解。
get_work_dim
返回线程调度的维度数;(个人理解)表示NDRange的维度数。
get_global_size
返回所请求维度上work-item的总数;(个人理解)在不考虑多维度的情况下,返回全局计算任务数,即work-item总数。
get_global_id
返回在所请求的维度上当前work-item在全局空间中的索引;(个人理解)在不考虑多维度的情况下,返回全局中当前索引位置。
get_local_size
返回在所请求维度上work-group的大小;(个人理解)在不考虑多维度的情况下,返回当前work-group内所含work-item的数量。
get_local-id
返回在所请求的维度上,当前work-item在work-group中的索引;(个人理解)在不考虑多维度的情况下,返回当前位置在当前work-group内索引。
get_number_groups
返回在所请求维度上work-group的数目,这个值等于get_global_size除以get_local_size;(个人理解)返回组数嘛,这个官方已经解释的很详细了^_^
get_group_id
返回在所请求的维度上当前work-group在全局空间中的索引。(个人理解)在不考虑多维度的情况下,返回当前组在所有组中的索引。
注:
而理清上面方法字段含义的前提是,一个任务是由多个work-group组成的,work-group又是由多个work-item组成的。各个work-group之间不相互通信,也不能保证同时运行,而同一个work-group内的work-item之间可以相互通信,并且可认为是同时进行的。