【发布时间】:2011-12-27 23:06:09
【问题描述】:
请帮助我为什么下面不起作用。在我的比较中,当我尝试打印 var 的值时,它只打印 0。
#include<stdio.h>
__constant__ float pivot;
__global__ void kernel(float *set){
*set = pivot;
}
void main(){
float c[] = {1,3,4};
cudaError_t err = cudaMemcpyToSymbol(pivot,&c[2], sizeof(float));
/*
float test;
cudaMemcpyFromSymbol(&test,pivot,sizeof(float));
printf("the value of test is %f",test);
*/
if(err!=0){
printf("some error\n");
getchar();
}
float *st;
cudaMalloc((void**)&st, sizeof(float));
kernel<<<1,1>>>(st);
float *var = (float*)malloc(sizeof(float));
cudaMemcpy(var, st, sizeof(float),cudaMemcpyDeviceToHost);
printf("the value of st is %f",var);
getchar();
}
【问题讨论】:
-
嗯 var 是一个指针,而不是一个浮点数,你可能想打印 *var...
-
@Dan:谢谢。那解决了它。帖子作为答案,我会接受它