CUDA:结果汇总

CUDA:结果汇总,cuda,Cuda,我用CUDA来解决一个问题,我需要一个包含许多输入矩阵的复杂方程。每个矩阵都有一个ID,取决于它的集合(在1到30之间,有100000个矩阵),每个矩阵的结果存储在浮点[N]数组中,其中N是输入矩阵的数量 在这之后,我想要的结果是这个数组中每个ID的每个浮点值的总和,因此对于30个ID,有30个结果浮点值 有没有关于我应该怎么做的建议 现在,我将浮点数组(400kb)从设备读回主机,并在主机上运行: // Allocate result_array for 100,000 floats on t

我用CUDA来解决一个问题,我需要一个包含许多输入矩阵的复杂方程。每个矩阵都有一个ID,取决于它的集合(在1到30之间,有100000个矩阵),每个矩阵的结果存储在浮点[N]数组中,其中N是输入矩阵的数量

在这之后,我想要的结果是这个数组中每个ID的每个浮点值的总和,因此对于30个ID,有30个结果浮点值

有没有关于我应该怎么做的建议

现在,我将浮点数组(400kb)从设备读回主机,并在主机上运行:

// Allocate result_array for 100,000 floats on the device
// CUDA process input matrices
// Read from the device back to the host into result_array
float result[10] = { 0 };
for (int i = 0; i < N; i++)
{
    result[input[i].ID] += result_array[i];
}
//为设备上的100000个浮点分配结果\u数组
//CUDA进程输入矩阵
//从设备读回主机到结果_数组
浮点结果[10]={0};
对于(int i=0;i

但是我想知道是否有更好的方法。

您可以使用
cublasSasum()
来实现这一点-这比调整其中一个SDK简化版要简单一些(但当然不太通用)。查看CUDA SDK中的CUBLAS示例。

听起来像是一个简化-研究CUDA SDK中的简化示例。谢谢,我不知道它的单词,我会看一看。