我正在尝试在 CUDA 中使用 c 来编程一种神经网络。我有一个基本问题。对于编程,我可以使用大数组或不同的命名策略。例如,对于权重,我可以将所有权重放在一个大数组中,或者对具有不同名称的不同层使用不同的数组,例如weight1用于第1层,weight2用于第2层,依此类推。第一个策略有点麻烦,而第二个对我来说更容易。但是,我想知道如果我使用不同的命名策略,是否会使程序在 GPU 上运行速度变慢?
最佳答案
只要所有数组仅分配一次并且不调整大小,性能差异应该可以忽略不计。
如果您不断地重新分配内存并调整保存权重的数组的大小,那么在大数组中管理自己的内存可能会带来性能优势。
然而,这是非常特定于实现的,如果您不知道自己在做什么,管理自己的内存/数组可能会使您的代码变慢且不太健壮。此外,如果您的神经网络很大,您可能很难找到足够大的连续内存块来容纳您的内存/数组 block 。
关于c++ - GPU编程策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30094044/