0
這裏是我的代碼:問題的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**)&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);
}
現在它只是一個測試程序,並不意味着做任何有用的東西。編譯並運行良好,但它似乎沒有正確設置網格[0]。是否因爲我在設備代碼中設置了錯誤的網格[0]?
謝謝!成功了!不知道你是否和IRC聊天室裏的人一樣。但是要感謝你們兩個人,如果你們不是。 :d – ninjaneer