FLOW ALGEBRA
High Performance Computing Ontology
Kireth Semantic Research Archive
PAGE:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/high-performance-computing/high-performance-computing-ontology-3.html
AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)
FLOW "HighPerformanceComputingOntology" v4.0
# ---------- DOMAIN ----------
DOMAIN := ComputingOntology
SUBDOMAIN := HighPerformanceComputing
ONTOLOGY := HighPerformanceComputingOntology
# ---------- PRIMARY ENTITY ----------
ENTITY HighPerformanceComputing {
definition:
"A computing discipline concerned with architectures, algorithms,
parallel execution methods and resource-management techniques used
to perform computationally intensive workloads at very high speed,
scale or throughput.";
objectives: [
Performance,
Parallelism,
Scalability,
Throughput,
Efficiency,
LargeScaleComputation
];
}
# ---------- CORE ENTITIES ----------
HPCSystem := {
ComputeNode,
Processor,
Accelerator,
Memory,
Interconnect,
Storage,
Scheduler
};
HPCResource := {
CPU,
GPU,
Accelerator,
Memory,
NetworkBandwidth,
StorageBandwidth
};
HPCWorkload := {
Job,
ParallelApplication,
Simulation,
NumericalModel,
ScientificApplication,
DataIntensiveApplication
};
ExecutionModel := {
SerialExecution,
SharedMemoryParallelism,
DistributedMemoryParallelism,
HybridParallelism,
AcceleratorParallelism
};
# ---------- FUNDAMENTAL RELATIONSHIPS ----------
HPCSystem CONSISTS_OF ComputeNode;
ComputeNode CONTAINS Processor;
ComputeNode MAY_CONTAIN Accelerator;
ComputeNode HAS Memory;
ComputeNode CONNECTS_THROUGH Interconnect;
HPCSystem USES Storage;
Scheduler ALLOCATES HPCResource TO HPCWorkload;
HPCWorkload EXECUTES_ON HPCSystem;
# ---------- PARALLEL DECOMPOSITION ----------
Problem ->
AnalyseDependencies ->
Decompose ->
ParallelTasks
-> MapToResources
-> Execute
-> Synchronise
-> AggregateResult;
Decomposition := {
DomainDecomposition,
FunctionalDecomposition,
DataDecomposition,
TaskDecomposition
};
IF TasksIndependent
THEN AvailableParallelism := INCREASE;
# ---------- PARALLELISM ----------
Parallelism := {
InstructionLevelParallelism,
DataParallelism,
TaskParallelism,
ThreadParallelism,
ProcessParallelism
};
DataParallelism APPLIES SameOrRelatedOperation TO DataPartitions;
TaskParallelism EXECUTES DistinctTasks Concurrently;
# ---------- SHARED MEMORY ----------
SharedMemoryModel :=
MultipleThreads
-> SharedAddressSpace;
Thread READS_OR_WRITES SharedMemory;
Synchronisation MAY_BE_REQUIRED_FOR ConflictingAccess;
SharedMemoryControl := {
Lock,
Barrier,
AtomicOperation,
CriticalSection
};
# ---------- DISTRIBUTED MEMORY ----------
DistributedMemoryModel :=
MultipleProcesses
+ SeparateMemorySpaces
+ MessagePassing;
Process SENDS Message;
Process RECEIVES Message;
MessagePassing COORDINATES DistributedProcesses;
# ---------- HYBRID MODEL ----------
HybridParallelism :=
DistributedMemoryAcrossNodes
+ SharedMemoryWithinNode;
HybridExecution MAY_USE {
InterNodeMessagePassing,
IntraNodeThreading,
AcceleratorExecution
};
# ---------- ACCELERATED COMPUTING ----------
Accelerator MAY_BE {
GPU,
VectorProcessor,
SpecialisedProcessor
};
AcceleratorExecution :=
IdentifySuitableKernel
-> TransferOrMapData
-> ExecuteParallelKernel
-> Synchronise
-> RetrieveOrUseResult;
IF WorkloadMatchesAcceleratorArchitecture
THEN AccelerationPotential := INCREASE;
# ---------- COMPUTE NODE ----------
ComputeNode :=
{
ProcessorSet,
Memory,
AcceleratorSet,
NetworkInterface,
LocalStorage
};
NodeState := {
Available,
Allocated,
Busy,
Draining,
Failed
};
# ---------- INTERCONNECT ----------
Interconnect :=
HighSpeedCommunicationFabric;
InterconnectProperty := {
Bandwidth,
Latency,
Topology,
Reliability
};
CommunicationCost :=
f(
MessageCount,
MessageSize,
Latency,
Bandwidth
);
IF CommunicationCost INCREASES
THEN ParallelEfficiency MAY_DECREASE;
# ---------- MEMORY HIERARCHY ----------
MemoryHierarchy := {
Register,
Cache,
MainMemory,
AcceleratorMemory,
LocalStorage,
ParallelStorage
};
DataLocality :=
ProximityOfDataToExecutingCompute;
IF DataLocalityImproves
THEN MemoryTrafficCost MAY_DECREASE;
# ---------- HPC STORAGE ----------
HPCStorage MAY_INCLUDE {
ParallelFileSystem,
DistributedFileSystem,
BurstBuffer,
NodeLocalStorage
};
ParallelIO :=
MultipleProcesses
-> ConcurrentDataAccess
-> HPCStorage;
IOPerformance :=
f(
DataVolume,
AccessPattern,
Concurrency,
StorageBandwidth,
MetadataCost
);
# ---------- JOB ----------
HPCJob :=
{
JobIdentifier,
Executable,
ResourceRequest,
InputData,
RuntimeLimit,
Priority,
JobState
};
JobState := {
Submitted,
Queued,
Scheduled,
Running,
Completed,
Failed,
Cancelled
};
HPCJob ->
Submit
-> Queue
-> Schedule
-> Allocate
-> Execute
-> CompleteOrFail;
# ---------- SCHEDULER ----------
HPCScheduler :=
SchedulingPolicy
+ ResourceManager;
ResourceRequest MAY_INCLUDE {
Nodes,
CPUs,
GPUs,
Memory,
Runtime
};
Scheduler MATCHES ResourceRequest TO AvailableResources;
IF ResourcesUnavailable
THEN JobState := Queued;
# ---------- PERFORMANCE ----------
ExecutionTime :=
EndTime - StartTime;
Throughput :=
CompletedWork / Time;
Speedup(P) :=
SerialExecutionTime
/ ParallelExecutionTime(P);
ParallelEfficiency(P) :=
Speedup(P) / P;
# ---------- STRONG SCALING ----------
StrongScaling :=
FixedProblemSize
+ IncreasingResourceCount;
IF ResourceCountIncreases
AND RuntimeDecreases
THEN StrongScalingEvidence := INCREASE;
# ---------- WEAK SCALING ----------
WeakScaling :=
ProblemSizeIncreasesWithResourceCount;
WeakScalingEfficiency :=
BaselineRuntime / ScaledRuntime
WHEN WorkPerResourceApproximatelyConstant;
# ---------- AMDAHL MODEL ----------
SerialFraction := S;
ParallelFraction := 1 - S;
AmdahlSpeedup(P) :=
1 / (S + ((1-S)/P));
IF SerialFraction > 0
THEN StrongScalingHasFiniteLimit := true;
# ---------- LOAD BALANCE ----------
LoadBalance :=
SimilarUsefulWorkAcrossParallelResources;
LoadImbalance :=
VariationInWorkOrWaitingAcrossResources;
IF LoadImbalanceHigh
THEN ParallelEfficiency := DECREASE;
DynamicLoadBalancing MAY_REDISTRIBUTE Work;
# ---------- SYNCHRONISATION ----------
Synchronisation :=
CoordinateParallelExecutionAtRequiredPoints;
SynchronisationCost :=
WaitingTime + CoordinationOverhead;
IF SynchronisationFrequencyHigh
THEN ScalingOverhead MAY_INCREASE;
# ---------- COMMUNICATION ----------
CommunicationPattern := {
PointToPoint,
Broadcast,
Scatter,
Gather,
Reduce,
AllReduce,
AllToAll
};
CommunicationPattern AFFECTS {
NetworkTraffic,
LatencySensitivity,
Scalability
};
# ---------- PERFORMANCE BOTTLENECK ----------
PerformanceBottleneck MAY_BE {
ComputeBound,
MemoryBound,
CommunicationBound,
IOBound,
SynchronisationBound
};
PerformanceAnalysis ->
Measure
-> IdentifyBottleneck
-> Optimise
-> ReMeasure;
# ---------- SCIENTIFIC COMPUTING ----------
ScientificWorkload MAY_INCLUDE {
NumericalSimulation,
PhysicalModelling,
ClimateSimulation,
ComputationalFluidDynamics,
MolecularSimulation,
EngineeringAnalysis,
ScientificDataProcessing
};
ScientificProblem ->
MathematicalModel
-> NumericalMethod
-> ParallelAlgorithm
-> HPCExecution
-> Result;
# ---------- CHECKPOINTING ----------
Checkpoint :=
SavedExecutionState;
Checkpointing MAY_SUPPORT LongRunningJobRecovery;
IF JobFails
AND ValidCheckpointExists
THEN Job MAY_RESTART_FROM Checkpoint;
# ---------- FAILURE ----------
HPCFailure := {
ProcessFailure,
NodeFailure,
AcceleratorFailure,
InterconnectFailure,
StorageFailure,
JobFailure
};
FailureProbability MAY_INCREASE_WITH SystemScale;
FaultTolerance MAY_USE {
CheckpointRestart,
Redundancy,
TaskRecovery,
JobResubmission
};
# ---------- ENERGY ----------
EnergyConsumption :=
f(
Power,
ExecutionTime
);
EnergyEfficiency :=
UsefulComputation / EnergyConsumption;
PerformancePerWatt :=
ComputationalPerformance / Power;
# ---------- HPC ARCHITECTURE ----------
HPCArchitecture := {
Supercomputer,
HPCCluster,
GPUCluster,
MassivelyParallelSystem,
HeterogeneousHPCSystem
};
Supercomputer IS_A HPCSystem;
HPCCluster IS_A HPCSystem;
HeterogeneousHPCSystem CONTAINS MultipleComputeArchitectures;
# ---------- SEMANTIC REASONING ----------
IF WorkloadHasHighComputationalDemand
AND WorkloadExposesParallelism
THEN HPCSuitability := HIGH;
IF CommunicationTime > ComputationTime
THEN CommunicationBottleneck := likely;
IF MemoryBandwidthSaturated
THEN Workload MAY_BE MemoryBound;
IF AcceleratorUtilisationLow
THEN AcceleratorEfficiency := review;
IF SerialFractionIncreases
THEN MaximumSpeedup := decrease;
IF ResourceCountIncreasesWithoutUsefulSpeedup
THEN ScalingEfficiency := decrease;
IF LoadBalanced
AND CommunicationOverheadLow
THEN ParallelEfficiencyPotential := increase;
# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
"high performance computing" ~= "HPC";
"supercomputing" ~= "high performance computing" WHEN context == large_scale_computation;
"parallel application" ~= "parallel program";
"compute node" ~= "HPC node" WHEN context == high_performance_computing;
"parallel efficiency" ~= "parallel scaling efficiency";
"strong scaling" ~= "fixed-problem scaling";
"weak scaling" ~= "scaled-problem scaling";
"accelerated computing" ~= "hardware-accelerated computing";
}
# ---------- QUERY FLOW ----------
QUERY(q) ->
NORMALISE(q) ->
IDENTIFY_HPC_SYSTEM(q) ->
IDENTIFY_WORKLOAD(q) ->
IDENTIFY_EXECUTION_MODEL(q) ->
IDENTIFY_RESOURCES(q) ->
IDENTIFY_COMMUNICATION(q) ->
IDENTIFY_MEMORY_MODEL(q) ->
IDENTIFY_PERFORMANCE_METRICS(q) ->
IDENTIFY_SCALING(q) ->
MAP_TO_ONTOLOGY(q) ->
APPLY_REASONING(q) ->
SCORE_CONFIDENCE(q) ->
RETURN_RELEVANT_KNOWLEDGE;
# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
weighted_mean(
source_reliability,
computational_consistency,
performance_consistency,
semantic_consistency,
evidence_strength,
contextual_relevance
);
CONFIDENCE >= 0.90 => HIGH;
CONFIDENCE >= 0.70 AND < 0.90 => MODERATE;
CONFIDENCE < 0.70 => REVIEW;
# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
primary_entity: HighPerformanceComputing;
ontology: HighPerformanceComputingOntology;
parse_entities: true;
parse_relationships: true;
preserve_relationship_direction: true;
resolve_semantic_equivalence: true;
execute_reasoning_rules: true;
apply_confidence_weighting: true;
preserve_provenance: true;
}
# ---------- UPDATE MODEL ----------
UPDATE_MODEL {
new_resource:
validate
-> classify
-> identify_performance_properties
-> relate
-> integrate;
new_workload:
classify
-> identify_parallelism
-> identify_resource_requirements
-> identify_communication_pattern
-> integrate;
new_execution_model:
validate
-> identify_memory_model
-> identify_process_thread_relationships
-> identify_synchronisation
-> integrate;
performance_revision:
update_measurements
-> identify_bottleneck
-> recompute_speedup
-> recompute_efficiency
-> regenerate_flow_hash;
conflict:
preserve_provenance
-> compare_evidence
-> adjust_confidence
-> flag_review;
}
# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
DOMAIN
+ SUBDOMAIN
+ ONTOLOGY
+ HPCSystem
+ HPCResource
+ HPCWorkload
+ ExecutionModel
+ Parallelism
+ HPCArchitecture
+ RELATIONSHIPS
+ SEMANTIC_REASONING
+ SEMANTIC_EQUIVALENCE
+ UPDATE_MODEL;
FLOW_HASH :=
HASH(FLOW_HASH_INPUT);
# ---------- TERMINAL ----------
HighPerformanceComputingOntology
-> IdentifyComputationalProblem
-> DetermineParallelStructure
-> SelectExecutionModel
-> SelectHPCArchitecture
-> AllocateResources
-> MapParallelWork
-> ExecuteComputation
-> CommunicateAndSynchronise
-> MeasurePerformance
-> AnalyseScaling
-> IdentifyBottlenecks
-> OptimiseResourceUse
-> ProduceComputationalResult;
END FLOW
Download Code
Copy to Clipboard