GPU编程策略
GPU Programming Strategy
我正在尝试使用CUDA中的C编程一种神经网络。我有一个基本问题。对于编程,我可以使用大数组或不同的命名策略。例如,对于权重,我可以将所有权重放在一个大数组中,或者使用不同的层来使用不同的层,例如,权重重1,而the loge 2 and for Layer2等等。第一个策略有点麻烦,而第二个策略对我来说更容易。但是,我想知道我是否使用不同的命名策略,是否会使程序较慢在GPU上运行?
只要所有数组仅分配一次并且不调整大小,性能的差异应可以忽略不计。
如果您不断地重新定位内存和调整重量的数组,则在大数组中管理自己的内存可能会有性能好处。
但是,这是非常特定的,如果您不知道自己在做什么,那么管理自己的内存/数组可能会使您的代码较慢且较低。另外,如果您的NN巨大,您可能会很难找到一个足够大的内存块以容纳您的内存/数组块。
这是我的2美分。具有1个非常大的数组的缺点:
- 很难调整大小,因此,如果您打算调整不可分割的层。去一个大街区。
- 正如丹尼尔(Daniel)所说
单独的数组或容器的缺点。
- 如果您有一个非常刻板的,不可预测的访问模式。如果采取多个步骤在数组中找到一个位置,则访问时间可以较慢。例如,如果您有指针列表的指针列表,请列出指针列表。您每次都必须采取三个(略昂贵的)步骤。可以通过适当的编码来避免。
通常,我会赞成分裂。
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- C++17中的并行执行策略
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 模板元编程:如何将参数包组合成新的参数包
- Qt Q串行端口未编程设备未关闭
- 运行时执行策略不同
- 模板元编程 - 尝试实现维度分析
- 我是编程新手
- 编译器上的策略数据结构不起作用
- 我应该在简单的策略游戏中为各个派系使用类吗 - C++
- C++编程从外部文本文件定义数组大小
- 了解算法的性能差异(如果以不同的编程语言实现)
- 使用 Gtkmm 以编程方式选择 Gtk::TextView 中的文本
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- C++ 运算符修改/元编程策略,用于不那么冗长的语法
- GPU编程策略
- 如何使用C++以编程方式更新组策略
- C++中用于嵌套循环的OpenMP编程的锁定策略
- 以编程方式为所有用户设置注册表软件策略键
- 通过Winapi以编程方式编辑Windows审核策略时出现权限错误