gpt4 book ai didi

c# - GPU上数组元素的并行计算

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:00 26 4
gpt4 key购买 nike

我正在使用 C# 创建数据库。问题是我有近 400 万个数据点,完成数据库需要很多时间(可能几个月)。代码看起来像这样。

int[,,,] Result1=new int[10,10,10,10];
int[,,,] Result2=new int[10,10,10,10];
int[,,,] Result3=new int[10,10,10,10];
int[,,,] Result4=new int[10,10,10,10];

for (int i=0;i<10;i++)
{
for (int j=0;j<10;j++)
{
for (int k=0;k<10;k++)
{
for (int l=0;l<10;l++)
{
Result1[i,j,k,l]=myFunction1(i,j,k,l);
Result2[i,j,k,l]=myFunction2(i,j,k,l);
Result3[i,j,k,l]=myFunction3(i,j,k,l);
Result4[i,j,k,l]=myFunction4(i,j,k,l);
}
}
}
}

Result数组的所有元素都是完全独立的。我的 PC 有 8 个内核,我为每个 myFunction 方法创建了一个线程,但整个过程仍然需要很多时间,因为有很多情况。我想知道是否有任何方法可以在 GPU 而不是 CPU 上运行它。我以前没有做过,我不知道它会如何运作。如果有人可以帮助我,我将不胜感激。

最佳答案

是的,这些场景的直觉是使用多线程/甚至 GPU 来加速。但重要的是弄清楚场景是否适合并行计算。

正如您所建议的那样,这些数据集彼此独立,但是当您在 8 核上运行多线程版本时,没有明显的改进:这表明潜在的问题:您关于数据集独立性的陈述是错误的,或者您的实现多线程代码未优化。我建议您先调整代码以查看改进,然后寻求将其移植到 GPU 平台的方法。

或者您可以查看适用于并行线程/GPU 内核的OPENCL。但重要的是弄清楚你的问题是否真的适合并行计算

关于c# - GPU上数组元素的并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com