Skip to main content

Parallel Computing Ontology

High Performance Computing
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 06 October 2026
Audio Overview
FLOW ALGEBRA
Parallel Computing Ontology
Kireth Semantic Research Archive

PAGE:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/high-performance-computing/parallel-computing-ontology-2.html

AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)

FLOW "ParallelComputingOntology" v4.0

# ---------- DOMAIN ----------
DOMAIN := ComputingOntology
SUBDOMAIN := HighPerformanceComputing
ONTOLOGY := ParallelComputingOntology

# ---------- PRIMARY ENTITY ----------
ENTITY ParallelComputing {
    definition:
        "A computational model in which a problem is decomposed into multiple
         operations or tasks that can execute concurrently across multiple
         processing elements to reduce execution time, increase throughput or
         enable larger computations.";

    objectives: [
        Concurrency,
        Speedup,
        Scalability,
        Throughput,
        EfficientResourceUse,
        LargeScaleComputation
    ];
}

# ---------- CORE ENTITIES ----------
ParallelEntity := {
    Process,
    Thread,
    Task,
    ProcessingElement,
    ComputeNode,
    Processor,
    Core,
    Accelerator
};

ParallelismType := {
    BitLevelParallelism,
    InstructionLevelParallelism,
    DataParallelism,
    TaskParallelism,
    ThreadParallelism,
    ProcessParallelism
};

MemoryModel := {
    SharedMemory,
    DistributedMemory,
    DistributedSharedMemory,
    HybridMemory
};

ExecutionProperty := {
    Concurrency,
    Synchronisation,
    Communication,
    Dependency,
    LoadBalance
};

# ---------- FUNDAMENTAL RELATIONSHIPS ----------
ParallelProgram CONSISTS_OF ParallelTask;
ParallelTask EXECUTES_ON ProcessingElement;
ProcessingElement MAY_BE ProcessorCore;
ParallelTask MAY_COMMUNICATE_WITH ParallelTask;
ParallelTask MAY_DEPEND_ON ParallelTask;
ParallelProgram USES MemoryModel;
ParallelExecution REQUIRES CoordinationWhereDependenciesExist;

# ---------- PROBLEM DECOMPOSITION ----------
ComputationalProblem ->
    AnalyseDependencies ->
    Decompose ->
    ParallelWorkUnits ->
    MapToProcessingElements ->
    Execute ->
    Synchronise ->
    CombineResults;

DecompositionType := {
    DataDecomposition,
    TaskDecomposition,
    DomainDecomposition,
    FunctionalDecomposition
};

IF WorkUnitsIndependent
THEN ParallelismPotential := HIGH;

# ---------- DATA PARALLELISM ----------
DataParallelism :=
    Partition(DataSet)
    -> ApplySimilarOperationToPartitions
    -> CombineResults;

DataPartition EXECUTED_BY ProcessingElement;

IF DataPartitionsBalanced
THEN LoadBalancePotential := HIGH;

# ---------- TASK PARALLELISM ----------
TaskParallelism :=
    DistinctTasks
    -> ExecuteConcurrently;

Task MAY_HAVE InputDependency;
Task MAY_PRODUCE OutputDependency;

IF TaskA OUTPUT_REQUIRED_BY TaskB
THEN TaskA PRECEDES TaskB;

# ---------- SHARED MEMORY ----------
SharedMemory :=
    MultipleExecutionUnits
    ACCESS CommonAddressSpace;

Thread MAY_READ SharedVariable;
Thread MAY_WRITE SharedVariable;

ConcurrentWrite MAY_REQUIRE Synchronisation;

SharedMemorySynchronisation := {
    Lock,
    Mutex,
    Semaphore,
    Barrier,
    AtomicOperation,
    CriticalSection
};

# ---------- DISTRIBUTED MEMORY ----------
DistributedMemory :=
    MultipleProcesses
    WITH SeparateAddressSpaces;

Process SENDS Message;
Process RECEIVES Message;

MessagePassing ENABLES DataExchangeBetweenProcesses;

DistributedMemoryCommunication MAY_USE {
    PointToPoint,
    CollectiveCommunication
};

# ---------- HYBRID PARALLELISM ----------
HybridParallelism :=
    InterNodeProcessParallelism
    + IntraNodeThreadParallelism;

HybridProgram MAY_USE {
    MessagePassing,
    SharedMemoryThreads,
    AcceleratorKernels
};

# ---------- THREAD ----------
Thread :=
    ExecutionSequenceWithinProcess;

Process MAY_CONTAIN MultipleThreads;

ThreadsWithinProcess MAY_SHARE Memory;

ThreadState := {
    Ready,
    Running,
    Waiting,
    Completed
};

# ---------- PROCESS ----------
Process :=
    IndependentExecutionContext;

Process HAS {
    AddressSpace,
    State,
    Resources
};

Processes MAY_COMMUNICATE Via MessagePassingOrSharedMechanism;

# ---------- SYNCHRONISATION ----------
Synchronisation :=
    CoordinateExecutionToPreserveCorrectness;

SynchronisationPoint MAY_FORCE ParticipantsToWait;

Barrier :=
    WaitUntilRequiredParticipantsReachPoint;

Lock :=
    ExclusiveOrControlledAccessToSharedResource;

ExcessiveSynchronisation MAY_REDUCE ParallelPerformance;

# ---------- RACE CONDITION ----------
RaceCondition :=
    OutcomeDependsOnUncontrolledRelativeExecutionOrder;

IF MultipleExecutionUnitsAccessSharedState
AND AtLeastOneWrites
AND NoCorrectSynchronisation
THEN RaceConditionRisk := INCREASE;

# ---------- DEADLOCK ----------
Deadlock :=
    SET_OF(ExecutionUnits)
    WaitingIndefinitelyForMutuallyHeldResources;

DeadlockCondition MAY_INCLUDE {
    MutualExclusion,
    HoldAndWait,
    NoPreemption,
    CircularWait
};

Deadlock PREVENTS ForwardProgress;

# ---------- COMMUNICATION ----------
CommunicationPattern := {
    PointToPoint,
    Broadcast,
    Scatter,
    Gather,
    Reduce,
    AllReduce,
    AllToAll
};

CommunicationCost :=
    f(
        MessageCount,
        MessageSize,
        Latency,
        Bandwidth
    );

IF CommunicationCostHigh
THEN ParallelEfficiency := DECREASE;

# ---------- LOAD BALANCING ----------
LoadBalance :=
    SimilarUsefulWorkAcrossProcessingElements;

StaticLoadBalancing ASSIGNS WorkBeforeExecution;
DynamicLoadBalancing REDISTRIBUTES WorkDuringExecution;

LoadImbalance :=
    VariationInWorkCompletionAcrossResources;

IF LoadImbalanceHigh
THEN WaitingTime := INCREASE;

# ---------- GRANULARITY ----------
TaskGranularity :=
    AmountOfComputationPerParallelWorkUnit;

FineGrainedParallelism :=
    ManySmallWorkUnits;

CoarseGrainedParallelism :=
    FewerLargerWorkUnits;

IF GranularityTooFine
THEN CoordinationOverhead MAY_DOMINATE;

# ---------- SPEEDUP ----------
Speedup(P) :=
    SerialExecutionTime
    / ParallelExecutionTime(P);

Efficiency(P) :=
    Speedup(P) / P;

IdealSpeedup(P) := P;

IF Speedup(P) < P
THEN ParallelOverhead EXISTS;

# ---------- PARALLEL OVERHEAD ----------
ParallelOverhead := {
    CommunicationTime,
    SynchronisationTime,
    SchedulingTime,
    IdleTime,
    DataMovementTime
};

ParallelExecutionTime :=
    UsefulComputeTime
    + ParallelOverhead;

# ---------- AMDAHL'S LAW ----------
SerialFraction := S;
ParallelFraction := 1 - S;

AmdahlSpeedup(P) :=
    1 / (S + ((1-S)/P));

IF SerialFraction > 0
THEN MaximumSpeedup IS_BOUNDED;

# ---------- GUSTAFSON RELATIONSHIP ----------
ScaledSpeedup(P) :=
    P - S * (P - 1);

GustafsonModel EMPHASISES ScalingProblemSizeWithResources;

# ---------- STRONG SCALING ----------
StrongScaling :=
    FixedProblemSize
    + IncreasingProcessingElements;

IF ProcessingElementsIncrease
AND RuntimeDecreases
THEN StrongScalingEvidence := INCREASE;

# ---------- WEAK SCALING ----------
WeakScaling :=
    IncreaseProblemSizeProportionallyToProcessingElements;

WeakScalingGoal :=
    MaintainApproximatelyConstantRuntimePerScaledWorkload;

# ---------- PARALLEL ARCHITECTURE ----------
ParallelArchitecture := {
    MulticoreProcessor,
    MultiprocessorSystem,
    GPU,
    ComputeCluster,
    MassivelyParallelProcessor,
    Supercomputer
};

ParallelArchitecture PROVIDES ProcessingElement;

# ---------- ACCELERATOR PARALLELISM ----------
AcceleratorKernel :=
    HighlyParallelFunctionExecutedOnAccelerator;

Host ->
    PrepareData
    -> LaunchKernel
    -> AcceleratorParallelExecution
    -> Synchronise
    -> ConsumeResult;

IF DataTransferCostHighRelativeToCompute
THEN AcceleratorBenefit MAY_DECREASE;

# ---------- DEPENDENCY GRAPH ----------
TaskGraph :=
    DirectedGraph(Tasks, Dependencies);

DependencyEdge :=
    TaskA -> TaskB;

ReadyTask :=
    Task WHERE AllDependenciesSatisfied;

Scheduler MAY_EXECUTE ReadyTasksConcurrently;

# ---------- PARALLEL CORRECTNESS ----------
ParallelCorrectness REQUIRES {
    DependencyPreservation,
    SafeSharedStateAccess,
    CorrectCommunication,
    CorrectSynchronisation
};

Performance DOES_NOT_REPLACE Correctness;

# ---------- FAILURE ----------
ParallelFailure := {
    TaskFailure,
    ProcessFailure,
    ThreadFailure,
    NodeFailure,
    CommunicationFailure
};

Failure MAY_INTERRUPT ParallelComputation;

Recovery MAY_REQUIRE {
    Restart,
    Checkpoint,
    TaskReexecution
};

# ---------- SEMANTIC REASONING ----------
IF ProblemCanBeDecomposedIntoIndependentWorkUnits
THEN ParallelismPotential := increase;

IF SerialFractionHigh
THEN MaximumSpeedup := limited;

IF CommunicationTimeIncreasesFasterThanUsefulCompute
THEN Scalability := decrease;

IF SharedStateWrittenConcurrentlyWithoutSynchronisation
THEN RaceConditionRisk := high;

IF ProcessingElementsIdleWhileOthersWork
THEN LoadImbalance := likely;

IF WorkPerTaskTooSmall
THEN ParallelOverheadRatio := increase;

IF SpeedupNearProcessingElementCount
THEN ParallelEfficiency := high;

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
    "parallel computing" ~= "parallel computation";
    "parallel processing" ~= "parallel computing" WHEN context == concurrent_computation;
    "data parallelism" ~= "data-parallel execution";
    "task parallelism" ~= "task-parallel execution";
    "shared memory" ~= "shared address space" WHEN context == parallel_computing;
    "distributed memory" ~= "separate process memory" WHEN context == parallel_computing;
    "parallel speedup" ~= "speedup";
    "parallel efficiency" ~= "processor efficiency" WHEN context == scaling;
}

# ---------- QUERY FLOW ----------
QUERY(q) ->
    NORMALISE(q) ->
    IDENTIFY_PARALLEL_ENTITIES(q) ->
    IDENTIFY_PARALLELISM_TYPE(q) ->
    IDENTIFY_MEMORY_MODEL(q) ->
    IDENTIFY_DEPENDENCIES(q) ->
    IDENTIFY_COMMUNICATION(q) ->
    IDENTIFY_SYNCHRONISATION(q) ->
    IDENTIFY_PERFORMANCE(q) ->
    MAP_TO_ONTOLOGY(q) ->
    APPLY_REASONING(q) ->
    SCORE_CONFIDENCE(q) ->
    RETURN_RELEVANT_KNOWLEDGE;

# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
    weighted_mean(
        source_reliability,
        computational_consistency,
        parallel_model_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: ParallelComputing;
    ontology: ParallelComputingOntology;
    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_parallel_entity:
        validate
        -> classify
        -> identify_execution_role
        -> relate
        -> integrate;

    new_parallel_algorithm:
        identify_decomposition
        -> identify_dependencies
        -> identify_memory_model
        -> identify_communication
        -> integrate;

    new_performance_evidence:
        update_runtime
        -> recompute_speedup
        -> recompute_efficiency
        -> identify_bottleneck
        -> integrate;

    model_revision:
        recompute_task_graph
        -> recompute_parallelism
        -> recompute_confidence
        -> regenerate_flow_hash;

    conflict:
        preserve_provenance
        -> compare_evidence
        -> adjust_confidence
        -> flag_review;
}

# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
    DOMAIN
    + SUBDOMAIN
    + ONTOLOGY
    + ParallelEntity
    + ParallelismType
    + MemoryModel
    + ExecutionProperty
    + ParallelArchitecture
    + RELATIONSHIPS
    + SEMANTIC_REASONING
    + SEMANTIC_EQUIVALENCE
    + UPDATE_MODEL;

FLOW_HASH :=
    HASH(FLOW_HASH_INPUT);

# ---------- TERMINAL ----------
ParallelComputingOntology
    -> IdentifyComputationalProblem
    -> AnalyseDependencies
    -> DecomposeProblem
    -> SelectParallelismModel
    -> MapWorkToProcessingElements
    -> ExecuteConcurrentWork
    -> CommunicateData
    -> SynchroniseDependencies
    -> CombineResults
    -> MeasureSpeedup
    -> AnalyseEfficiency
    -> OptimiseParallelExecution
    -> ProduceParallelResult;

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ