Claude Code Plugins

Community-maintained marketplace

Feedback
17
0

Translate OpenMP C/C++ parallel code to Python multiprocessing. Use when converting parallel for loops, critical sections, reductions, barriers, and shared/private variables between OpenMP and Python.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name code-translation
description Translate OpenMP C/C++ parallel code to Python multiprocessing. Use when converting parallel for loops, critical sections, reductions, barriers, and shared/private variables between OpenMP and Python.

Code Translation: OpenMP to Python

Parallel For to Pool.map

// OpenMP
#pragma omp parallel for reduction(+:total)
for (int i = 0; i < n; i++) { total += arr[i]; }
# Python
from multiprocessing import Pool
import numpy as np

chunks = np.array_split(arr, n_workers)
with Pool(n_workers) as pool:
    total = sum(pool.map(np.sum, chunks))

Sections to Processes

// OpenMP
#pragma omp parallel sections
{ #pragma omp section
  task_a(); #pragma omp section
  task_b(); }
# Python
from multiprocessing import Process
p1, p2 = Process(target=task_a), Process(target=task_b)
p1.start(); p2.start(); p1.join(); p2.join()

Critical Section to Lock

// OpenMP: #pragma omp critical { counter++; }
# Python
from multiprocessing import Lock, Value
counter = Value('i', 0); lock = Lock()
with lock: counter.value += 1

Barrier

// OpenMP: #pragma omp barrier
# Python
from multiprocessing import Barrier
barrier = Barrier(n_workers); barrier.wait()

Private Variables

// OpenMP: #pragma omp parallel for private(temp)
# Python - automatic in processes
def worker(i):
    temp = compute(i)  # Private by default
    return temp * 2

with Pool(4) as pool:
    result = pool.map(worker, range(n))

Translation Reference

OpenMP Python Multiprocessing
#pragma omp parallel for Pool.map()
#pragma omp sections Multiple Process
#pragma omp critical Lock
#pragma omp barrier Barrier
reduction(+:var) Map + sum partials
private(var) Automatic (process isolation)
shared(var) Value, Array, Manager
omp_get_thread_num() Pass worker ID as arg