如何使此代码成为cuda(cpu代码到cuda代码) 我有一个C++程序,我想把这个代码变成CUDA,一般来说我正在寻找一个方法来实现这一点。 我的假设是: 1-全局变量 2-全局数组
问题#1: 我是否需要在全局中定义像主机阵列一样的设备阵列 问题#2: 只能使用设备阵列吗 问题#3: 我想要一个优化代码,在那里我使用并行循环更好 Func_2()对我来说是很难转换成cuda的部分,请有人给我看一下我的简化代码 简化代码为:如何使此代码成为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
#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的经验。我想知道我的问题,以找到注释并学习一些东西。