gpt4 book ai didi

c - 初始化结构错误 : 'theGrid' being used without being initialized

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:50 25 4
gpt4 key购买 nike

我正在尝试为我的 OpenCl/GL 流体创建 3d 网格。我遇到的问题是由于某种原因我的网格初始化函数无法正常工作。这是我的 *.h、*.c 设置和(最后)在 main 中的调用:

(网格.h):

#if RunGPU 
#define make_float3(x,y,z) (float3)(x,y,z)
#define make_int3(i,j,k) (int3)(i,j,k)
#else
typedef struct i3{
int i,j,k;
} int3;

typedef struct f3{
float x,y,z;
} float3;

#define __global
#define make_float3(x,y,z) {x , y , z}
#define make_int3(x,y,z) {x , y ,z}
#endif

typedef struct grid3 * grid3_t; // u,v,w
typedef struct grid * grid_t; // p

struct grid3 {
__global float3* values_;
__global float * H_;
__global float * h_;

int dimx_;
int dimy_;
int dimz_;
} ;

struct grid {
__global float * values_;

int dimx_;
int dimy_;
int dimz_;
};
void grid3_init(grid3_t grid,__global float3* vel,__global float* H,__global float *h, int X, int Y, int Z);

(网格.c):

void grid3_init(grid3_t grid,__global float3* val,__global float* H,__global float *h, int X, int Y, int Z){
grid->values_ = val;
grid->H_ = H;
grid->h_ = h;
grid->dimx_ = X;
grid->dimy_ = Y;
grid->dimz_ = Z;
}

在 main im 中像这样初始化我的网格:

int main(int argc, char** argv)
{
const int size3d = Bx*(By+2)*Bz;
const int size2d = Bx*Bz;

float3 * velocities = (float3*)malloc(size3d*sizeof(float3));
float * H = (float*)malloc(size2d*sizeof(float));
float * h = (float*)malloc(size2d*sizeof(float));

for(int i = 0; i < size3d; i++){
float3 tmp = make_float3(0.f,0.f,0.f);
velocities[i] = tmp;
if(i < size2d){
H[i] = 1;
h[i] = 2;
}
}

grid3_t theGrid;
grid3_init(theGrid, velocities, H, h, Bx, By, Bz); // <- ERROR OCCURS HERE
}

我得到的错误是在运行时 - “运行时检查失败 #3 - 变量 'theGrid' 正在使用而没有被初始化”。但这正是 grid3_init 的工作吗?

当我尝试编写同时适用于主机和 GPU 的代码时,我不得不牺牲类的使用并严格使用结构——我在这方面的经验较少。

在这一点上,我也不知道要用谷歌搜索什么,我很感激能得到的任何帮助。

最佳答案

struct grid3 theGrid;
grid3_init(&theGrid, velocities, H, h, Bx, By, Bz);

您需要创建grid3 实例并将其指针传递给grid3_init。您现有的代码仅使用未初始化的指针。

关于c - 初始化结构错误 : 'theGrid' being used without being initialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22269849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com