Lines Matching refs:fem
7 static PetscErrorCode PetscFEDestroy_OpenCL(PetscFE fem) in PetscFEDestroy_OpenCL() argument
9 PetscFE_OpenCL *ocl = (PetscFE_OpenCL *)fem->data; in PetscFEDestroy_OpenCL()
46 static PetscErrorCode PetscFEOpenCLGenerateIntegrationCode(PetscFE fem, char **string_buffer, Petsc… in PetscFEOpenCLGenerateIntegrationCode() argument
48 PetscFE_OpenCL *ocl = (PetscFE_OpenCL *)fem->data; in PetscFEOpenCLGenerateIntegrationCode()
67 PetscCall(PetscFEGetSpatialDimension(fem, &dim)); in PetscFEOpenCLGenerateIntegrationCode()
68 PetscCall(PetscFEGetDimension(fem, &N_b)); in PetscFEOpenCLGenerateIntegrationCode()
69 PetscCall(PetscFEGetNumComponents(fem, &N_c)); in PetscFEOpenCLGenerateIntegrationCode()
70 PetscCall(PetscFEGetQuadrature(fem, &q)); in PetscFEOpenCLGenerateIntegrationCode()
109 PetscCall(PetscFEGetCellTabulation(fem, 1, &T)); in PetscFEOpenCLGenerateIntegrationCode()
438 static PetscErrorCode PetscFEOpenCLGetIntegrationKernel(PetscFE fem, PetscBool useAux, cl_program *… in PetscFEOpenCLGetIntegrationKernel() argument
440 PetscFE_OpenCL *ocl = (PetscFE_OpenCL *)fem->data; in PetscFEOpenCLGetIntegrationKernel()
449 PetscCall(PetscFEGetSpatialDimension(fem, &dim)); in PetscFEOpenCLGetIntegrationKernel()
451 PetscCall(PetscFEGetTileSizes(fem, NULL, &N_bl, NULL, NULL)); in PetscFEOpenCLGetIntegrationKernel()
452 PetscCall(PetscFEOpenCLGenerateIntegrationCode(fem, &buffer, 8192, useAux, N_bl)); in PetscFEOpenCLGetIntegrationKernel()
453 …PetscCall(PetscOptionsHasName(((PetscObject)fem)->options, ((PetscObject)fem)->prefix, "-petscfe_o… in PetscFEOpenCLGetIntegrationKernel()
454 …if (flg) PetscCall(PetscPrintf(PetscObjectComm((PetscObject)fem), "OpenCL FE Integration Kernel:\n… in PetscFEOpenCLGetIntegrationKernel()
468 static PetscErrorCode PetscFEOpenCLCalculateGrid(PetscFE fem, PetscInt N, PetscInt blockSize, size_… in PetscFEOpenCLCalculateGrid() argument
484 static PetscErrorCode PetscFEOpenCLLogResidual(PetscFE fem, PetscLogDouble time, PetscLogDouble flo… in PetscFEOpenCLLogResidual() argument
492 PetscFE_OpenCL *ocl = (PetscFE_OpenCL *)fem->data; in PetscFEOpenCLLogResidual()
505 PetscFE fem; in PetscFEIntegrateResidual_OpenCL() local
545 PetscCall(PetscDSGetDiscretization(prob, field, (PetscObject *)&fem)); in PetscFEIntegrateResidual_OpenCL()
546 ocl = (PetscFE_OpenCL *)fem->data; in PetscFEIntegrateResidual_OpenCL()
548 PetscCall(PetscFEOpenCLLogResidual(fem, 0.0, 0.0)); in PetscFEIntegrateResidual_OpenCL()
551 PetscCall(PetscFEGetSpatialDimension(fem, &dim)); in PetscFEIntegrateResidual_OpenCL()
552 PetscCall(PetscFEGetQuadrature(fem, &q)); in PetscFEIntegrateResidual_OpenCL()
555 PetscCall(PetscFEGetDimension(fem, &N_b)); in PetscFEIntegrateResidual_OpenCL()
556 PetscCall(PetscFEGetNumComponents(fem, &N_comp)); in PetscFEIntegrateResidual_OpenCL()
558 PetscCall(PetscFEGetTileSizes(fem, NULL, &N_bl, &N_bc, &N_cb)); in PetscFEIntegrateResidual_OpenCL()
568 PetscCall(PetscFEOpenCLCalculateGrid(fem, Ne, N_cb * N_bc, &x, &y, &z)); in PetscFEIntegrateResidual_OpenCL()
575 …PetscCall(PetscInfo(fem, "GPU layout grid(%zu,%zu,%zu) block(%zu,%zu,%zu) with %d batches\n", x, y… in PetscFEIntegrateResidual_OpenCL()
576 PetscCall(PetscInfo(fem, " N_t: %d, N_cb: %d\n", N_t, N_cb)); in PetscFEIntegrateResidual_OpenCL()
592 PetscCall(PetscFEOpenCLGetIntegrationKernel(fem, useAux, &ocl_prog, &ocl_kernel)); in PetscFEIntegrateResidual_OpenCL()
724 PetscCall(PetscFEOpenCLLogResidual(fem, (ns_end - ns_start) * 1.0e-9, numFlops)); in PetscFEIntegrateResidual_OpenCL()
739 static PetscErrorCode PetscFEInitialize_OpenCL(PetscFE fem) in PetscFEInitialize_OpenCL() argument
742 fem->ops->setfromoptions = NULL; in PetscFEInitialize_OpenCL()
743 fem->ops->setup = PetscFESetUp_Basic; in PetscFEInitialize_OpenCL()
744 fem->ops->view = NULL; in PetscFEInitialize_OpenCL()
745 fem->ops->destroy = PetscFEDestroy_OpenCL; in PetscFEInitialize_OpenCL()
746 fem->ops->getdimension = PetscFEGetDimension_Basic; in PetscFEInitialize_OpenCL()
747 fem->ops->computetabulation = PetscFEComputeTabulation_Basic; in PetscFEInitialize_OpenCL()
748 fem->ops->integrateresidual = PetscFEIntegrateResidual_OpenCL; in PetscFEInitialize_OpenCL()
749 fem->ops->integratebdresidual = NULL /* PetscFEIntegrateBdResidual_OpenCL */; in PetscFEInitialize_OpenCL()
750 fem->ops->integratejacobianaction = NULL /* PetscFEIntegrateJacobianAction_OpenCL */; in PetscFEInitialize_OpenCL()
751 fem->ops->integratejacobian = PetscFEIntegrateJacobian_Basic; in PetscFEInitialize_OpenCL()
763 PETSC_EXTERN PetscErrorCode PetscFECreate_OpenCL(PetscFE fem) in PetscFECreate_OpenCL() argument
773 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFECreate_OpenCL()
775 fem->data = ocl; in PetscFECreate_OpenCL()
779 …PetscCheck(num_platforms, PetscObjectComm((PetscObject)fem), PETSC_ERR_SUP, "No OpenCL platform fo… in PetscFECreate_OpenCL()
783 …PetscCheck(num_devices, PetscObjectComm((PetscObject)fem), PETSC_ERR_SUP, "No OpenCL device found.… in PetscFECreate_OpenCL()
797 PetscCall(PetscFEInitialize_OpenCL(fem)); in PetscFECreate_OpenCL()
812 PetscErrorCode PetscFEOpenCLSetRealType(PetscFE fem, PetscDataType realType) in PetscFEOpenCLSetRealType() argument
814 PetscFE_OpenCL *ocl = (PetscFE_OpenCL *)fem->data; in PetscFEOpenCLSetRealType()
817 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEOpenCLSetRealType()
835 PetscErrorCode PetscFEOpenCLGetRealType(PetscFE fem, PetscDataType *realType) in PetscFEOpenCLGetRealType() argument
837 PetscFE_OpenCL *ocl = (PetscFE_OpenCL *)fem->data; in PetscFEOpenCLGetRealType()
840 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEOpenCLGetRealType()