CUDA/GPU 有一系列可用的编程结构吗?

CUDA/GPU 有一系列可用的编程结构吗?

GPU 上可执行操作的范围是否有限制?

例如,你能像在 Java 或 C# 中那样创建字典/哈希表吗?从套接字接收数据包怎么样?你能否通过 PCI Express 总线、CPU 和 GPU 路由它们?

我对使用 GPU 以极低的延迟处理网络数据包数据很感兴趣。

答案1

GPU 无法访问连接到主机的任何硬件。

GPU 程序的典型执行过程是:

  • 数据从主机内存传输到 GPU 设备内存
  • GPU设备进行一些处理
  • 数据从 GPU 设备内存传回到主机内存

然后主机对数据进行一些有用的操作,例如将其显示给用户或保存到文件。

内存传输并不是免费的,所以通常你需要积累足够的数据,然后将其发送到 GPU 设备才能使其值得。

另外需要考虑的是 GPU 设备数据并行(相对于任务并行)。与可以并行运行不同代码的 CPU 不同,GPU 在不同数据上并行运行相同代码。这使得它们不适合用作 Web 服务器,但对于某些可以并行处理的科学和数学问题却非常有用。

如果您需要低延迟网络数据包处理,GPU 可能不太合适。您需要:

  • 接收网络数据包
  • 将其发送到 GPU(有些延迟)
  • GPU 上的处理
  • 发送回主机(更多延迟)

GPU 可行的唯一方式是:

  • 单个数据包分析可以并行化为多个较小的块
  • 你愿意等待大量网络数据包进来,并一次性分析其中的大部分

相关内容