我刚刚发现AMD相当于CUDA的__byte_perm内在; amdgcn_ds_swizzle
(或者至少我认为它相当于一个字节排列函数)。我的问题是这样的:CUDA的字节perm取两个无符号的32位整数,然后根据选择器参数的值(作为十六进制值提供)进行置换。但是,AMD的swizzle函数只需要一个无符号的32位整数,而一个int被称为“模式”。我如何利用AMD的Swizzle内在功能?AMD HCC Swizzle Intrinsic
回答
ds_swizzle and __byte_perm do有点不同。一个整个寄存器跨越整个寄存器,后面的两个32位寄存器中的任何四个字节排列。
AMD的ds_swizzle_b32 GCN指令实际上是与其他通道交换数值。您可以在要读取的通道中指定32位寄存器,并指定要将其放入的32位寄存器。还有一个硬编码值指定如何交换这些值。用户3528438指出ds_swizzle_b32的一个很好的解释是here。
__byte_perm不会与其他通道交换数据。它只收集来自其自己通道中的两个32位寄存器的任何4个字节并将其存储到寄存器中。没有跨线交通。
我猜接下来的问题是如何在AMD GCN硬件上进行“字节置换”。该指令是v_perm_b32。 (见第12-152页here)它基本上从两个指定的32位寄存器中选择任意四个字节。
感谢您提供此信息。 v_perm_b32函数似乎没有用HCC编译器实现。有没有办法使用原始汇编指令手动实现它?我正考虑使用“asm”函数在设备代码中调用“v_perm_b32”指令,但显然这对于HCC是非法的。 – ligosan
对不起,我不太了解HCC编译器,因为它没有Windows Visual Studio支持。我知道它可能在C#(__asm4GCN)中,但这可能不是你正在寻找的。如果HCC或OpenCL支持内联asm,那将会非常棒!顺便说一下,也许你可以要求将v_perm_b32支持添加到HCC编译器。 (或者更好的支持) – Sunsetquest
- 1. glBlitFramebuffer&swizzle
- 2. Object intrinsic monitor as java.util.concurrent.Lock
- 3. UINavigationController supportedInterfaceOrientations:category vs swizzle
- 4. swizzle NSMutableArray addObject:失败
- 5. 什么是HCC?它是病毒吗?
- 6. Swizzle NSURLConnection sendAsynchronous:request:queue:completionHandler and sendSynchronousRequest:returningResponse:error:not working
- 7. Swizzle swift属性getter/setter
- 8. Neon Intrinsic版本的汇编代码
- 9. UICollectionView不会调用intrinsic内容尺寸
- 10. iPhone设备上的Swizzle方法
- 11. 如何使用方法swizzle或子类
- 12. Emberjs解析器,amd和non-amd模块
- 13. OpenCL AMD AMD GPU时间测量问题
- 14. Dojo从非AMD项目转换到AMD
- 15. TypeScript + Dojo + AMD?
- 16. AMD perf events
- 17. Twilio AMD .NET API?
- 18. AMD xop支持
- 19. amd和coffeescript
- 20. Backbone AMD with requireJs
- 21. AMD jQuery Multiselect Widget
- 22. SQL LIKE“[AMD]%”
- 23. Xt(X Tools Intrinsic)Toolkit。什么是应用程序上下文?
- 24. 如何通过AMD
- 25. Dojo require()和AMD(1.7)
- 26. Highchart/Highstock AMD支持
- 27. Monetdb,cuda,opencl,amd bolt
- 28. AMD相当于NvOptimusEnablement
- 29. JShint警告:在AMD
- 30. 使用AMD和Moodle
你看过手册吗? – user3528438
[This](http://scchan.github.io/hcc/hc_8hpp.html)是我拥有的唯一手册。它没有提供太多的信息。我已经在互联网上搜索过,没有发现任何东西(除非我找错了地方)。所以我已经转向了stackoverflow作为我的最后的手段。 – ligosan
http://gpuopen.com/amd-gcn-assembly-cross-lane-operations/ – user3528438