{'fraction_non_alphanumeric': 0.017094017094017096, 'fraction_numerical': 0.0, 'mean_word_length': 5.962825278810409, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Optimisation Techniques for Multicore Architectures and Parallel Processing using OpenMP

Multicore architecture amalgamates the logic of multiple processors into a single processor. Multicore architecture is widely used as it satiates needs such as higher performance, energy-efficiency, and lower execution times by executing tasks contemporaneously. Parallelism is a crucial factor in acquiring high performance in multicore processors. Multicore architecture and parallel processing work in tandem with each other by partitioning tasks and executing them in parallel. This paper lays emphasis on cache coherence protocols that are used to resolve the cache coherence problem pervasively existent in shared memory multicore architecture. Cache coherence protocols are categorised into hardware-based protocols, software-based protocols and hybrid approach. The paper further bequeaths into global scheduling heuristics that is applied to multicore architectures to exploit fine grained parallelism. Manoeuvring fine grained parallelism to the compiler accrues better performance. In addition to that, SEU fault-injection on multicore processors is also incorporated into this report. Single Event Upset (SEU) is a phenomena prevalent in multicore architectures. The multiplicity of cores in multicore architectures makes it vulnerable to SEU's causing unforeseen soft errors. SEU fault-injection technique involves injecting faults into specific components. The performance of multicore architecture and parallel processing is also evaluated using OpenMP. OpenMP is an Application Programming Interface (API) that enables parallel execution on multicore processors. Some of the ways the performance of multicore architecture is increased is by means of employing cache coherence protocols, global scheduling techniques, applying OpenMP and through SEU fault-injections.