c++ - GPU编程策略

标签 c++ cuda gpu

我正在尝试在 CUDA 中使用 c 来编程一种神经网络。我有一个基本问题。对于编程,我可以使用大数组或不同的命名策略。例如,对于权重,我可以将所有权重放在一个大数组中,或者对具有不同名称的不同层使用不同的数组,例如weight1用于第1层,weight2用于第2层,依此类推。第一个策略有点麻烦,而第二个对我来说更容易。但是,我想知道如果我使用不同的命名策略,是否会使程序在 GPU 上运行速度变慢?

最佳答案

只要所有数组仅分配一次并且不调整大小,性能差异应该可以忽略不计。

如果您不断地重新分配内存并调整保存权重的数组的大小,那么在大数组中管理自己的内存可能会带来性能优势。

然而,这是非常特定于实现的,如果您不知道自己在做什么,管理自己的内存/数组可能会使您的代码变慢且不太健壮。此外,如果您的神经网络很大,您可能很难找到足够大的连续内存块来容纳您的内存/数组 block 。

关于c++ - GPU编程策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30094044/

相关文章:

c++ - 如何指定在整个系统中搜索文件的目录

c++ - VoltDB 通过在一次调用中执行多个插入,C++ API

c++ - 并行运行 CUDA 和 OpenGL,无需使用互操作性

gpu - Nvidia GeForce 6xx 系列使用什么指令集?

c++ - 对 Boost::uBLAS vector 执行 STL 操作

c++ - 未指定文件

clojure - Clojure上的GPU编程?

linux - 使用 Meson 构建 CUDA 内核

opencl - 内存分配 Nvidia vs AMD

kubernetes - GKE 上节点池中的不可调度 GPU 工作负载