如何使此代码成为cuda(cpu代码到cuda代码) 我有一个C++程序,我想把这个代码变成CUDA,一般来说我正在寻找一个方法来实现这一点。 我的假设是: 1-全局变量 2-全局数组

如何使此代码成为cuda(cpu代码到cuda代码) 我有一个C++程序,我想把这个代码变成CUDA,一般来说我正在寻找一个方法来实现这一点。 我的假设是: 1-全局变量 2-全局数组,cuda,Cuda,问题#1: 我是否需要在全局中定义像主机阵列一样的设备阵列 问题#2: 只能使用设备阵列吗 问题#3: 我想要一个优化代码,在那里我使用并行循环更好 Func_2()对我来说是很难转换成cuda的部分,请有人给我看一下我的简化代码 简化代码为: #define R 16 #define C 32 #define run_t 60 #define max 3000 double array1 [R][C]; double array2 [R]; double array3 [R]; double

问题#1: 我是否需要在全局中定义像主机阵列一样的设备阵列

问题#2: 只能使用设备阵列吗

问题#3: 我想要一个优化代码,在那里我使用并行循环更好

Func_2()对我来说是很难转换成cuda的部分,请有人给我看一下我的简化代码

简化代码为:

#define R 16
#define C 32
#define run_t 60
#define max 3000

double array1 [R][C];
double array2 [R];
double array3 [R];
double array4 [C];

double r;
double min;


int main()
{
    int iter,run,j;
    double mean;
    srand(time(NULL));

    for (run=0;run<run_t;run++)// 60 Loop
    {

    Func_1();
    Func_2();
    for (iter=0;iter< max ;iter++)//3000 Loop
        {
        Func_3();
        Func_4();
        Func_5();
        Func_6();
        func_7();
        }
    }
}

double Func_00(array4[C])
{
    double top=0;
    for(int j=0;j<C;j++)
        top=array4[j]*array4[j]
    return top;
}
void Func_0(int index)
{
    for(int j=0;j<C;j++)
    {
        r= rand()+1/2+index;//for example   
    }
    array2[index]= Func_00(array4[]);
}

void Fun_1()
{
    int i;
    for(i=0;i<R;i++)
    {
        Func_0(i);
    }
    for(i=0;i<C;i++)
    {
        array4 = array1[0][i];
    }
}

void Fun_2()
{
    int i,j;
    for(i=0;i<R;i++)
    {
        if(array2[R]<min)
        {
            min=array2[i];
            for(j=0;j<C;j++)
                array4[j]=array1[i][j];
        }
    }
}

void Func_3(){}
void Func_4(){}
void Func_5(){}
void Func_6(){}
void Func_7(){}
#定义R 16
#定义c32
#定义运行\u t 60
#定义最大3000
双阵列1[R][C];
双阵列2[R];
双阵列3[R];
双阵列4[C];
双r;
双分钟;
int main()
{
国际热核实验堆,运行,j;
双均值;
srand(时间(空));

对于(run=0;run来说,开始学习CUDA的好地方是


将某些东西移植到CUDA取决于您的具体需求,并且要简洁地回答会很复杂。

因此,这不是一个代码移植论坛,这里没有真正的问题。了解并行性首先尝试修改您的代码以使用pthreads运行。谢谢您的回答。我知道我的问题是一般性的,我是CUDA的新手,我知道如何使用pthreadse循环“for”到并行以及如何使用数组1d…我需要更多关于cuda的研究,我需要更多的例子,我认为将CPU代码转换为GPU代码对我来说是一个很好的实践方式,但现在我没有任何编程cuda的经验。我想知道我的问题,以找到注释并学习一些东西。