Still does not work. I'm starting to think that instead of this one huge revision, we should modify the existing interface step-by-step.
This commit is contained in:
@@ -61,12 +61,12 @@ printInt3(const int3 vec)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
print(const Node node)
|
print(const AcMeshInfo config)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < NUM_INT_PARAMS; ++i)
|
for (int i = 0; i < NUM_INT_PARAMS; ++i)
|
||||||
printf("[%s]: %d\n", intparam_names[i], node->config.int_params[i]);
|
printf("[%s]: %d\n", intparam_names[i], config.int_params[i]);
|
||||||
for (int i = 0; i < NUM_REAL_PARAMS; ++i)
|
for (int i = 0; i < NUM_REAL_PARAMS; ++i)
|
||||||
printf("[%s]: %g\n", realparam_names[i], double(node->config.real_params[i]));
|
printf("[%s]: %g\n", realparam_names[i], double(config.real_params[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -142,7 +142,7 @@ acNodeCreate(const int id, const AcMeshInfo node_config, Node* node_handle)
|
|||||||
#if VERBOSE_PRINTING // Defined in astaroth.h
|
#if VERBOSE_PRINTING // Defined in astaroth.h
|
||||||
printf("###############################################################\n");
|
printf("###############################################################\n");
|
||||||
printf("Config dimensions recalculated:\n");
|
printf("Config dimensions recalculated:\n");
|
||||||
print(node);
|
print(subgrid_config);
|
||||||
printf("###############################################################\n");
|
printf("###############################################################\n");
|
||||||
#endif
|
#endif
|
||||||
node->subgrid = createGrid(subgrid_config);
|
node->subgrid = createGrid(subgrid_config);
|
||||||
@@ -329,7 +329,8 @@ acNodeLoadVertexBufferWithOffset(const Node node, const Stream stream, const AcM
|
|||||||
const int3 d0 = (int3){0, 0, i * node->subgrid.n.z}; // DECOMPOSITION OFFSET HERE
|
const int3 d0 = (int3){0, 0, i * node->subgrid.n.z}; // DECOMPOSITION OFFSET HERE
|
||||||
const int3 d1 = (int3){node->subgrid.m.x, node->subgrid.m.y, d0.z + node->subgrid.m.z};
|
const int3 d1 = (int3){node->subgrid.m.x, node->subgrid.m.y, d0.z + node->subgrid.m.z};
|
||||||
|
|
||||||
const int3 s0 = dst;
|
const int3 s0 = src; // dst; // TODO fix
|
||||||
|
(void)dst; // TODO fix
|
||||||
const int3 s1 = gridIdx3d(node->grid, gridIdx(node->grid, s0) + num_vertices);
|
const int3 s1 = gridIdx3d(node->grid, gridIdx(node->grid, s0) + num_vertices);
|
||||||
|
|
||||||
const int3 da = max(s0, d0);
|
const int3 da = max(s0, d0);
|
||||||
@@ -347,7 +348,7 @@ acNodeLoadVertexBufferWithOffset(const Node node, const Stream stream, const AcM
|
|||||||
if (db.z >= da.z) {
|
if (db.z >= da.z) {
|
||||||
const int copy_cells = gridIdx(node->subgrid, db) - gridIdx(node->subgrid, da);
|
const int copy_cells = gridIdx(node->subgrid, db) - gridIdx(node->subgrid, da);
|
||||||
// DECOMPOSITION OFFSET HERE
|
// DECOMPOSITION OFFSET HERE
|
||||||
const int3 da_global = src + da - dst;
|
const int3 da_global = da; // src + da - dst; // TODO fix
|
||||||
const int3 da_local = (int3){da.x, da.y, da.z - i * node->grid.n.z / node->num_devices};
|
const int3 da_local = (int3){da.x, da.y, da.z - i * node->grid.n.z / node->num_devices};
|
||||||
// printf("\t\tcopy %d cells to local index ", copy_cells); printInt3(da_local);
|
// printf("\t\tcopy %d cells to local index ", copy_cells); printInt3(da_local);
|
||||||
// printf("\n");
|
// printf("\n");
|
||||||
@@ -402,7 +403,8 @@ acNodeStoreVertexBufferWithOffset(const Node node, const Stream stream,
|
|||||||
const int3 d0 = (int3){0, 0, i * node->subgrid.n.z}; // DECOMPOSITION OFFSET HERE
|
const int3 d0 = (int3){0, 0, i * node->subgrid.n.z}; // DECOMPOSITION OFFSET HERE
|
||||||
const int3 d1 = (int3){node->subgrid.m.x, node->subgrid.m.y, d0.z + node->subgrid.m.z};
|
const int3 d1 = (int3){node->subgrid.m.x, node->subgrid.m.y, d0.z + node->subgrid.m.z};
|
||||||
|
|
||||||
const int3 s0 = src;
|
const int3 s0 = src; // TODO fix
|
||||||
|
(void)dst; // TODO fix
|
||||||
const int3 s1 = gridIdx3d(node->grid, gridIdx(node->grid, s0) + num_vertices);
|
const int3 s1 = gridIdx3d(node->grid, gridIdx(node->grid, s0) + num_vertices);
|
||||||
|
|
||||||
const int3 da = max(s0, d0);
|
const int3 da = max(s0, d0);
|
||||||
@@ -411,7 +413,7 @@ acNodeStoreVertexBufferWithOffset(const Node node, const Stream stream,
|
|||||||
const int copy_cells = gridIdx(node->subgrid, db) - gridIdx(node->subgrid, da);
|
const int copy_cells = gridIdx(node->subgrid, db) - gridIdx(node->subgrid, da);
|
||||||
// DECOMPOSITION OFFSET HERE
|
// DECOMPOSITION OFFSET HERE
|
||||||
const int3 da_local = (int3){da.x, da.y, da.z - i * node->grid.n.z / node->num_devices};
|
const int3 da_local = (int3){da.x, da.y, da.z - i * node->grid.n.z / node->num_devices};
|
||||||
const int3 da_global = dst + da - src;
|
const int3 da_global = da; // dst + da - src; // TODO fix
|
||||||
acDeviceStoreVertexBufferWithOffset(node->devices[i], stream, vtxbuf_handle, da_local,
|
acDeviceStoreVertexBufferWithOffset(node->devices[i], stream, vtxbuf_handle, da_local,
|
||||||
da_global, copy_cells, host_mesh);
|
da_global, copy_cells, host_mesh);
|
||||||
}
|
}
|
||||||
@@ -483,12 +485,14 @@ acNodeIntegrate(const Node node, const AcReal dt)
|
|||||||
|
|
||||||
for (int isubstep = 0; isubstep < 3; ++isubstep) {
|
for (int isubstep = 0; isubstep < 3; ++isubstep) {
|
||||||
acNodePeriodicBoundconds(node, STREAM_DEFAULT);
|
acNodePeriodicBoundconds(node, STREAM_DEFAULT);
|
||||||
|
acNodeSynchronizeStream(node, STREAM_DEFAULT); // DEBUG
|
||||||
const int3 start = (int3){NGHOST, NGHOST, NGHOST};
|
const int3 start = (int3){NGHOST, NGHOST, NGHOST};
|
||||||
const int3 end = start + node->grid.n;
|
const int3 end = start + node->grid.n;
|
||||||
acNodeIntegrateSubstep(node, STREAM_DEFAULT, isubstep, start, end, dt);
|
acNodeIntegrateSubstep(node, STREAM_DEFAULT, isubstep, start, end, dt);
|
||||||
acNodeSwapBuffers(node);
|
acNodeSwapBuffers(node);
|
||||||
|
acNodeSynchronizeStream(node, STREAM_DEFAULT); // DEBUG
|
||||||
}
|
}
|
||||||
|
acNodePeriodicBoundconds(node, STREAM_DEFAULT); // DEBUG
|
||||||
acNodeSynchronizeStream(node, STREAM_ALL);
|
acNodeSynchronizeStream(node, STREAM_ALL);
|
||||||
return AC_SUCCESS;
|
return AC_SUCCESS;
|
||||||
}
|
}
|
||||||
@@ -555,7 +559,7 @@ acNodePeriodicBoundcondStep(const Node node, const Stream stream,
|
|||||||
|
|
||||||
// TODO NOTE GLOBAL BOUNDCONDS NOT DONE HERE IF MORE THAN 1 NODE
|
// TODO NOTE GLOBAL BOUNDCONDS NOT DONE HERE IF MORE THAN 1 NODE
|
||||||
global_boundcondstep(node, stream, vtxbuf_handle);
|
global_boundcondstep(node, stream, vtxbuf_handle);
|
||||||
WARNING("Global boundconds should not be done here with multinode");
|
// WARNING("Global boundconds should not be done here with multinode");
|
||||||
|
|
||||||
return AC_SUCCESS;
|
return AC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user