有会CUDA的吗?谁能帮我解释一下这个程序啊
gpu吧
全部回复
仅看楼主
level 1
merliny11 楼主
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cutil.h>
#include "kmp_kernel.cu"
#include "test_file.h"
int main()
{
char d[50];
int d_len,t_len;
char *dd,*d_text;;
int *d_num;
printf("dst:");
scanf("%s",&d);
d_len=strlen(d);
t_len=strlen(text);
int dd_size=(sizeof(char))*d_len;
cudaMalloc((void **)&dd,dd_size);
cudaMemcpy(dd,d,dd_size,cudaMemcpyHostToDevice); cudaMalloc((void **)&d_text,sizeof(char)*t_len);
cudaMemcpy(d_text,text,sizeof(char)*t_len,cudaMemcpyHostToDevice);
cudaMalloc((int **)&d_num,sizeof(int));
cudaMemcpy(d_num,num,sizeof(int),cudaMemcpyHostToDevice);
unsigned int timer=0;
cutCreateTimer(&timer);
cutStartTimer(timer);
dim3 block(16,16);
dim3 grid(t_len/256+1,1);
kmp_kernel<<<grid,block>>>(dd,d_len,t_len,d_text,d_num);
cudaMemcpy(num,d_num,sizeof(int),cudaMemcpyDeviceToHost);
cutStopTimer(timer);
printf("Processing time: %f (ms)\n",cutGetTimerValue(timer));
cutDeleteTimer(timer);
printf("the number of the string is %d\n",*num); }
应该是一个KMP算法的字符串匹配程序,谁能详细解释一下啊

2012年04月22日 07点04分 1
level 1
我是AMAX集团华美科技的徐杰,我们是Nvidia的全球推荐供应商,专做高性能计算机的。我们跟清华大学、国防科技大学、北京航空航天大学等等都合作过,有需求的话可以加我QQ:547148580
2012年05月08日 06点05分 2
level 2
CUDA C的语法大致与C相同,只不过有些CUDA C的专门语法,也就是<cutil.h>里的函数。cuda运行时要有一个调入显卡,再调出的过程,例如cudaMalloc(分配显存),cudaMemcpy(从显存调出或调入)这些东西。你这个程序应该是用了别人写好的cuda库,就是
"kmp_kernel.cu"文件。
kmp_kernel<<<grid,block>>>(dd,d_len,t_len,d_text,d_num); 这句应该是核心句,你要想知道程序具体长什么样,去kmp_kernel.cu 看看吧。对于CUDA C语法,在网上搜“CUDA documentation"就会有了。
2012年10月23日 05点10分 3
1