提取交错浮点数据

发布于 2024-10-13 02:31:26 字数 408 浏览 4 评论 0原文

对于使用 cuda 的 cufft 库的任何人(或了解其知识的人)来说,从交错数据类型 cufftComplex 恢复数据的最有效方法是什么?

数据按如下方式添加到结构中:

cufftComplex SomeData;
/*...a loop...*/ 
SomeData[i].x=1.0f;
SomeData[i].y=0.0f;

因此,现在如果我将 &(SomeData[0].x& 转换为指向浮点数的指针,我的数据格式为“1 0 1 0 1” “因为 x/y 数据是交错的。我想正确键入它,以便得到“1 1 1 1”等。有没有办法在不使用循环并直接分配元素的情况下重新转换此类型?

感谢您提供任何信息正如我之前提到的,这是 CUDA sdk 的一部分。

For anybody using the cufft library from cuda (or somebody that knows their stuff)- what is the most efficient way to recover data from the interleaved data type cufftComplex?

Data is added to the structure as follows:

cufftComplex SomeData;
/*...a loop...*/ 
SomeData[i].x=1.0f;
SomeData[i].y=0.0f;

So now if I cast &(SomeData[0].x& as a pointer to a float, I have data in the form "1 0 1 0 1 " Because the x/y data is interleaved. I want to correctly type it so that I get "1 1 1 1 " ect. Is there a way to recast this type without using a loop and directly assigning the elements?

Thanks for any info. As I previously mentioned this is part of the CUDA sdk.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

任性一次 2024-10-20 02:31:26

你不能仅仅通过转换来做到这一点 - 底层数据是交错的,没有办法解决这个问题。如果您确实需要连续的数据流(例如纯实数数据),那么您将必须对数据进行去交错,您可以就地或异地执行此操作。

You can't do it just by casting - the underlying data is interleaved and there is no way around that. If you really do need a contiguous stream of e.g. real-only data then you will have to de-interleave the data, which you can do either in place or out-of-place.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文