Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance SIMD采集和插入之间有什么区别?_Performance_Memory_Architecture_Vectorization_Simd - Fatal编程技术网

Performance SIMD采集和插入之间有什么区别?

Performance SIMD采集和插入之间有什么区别?,performance,memory,architecture,vectorization,simd,Performance,Memory,Architecture,Vectorization,Simd,AFAK中,聚集和插入指令都是为将非连续数据元素从内存加载到向量寄存器而设计的,但我发现许多论文介绍了聚集技术,作为一种更有效的打包非连续元素的方法 insert易于理解:发出多个标量加载UOP,并将相应的数据元素逐个加载到向量寄存器中 gather需要一个base_addr和一个索引向量,它被添加到base_addr以指示要加载的元素 但是集合是如何实现的,它是否作为插入发出多个加载UOP?与insert相比,性能差异的原因是什么?insert需要每个加载的元素至少一条指令。“聚集”是一个单独

AFAK中,聚集和插入指令都是为将非连续数据元素从内存加载到向量寄存器而设计的,但我发现许多论文介绍了聚集技术,作为一种更有效的打包非连续元素的方法

insert易于理解:发出多个标量加载UOP,并将相应的数据元素逐个加载到向量寄存器中

gather需要一个base_addr和一个索引向量,它被添加到base_addr以指示要加载的元素


但是集合是如何实现的,它是否作为插入发出多个加载UOP?与insert相比,性能差异的原因是什么?

insert需要每个加载的元素至少一条指令。“聚集”是一个单独的指令。两者最终可能会创建大约相同数量的加载微操作,但如果您受到指令获取、解码、分支预测或I-cache的限制,则如果微体系结构对此进行了优化,则“聚集”可能会更有效。@EOF感谢您提供的有用信息。我读了很多报纸,但没有找到这个。可以给我推荐信吗?没有推荐信。这是对汇编语言的基本理解。我写的哪一部分需要进一步细化?上次我在Haswell CPU上测试时,gather实际上比只使用_mm_setr_ps慢,后者本身使用插入指令。CPU可能需要一段时间才能以最少的微操作支持指令,但我预计最终会发生这种情况。在CPU内部没有实现仿真,至少在Haswell上没有。《英特尔优化手册》中有一节介绍了这一点。