请教一个demo

cai123321cai 2011-03-18 05:30:11

#include <stdio.h>
#include <stdlib.h>
#include <cutil_inline.h>

__global__ static void HelloCUDA(char* result, char *d_HelloCUDA)
{
int tid = threadIdx.x + blockIdx.x * 5;
result[tid] = d_HelloCUDA[tid];
}


int main(int argc, char* argv[])
{

char *device_result = 0;
char *d_HelloCUDA = 0;
char host_result[63] ={0};
char h_HelloCUDA[] = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

cutilSafeCall( cudaMalloc((void**) &device_result, sizeof(char) * sizeof(host_result)));
cutilSafeCall( cudaMalloc((void**) &d_HelloCUDA, sizeof(char) * sizeof(h_HelloCUDA)));
cutilSafeCall( cudaMemcpy(d_HelloCUDA,h_HelloCUDA, sizeof(char) * sizeof(h_HelloCUDA), cudaMemcpyHostToDevice));



HelloCUDA<<<2, 5, 0>>>(device_result,d_HelloCUDA);
cutilCheckMsg("Kernel execution failed\n");

cudaThreadSynchronize();

cutilSafeCall( cudaMemcpy(host_result, device_result, sizeof(char) * 62, cudaMemcpyDeviceToHost));
printf("%s\n", host_result);

cutilSafeCall( cudaFree(device_result));

return 0;
}


返回很奇怪,
abcdefghijpqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
开头10字节 空5字节
问题是后面的为什么都输出了?

我只调用了10个线程啊,他应该只执行10次,

这到底是为什么啊?
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cai123321cai 2011-03-18
  • 打赏
  • 举报
回复
多谢大侠

测试通过
lizecn 2011-03-18
  • 打赏
  • 举报
回复
1。修改各数组长度一致
2。 malloc host_result,试一下

581

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧