MCPcopy Create free account
hub / github.com/SeisSol/SeisSol / computeLocalIntegrationDevice

Method computeLocalIntegrationDevice

src/Solver/time_stepping/TimeCluster.cpp:442–538  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

440}
441#ifdef ACL_DEVICE
442void seissol::time_stepping::TimeCluster::computeLocalIntegrationDevice(
443 seissol::initializer::Layer& i_layerData,
444 bool resetBuffers) {
445
446 SCOREP_USER_REGION( "computeLocalIntegration", SCOREP_USER_REGION_TYPE_FUNCTION )
447 device.api->putProfilingMark("computeLocalIntegration", device::ProfilingColors::Yellow);
448
449 m_loopStatistics->begin(m_regionComputeLocalIntegration);
450
451 auto& dataTable = i_layerData.getConditionalTable<inner_keys::Wp>();
452 auto& materialTable = i_layerData.getConditionalTable<inner_keys::Material>();
453 auto& indicesTable = i_layerData.getConditionalTable<inner_keys::Indices>();
454
455 kernels::LocalData::Loader loader;
456 loader.load(*m_lts, i_layerData);
457 kernels::LocalTmp tmp(seissolInstance.getGravitationSetup().acceleration);
458
459 const double timeStepWidth = timeStepSize();
460
461 ComputeGraphType graphType{ComputeGraphType::LocalIntegral};
462 auto computeGraphKey = initializer::GraphKey(graphType, timeStepWidth, true);
463 streamRuntime.runGraph(computeGraphKey, i_layerData, [&](seissol::parallel::runtime::StreamRuntime& streamRuntime) {
464 m_timeKernel.computeBatchedAder(timeStepWidth,
465 tmp,
466 dataTable,
467 materialTable,
468 true,
469 streamRuntime);
470
471 m_localKernel.computeBatchedIntegral(dataTable,
472 materialTable,
473 indicesTable,
474 loader,
475 tmp,
476 timeStepWidth,
477 streamRuntime);
478 });
479
480 m_localKernel.evaluateBatchedTimeDependentBc(dataTable,
481 indicesTable,
482 loader,
483 i_layerData,
484 *m_lts,
485 ct.correctionTime,
486 timeStepWidth,
487 streamRuntime);
488
489 graphType = resetBuffers ? ComputeGraphType::AccumulatedVelocities : ComputeGraphType::StreamedVelocities;
490 computeGraphKey = initializer::GraphKey(graphType);
491
492 streamRuntime.runGraph(computeGraphKey, i_layerData, [&](seissol::parallel::runtime::StreamRuntime& streamRuntime) {
493 for (unsigned face = 0; face < 4; ++face) {
494 ConditionalKey key(*KernelNames::FaceDisplacements, *ComputationKind::None, face);
495 if (dataTable.find(key) != dataTable.end()) {
496 auto& entry = dataTable[key];
497 // NOTE: integrated velocities have been computed implicitly, i.e
498 // it is 6th, 7the and 8th columns of integrated dofs
499

Callers

nothing calls this directly

Calls 15

GraphKeyClass · 0.85
ConditionalKeyClass · 0.85
loadMethod · 0.80
runGraphMethod · 0.80
getDeviceDataPtrMethod · 0.80
streamMethod · 0.80
beginMethod · 0.45
computeBatchedAderMethod · 0.45
endMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected