Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CUDA程序的问题_C++_C_Cuda - Fatal编程技术网

C++ CUDA程序的问题

C++ CUDA程序的问题,c++,c,cuda,C++,C,Cuda,这是我的密码: #include <vector_types.h> #define sizeOfGrid 5 __global__ void stuff( float3 *grid ) { grid[0].x = 0.4f; //PROBLEM HERE?! } int main( void ) { float3 *grid[sizeOfGrid]; float3 *dev_grid; HANDLE_ERROR(cudaMalloc( (void*

这是我的密码:

#include <vector_types.h>
#define sizeOfGrid   5
__global__ void stuff( float3 *grid ) {
    grid[0].x = 0.4f; //PROBLEM HERE?!
}
int main( void ) {
    float3 *grid[sizeOfGrid];
    float3 *dev_grid;
    HANDLE_ERROR(cudaMalloc( (void**)&dev_grid, sizeOfGrid*sizeof(float3)));
    for(int i = 0; i < sizeOfGrid; i++)
    {
        grid[i] = new float3();
        grid[i]->x = 1.3f;
        grid[i]->y = 1.3f;
        grid[i]->z = 1.3f;
    }


    HANDLE_ERROR(cudaMemcpy(dev_grid, grid, sizeOfGrid * sizeof(float3), cudaMemcpyHostToDevice));
    stuff<<<sizeOfGrid, 1>>> (dev_grid);
    cudaMemcpy(grid, dev_grid, sizeOfGrid*sizeof(float3), cudaMemcpyDeviceToHost);
    cudaFree(dev_grid);
}
#包括
#定义sizeOfGrid 5
__全局无效填充(浮动3*网格){
网格[0].x=0.4f;//这里有问题吗?!
}
内部主(空){
float3*网格[sizeOfGrid];
浮动3*开发网格;
句柄错误(cudamaloc((void**)和dev_grid,sizeOfGrid*sizeof(float3));
对于(int i=0;ix=1.3f;
网格[i]>y=1.3f;
网格[i]>z=1.3f;
}
处理错误(cudaMemcpy(dev_grid,grid,sizeOfGrid*sizeof(float3),cudaMemcpyHostToDevice));
材料(开发网格);
cudaMemcpy(网格、开发网格、sizeOfGrid*sizeof(float3)、cudaMemcpyDeviceToHost);
cudaFree(开发网格);
}
现在它只是一个测试程序,并不意味着做任何有用的事情。编译和运行正常,但它似乎没有正确设置网格[0]。是因为我在设备代码中设置了网格[0]错误吗

float3 *grid[sizeOfGrid];
您正在为float3分配指针数组,而不是float3数组。 你应该申报

float3 grid[sizeOfGrid];
和使用。而不是->或

float3 *grid;
使用malloc和free.

float3 *grid[sizeOfGrid];
您正在为float3分配指针数组,而不是float3数组。 你应该申报

float3 grid[sizeOfGrid];
和使用。而不是->或

float3 *grid;

并免费使用malloc。

谢谢!工作!不确定你是否是IRC聊天室里的同一个人。但要感谢你们两个,如果你们不是:汉克斯!工作!不确定你是否是IRC聊天室里的同一个人。但要感谢你们两个,如果你们不是:D