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