草庐IT

SIMD_WIDTH

全部标签

c++ - 在 x86 SIMD vector 中查找最大元素的索引

我正在考虑为uint32_t实现8元堆排序。为此,我需要一个函数来选择8元素vector中最大元素的索引,以便我可以将它与父元素进行比较,并有条件地执行交换和进一步的筛选步骤。(8uint32_ts可以更改为16uint32_ts或8uint64_t或任何x86SIMD可以有效支持的内容)。我对如何做到这一点有一些想法,但我正在寻找比非矢量化代码更快的东西,尤其是我正在寻找能让我进行快速堆排序的东西。我有clang++3.3和Corei7-4670,所以也许我应该能够使用最新的x86SIMD东西。(顺便说一句:这是一个更大项目的一部分:https://github.com/tarsa/

c++ - SIMD 延迟吞吐量

关于IntelIntrisicsGuide对于大多数指令,它还具有延迟和吞吐量的值。示例:__m128i_mm_min_epi32PerformanceArchitectureLatencyThroughputHaswell10.5IvyBridge10.5SandyBridge10.5Westmere11Nehalem11这些数字到底是什么意思?我想较慢的延迟意味着命令需要更长的时间来执行,但是Nehalem的吞吐量1和Ivy的0.5意味着命令在Nehalem上更快? 最佳答案 指令的“延迟”是执行一条指令需要多少个时钟周期(结果

针对 SIMD : Making an SoA less of a PiTA 的 C++ 设计

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.2年前关闭。Improvethisquestion苦乐参半的SOA我最近看到了使用带有SoA(数组结构)表示的手写SIMD内在函数的乐趣。与我以前的AoS(结构数组)代码相比,速度的提升,至少对于简单的顺序类型的流操作而言,几乎是惊人的,速度提高了一倍到三倍。作为奖励,除了减少内存使用之外,它还简化了逻辑以排除那些棘手的水平操作和混洗组件。然而,后来有一种苦乐参半的感觉,我意识到他们在代码中使用的PITA是什么,尤其是界面设计。中级界

c++ - SIMD/SSE : How to check that all vector elements are non-zero

我需要检查所有vector元素是否非零。到目前为止,我找到了以下解决方案。有一个更好的方法吗?我在Linux/x86_64上使用gcc4.8.2,指令高达SSE4.2。typedefcharChrVect__attribute__((vector_size(16),aligned(16)));inlinebooltestNonzero(ChrVectvect){constChrVectvzero={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};return(0==(__int128_t)(vzero==vect));}更新:上面的代码被编译为以下汇编代码(当编译为非

c++ - 使用较新的 SIMD 版本时是否可以使用较旧的 SIMD 版本?

当我可以使用SSE3或AVX时,SSE2或MMX等较旧的SSE版本是否可用-还是我还需要单独检查它们? 最佳答案 一般来说,这些都是附加的,但请记住,多年来英特尔和AMD对这些的支持有所不同。如果您有AVX,那么您也可以使用SSE、SSE2、SSE3、SSSE3、SSE4.1和SSE4.2。请记住,要使用AVX,您还需要验证OSXSAVECPUID位是否已设置,以确保您使用的操作系统实际上也支持保存AVX寄存器。您仍应明确检查您在代码中使用的所有CPUID支持以确保稳健性(比如同时检查AVX、OSXSAVE、SSE4、SSE3、SS

c++ - 使用 SIMD 指令执行任意 128/256/512 位排列的最快方法是什么?

我想在宽度为128、256或512位的CPU寄存器(xmm、ymm或zmm)上执行单个位、位对和半字节(4位)的任意排列;这应该尽可能快。为此,我正在研究SIMD指令。有谁知道执行此操作的方法/实现它的库?我在Windows上使用MSVC,在Linux上使用GCC,宿主语言是C或C++。谢谢!我得到了一个任意排列,需要打乱大量的位vector/位vector对/半字节。我知道如何为64位值中的位执行此操作,例如usingaBenesnetwork.或者在更宽的SIMD寄存器上混洗8位和更大的block,例如将AgnerFog的GPLedVectorClass库(https://www.

iOS 自动布局 : Set the trailing space equal to the width of the superview

我需要使用自动布局将View定位在其父View的右边界之外。我试图通过指定以下NSLayoutConstraint来做到这一点:NSLayoutConstraint*leftConstraint=[NSLayoutConstraintconstraintWithItem:self.downloadViewattribute:NSLayoutAttributeLeftrelatedBy:NSLayoutRelationEqualtoItem:self.contentViewattribute:NSLayoutAttributeWidthmultiplier:1.0constant:0.0

ios - UIStackView : Change UIStackView image width using storyboard

问题:图像占用了大部分堆栈,文本缩小了我尝试更改内容拥抱优先级但没有任何更改!如何使用storyboard在UIStackview中做到这一点?我希望单元格看起来像Eventbright事件单元格?我得到的是一张占据大部分单元格的图像? 最佳答案 代替Fill,将UIStackView的Distribution更改为FillProportionally并添加宽度约束每个元素。这些约束将作为一个元素相互比例的指南,而不是固定大小。 关于ios-UIStackView:ChangeUISta

ios - 启动屏幕 XIB : Missing Width/Height Constraints (Xcode 6)

我正在使用Xcode6构建一个面向iOS8的iOS应用。我正在处理LaunchScreen.xib文件,该文件是从菜单创建的:File>New>File>iOS-UserInterface-LaunchScreen。“使用自动布局”已启用。在XIB的主要UIView中,我放置了一个UIImageView。我想添加宽度和高度约束,以便UIImageView具有与容器相同的大小。但是,Xcode不允许我这样做:我只能处理间距和对齐。这是我看到的:我做错了什么?为什么我看不到如下所示的菜单?我知道我可以通过将容器的前导空格、尾随空格、顶部空间和底部空间设置为0来达到相同的结果,但我也想了解这

ios - Compact Width in Size Classes 中的 "Regular Height"和 "Any Height"有什么区别?

在CompactWidth中,在AnyHeight中声明的NSLayoutConstraints与应用于RegularHeight类。这些类之间有什么区别? 最佳答案 我想这可能只是语义上的区别。如果你为横向iPhone创建了一个CompactHeight布局,那么你就不能再称纵向iPhone为“任何”了,是吗?此外,还有用于紧凑/常规宽度的用例,因此将紧凑/常规高度作为配对只会保持系统平衡和一致。最后的想法——这为future具有不同外形的设备留下了灵active。该选项已经存在。 关