CPU prototype
A scripted optimization pipeline runs on CPU, evaluates candidates against a reference implementation, and produces verification evidence.
Early-stage · CPU verification prototype
Parakern is building an AI-powered system to modernize scientific Fortran for GPUs, with numerical verification built into the optimization process.
The starting point
Scientific computing depends on software developed and validated over decades. Much of it is written in Fortran, and moving it to modern accelerators can require substantial engineering effort.
Some computational routines contain parallelism that GPUs could exploit. The challenge is finding those opportunities without compromising the numerical behavior scientists depend on.
That’s the problem Parakern is working to solve.
Conceptual example
An illustrative before and after. The original is never modified: each candidate is a separate version that has to pass numerical validation before anything else.
SUBROUTINE STEP(T, TNEW, N, M, K) INTEGER N, M, I, J REAL T(N,M), TNEW(N,M), K DO 20 J = 2, M-1 DO 10 I = 2, N-1 TNEW(I,J) = T(I,J) + K*(T(I+1,J) + T(I-1,J) & + T(I,J+1) + T(I,J-1) - 4.0*T(I,J)) 10 CONTINUE 20 CONTINUE RETURN END
subroutine step(t, tnew, n, m, k) integer :: n, m, i, j real :: t(n,m), tnew(n,m), k !$acc data copyin(t) copy(tnew) !$acc parallel loop collapse(2) do j = 2, m-1 do i = 2, n-1 tnew(i,j) = t(i,j) + k*(t(i+1,j) + t(i-1,j) & + t(i,j+1) + t(i,j-1) - 4.0*t(i,j)) end do end do !$acc end dataend subroutine step
Illustrative example. Highlighted lines on the left are the loop nest being considered; highlighted lines on the right are what a candidate adds.
Each cell of this grid can be computed independently of its neighbours in the same step. A GPU has thousands of small cores, so it can update many cells at the same moment. Whether a given routine is actually faster this way is measured, never assumed.
Illustrative diagram. It implies no performance figure.
Conceptual interface
Reads the Fortran and finds the loops and routines that matter.
SUBROUTINE STEP(T,TNEW,N,M,K) INTEGER N,M,I,J REAL T(N,M),TNEW(N,M),K DO 20 J=2,M-1 DO 10 I=2,N-1 TNEW(I,J)=T(I,J)+K*(T(I+1,J)+T(I-1,J) & +T(I,J+1)+T(I,J-1)-4.0*T(I,J)) 10 CONTINUE 20 CONTINUE
Proposes GPU-oriented transformations, and what should stay put. Proposals are scripted today; AI-generated proposals are planned. Example decisions, for illustration.
step_heat · stencil loop nestGPU candidateread_input · file I/OStays on CPUwrite_output · file I/OStays on CPUGenerates OpenACC candidates from the original. The original is never modified.
DO 20 J=2,M-1
DO 10 I=2,N-1
TNEW(I,J)=...
10 CONTINUE
20 CONTINUE!$acc parallel loop collapse(2)
DO 20 J=2,M-1
DO 10 I=2,N-1
TNEW(I,J)=...
10 CONTINUEBuilds each candidate. GPU-oriented stages have been developed and simulated; real NVIDIA GPU builds are an upcoming milestone.
! simulated stage, not real compiler output
build candidate_a ........ queued
build candidate_b ........ queued
build candidate_c ........ queued
Runs each candidate. Real NVIDIA GPU execution is not yet validated; this stage is simulated for now.
Compares each output with the original, within the tolerance you set. Drag the slider: the curves are synthetic and only show the idea.
Candidates that pass can be evaluated for performance. Performance claims require real measurements, and none exist yet, so there are no timings to show.
The next stage: generate and evaluate transformations using AI, rather than relying solely on scripted proposals. Planned, not built yet.
How it works
Parakern is being designed to analyze scientific Fortran, propose GPU-oriented transformations, compile and execute candidates, and compare their outputs against the original.
Candidates that fail numerical validation are rejected. Candidates that pass can be evaluated for performance.
The goal is to automate this process while keeping every decision backed by inspectable evidence.
Your original code stays the reference throughout.
Reads the Fortran and finds the loops and routines that matter.
Proposes GPU-oriented transformations. Proposals are scripted today; AI-generated proposals are planned.
Generates OpenACC candidates from the original.
Builds each candidate. GPU-oriented stages are developed and simulated.
Runs each candidate. Real NVIDIA GPU execution is not yet validated.
Compares the output with the original, within the tolerance you set. A candidate that fails does not move on.
Candidates that pass can be evaluated for performance. Simulated for now; no real GPU measurements yet.
Generating and evaluating transformations with AI, rather than scripted proposals alone, is planned.
Where it stands
The same three markers are used in the interface and the diagram above, so you can always tell a working part from one that is simulated or planned.
A scripted optimization pipeline runs on CPU, evaluates candidates against a reference implementation, and produces verification evidence.
GPU-oriented stages have been developed and simulated. Real NVIDIA GPU execution and performance validation remain upcoming milestones.
The next stage is to generate and evaluate transformations using AI rather than relying solely on scripted proposals.
Principles
Candidate outputs are compared against the original implementation using defined numerical tolerances.
An optimization that fails validation cannot be accepted, regardless of its apparent speed.
Performance claims require actual measurements. Numerical agreement within a tolerance provides evidence of correctness, not a mathematical proof.
Who it’s for
Numerical simulations involving grid-based calculations and stencil operations.
Computational routines where performance matters and numerical behavior must be carefully checked.
Long-lived scientific applications where modernization must respect established validation practices.
These are intended application areas, not current customer deployments.
Questions
It is being built to analyze scientific Fortran, propose GPU-oriented transformations, compile and execute candidates, and compare their outputs against the original within defined tolerances. Candidates that fail numerical validation are rejected. Today a CPU verification prototype works; GPU execution is not yet validated, and AI-driven optimization is planned.
Every candidate is compared with your original, within a tolerance you choose. Agreement within a tolerance is evidence, not a proof, so the tolerance and the judgement stay with you.
We cannot say yet. GPU-oriented stages have been developed and simulated, but real NVIDIA GPU execution and performance validation are upcoming milestones. We are not publishing a speed-up figure until one has been measured on real hardware and validated against the original.
The focus is scientific Fortran, OpenACC, and NVIDIA GPUs.
It is early-stage. A CPU verification prototype works, and GPU execution is not yet validated. The best way to find out where it stands is to tell us what you run.
We have not published pricing or a security policy yet, and we would rather say so than imply otherwise. Ask us and we will answer plainly.
We’re building Parakern for researchers and engineers working with computationally demanding scientific software.