我正在从Udacity的course中学习有关并行编程的CUDA。在测验中,他们遇到了一个对预先排名的变量(玩家的高度)进行排序的问题。因为它是输入和输出数组之间的一一对应关系,所以它应该不是Map
通信模式,而不是Scatter
吗?
最佳答案
据我所知,CUDA没有对这些术语进行规范定义。因此,我的回答仅是关于它可能是或已经被解释过的建议。
“因此,它是输入和输出数组之间的一一对应关系”
该图似乎不支持该语句,该图显示了输出数组中的间隙,这些间隙没有与之关联的相应输入点。
如果将较小的一组值分配到较大的数组中(因此,在输出数组中具有结果间隙,因此没有输入值与间隙位置相对应),则可以使用散布来描述该操作。散点图和 map 都具有描述输入值去向的 map ,但可能是讲师以区分这两种情况的方式定义了散点图和 map ,例如以下可能的定义:
分散:输入到输出的一对一关系(即单向关系)。每个输入位置都有一个对应的输出位置,但不是每个输出位置都有一个对应的输入位置。
映射:输入和输出之间的一对一关系(即双向关系)。每个输入位置都有一个对应的输出位置,每个输出位置都有一个对应的输入位置。
聚集:从输出到输入的一对一关系(即单向关系)。每个输出位置都有一个对应的输入位置,但不是每个输入位置都有一个对应的输出位置。
关于CUDA:分散通信模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27874612/