Added acGridLoadScalarUniform and acGridLoadVectorUniform functions for loading specific device constants with MPI

This commit is contained in:
jpekkila
2020-08-24 17:19:02 +03:00
parent 94794cee91
commit 8199ff914f
2 changed files with 48 additions and 0 deletions

View File

@@ -282,6 +282,13 @@ AcResult acGridQuit(void);
/** */ /** */
AcResult acGridSynchronizeStream(const Stream stream); AcResult acGridSynchronizeStream(const Stream stream);
/** */
AcResult acGridLoadScalarUniform(const Stream stream, const AcRealParam param, const AcReal value);
/** */
AcResult acGridLoadVectorUniform(const Stream stream, const AcReal3Param param,
const AcReal3 value);
/** */ /** */
AcResult acGridLoadMesh(const Stream stream, const AcMesh host_mesh); AcResult acGridLoadMesh(const Stream stream, const AcMesh host_mesh);

View File

@@ -1325,6 +1325,47 @@ acGridQuit(void)
return AC_SUCCESS; return AC_SUCCESS;
} }
AcResult
acGridLoadScalarUniform(const Stream stream, const AcRealParam param, const AcReal value)
{
ERRCHK(grid.initialized);
acGridSynchronizeStream(stream);
#if AC_DOUBLE_PRECISION == 1
MPI_Datatype datatype = MPI_DOUBLE;
#else
MPI_Datatype datatype = MPI_FLOAT;
#endif
const int root_proc = 0;
AcReal buffer = value;
MPI_Bcast(&buffer, 1, datatype, root_proc, MPI_COMM_WORLD);
acDeviceLoadScalarUniform(grid.device, stream, param, buffer);
return AC_SUCCESS;
}
/** */
AcResult
acGridLoadVectorUniform(const Stream stream, const AcReal3Param param, const AcReal3 value)
{
ERRCHK(grid.initialized);
acGridSynchronizeStream(stream);
#if AC_DOUBLE_PRECISION == 1
MPI_Datatype datatype = MPI_DOUBLE;
#else
MPI_Datatype datatype = MPI_FLOAT;
#endif
const int root_proc = 0;
AcReal3 buffer = value;
MPI_Bcast(&buffer, 3, datatype, root_proc, MPI_COMM_WORLD);
acDeviceLoadVectorUniform(grid.device, stream, param, buffer);
return AC_SUCCESS;
}
AcResult AcResult
acGridLoadMesh(const Stream stream, const AcMesh host_mesh) acGridLoadMesh(const Stream stream, const AcMesh host_mesh)
{ {