我在一个数组中有 1000 个浮点数据。我想分成不同的班级,比如说4个班级。它们的大小是不可预测的。我可以轻松地将它们保存在 CPU 实现中的链表中,但在 OpenCL 内核中,有这样的机会吗?在我看来,这个问题有 3 个解决方案。首先,在类数中构造长度为 1000 的数组,这很耗费内存。其次,我分配了一个长度为 1000 的数组并将它们分成几部分。但是,我可能会将值从不同的索引传输并索引到不同的索引中,因为我不知道每个类的大小,它们可能超过我为每个类提供的大小。
第三,在我看来更好的是,我得到了两个长度相同的不同数组。其中一个存储数据,另一个存储指针。例如,在数据数组的第 i 个索引中,存储属于第 2 类的值。此外,在指向属于第二类的下一个数据的指针的第 i 个索引中。但这仅适用于原子类型(如 int、float、char 等)链表。
我是 OpenCL 的新手。我还不知道它的很多功能。如果有更好的方法,请不要与我和其他人分享。