众所周知,cuda通过__global__标志符可以将函数转移到GPU执行。对于这个程序:
#include <stdio.h>
#include "cuda_runtime.h"
__global__
void helloFromGPU() {
printf("hello from GPU\n");
}
int main(void)
{
float *dx;
cudaMalloc(&dx, 1<<4*sizeof(float));
printf("hello from cpu.\n");
helloFromGPU<<<1, 10>>>();
}
通过nvcc编译:
nvcc main.cu -o main
结果是GPU部分不会执行。为什么? 求问懂行的大佬分析解析一下,并给出能执行的写法。