c# - 高效获取数组子集

标签 c# arrays cuda cuda.net

有没有一种有效的方法来获取 C# 数组的一个子集并将其传递给另一段代码(而不修改原始数组)?我使用 CUDA.net,它具有将数组复制到 GPU 的功能。我想例如将数组的第 10 个传递给函数,然后将数组的第 10 个分别复制到 GPU(用于流水线目的)。

以这种方式复制数组应该和一次性复制一样高效。它可以使用不安全的代码并仅引用正确的内存位置来完成,但除此之外我不确定。 CopyTo 函数将整个数组复制到另一个数组,因此这似乎没有用。

最佳答案

好吧,我之前误解了这个问题。

你要的是System.Buffer.BlockCopySystem.Array.Copy .

LINQ 方法效率极低。如果您能够重用要复制到的缓冲区,那也将有助于提高效率,避免每次都创建一个新数组 - 只需复制到顶部即可。除非你可以将你的“大”数组平均划分,否则你将需要一个新的数组来处理最后一种情况。

关于c# - 高效获取数组子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268513/

相关文章:

c# - 使用 DI/抽象工厂模式时的依赖关系处理

c# - 强制接口(interface)的子类实现 ToString

CUDA:重新分配内存时出现无效设备指针错误

c - 为什么我们需要 cudaDeviceSynchronize();在带有 device-printf 的内核中?

c - 如何获取变量地址的地址(&& 是编译器错误)?

c# - 如何在 Blazor 中的页面之间传递对象

c# - 如何通过 Visual Studio COM 包装器(或其他方式)在 C# 中使用 C++ 属性 union

c - 在数组中查找匹配的连续整数

javascript - 使用 Underscore JS 对 JSON 数组进行分组和聚合

c - 如何通过 C 中的函数操作字符串数组?