Skip to content

Commit 961921e

Browse files
committed
preparing to push to maven-central
1 parent 52eaf2e commit 961921e

17 files changed

Lines changed: 2054 additions & 2510 deletions

File tree

‎README.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[![Growth](https://img.shields.io/badge/Growth-%2B250%25%20(90%20days)-orange?style=flat-square)](https://central.sonatype.com/artifact/com.github.gbenroscience/parser-ng)
66
[![JDK Compatibility](https://img.shields.io/badge/JDK-8%20to%2026%2B-red?style=flat-square)](https://www.oracle.com/java/)
77

8-
> **The fastest pure-Java math runtime, now with GPU (CUDA and OpenCL) bulk evaluators and a fully open-sourced Vector API (SIMD) kernel. Zero JNI. Zero native binaries. Zero bytecode-safety risk.**
8+
> **The fastest pure-Java math runtime, now with GPU (CUDA, Metal and OpenCL) bulk evaluators and a fully open-sourced Vector API (SIMD) kernel. Zero JNI. Zero native binaries. Zero bytecode-safety risk.**
99
1010
[**ParserNG 3.0.7 is live**](LATEST.md)
1111
- In this version, `parser-ng-sql`, a new extension has been introduced to help Apache Arrow users of ParserNG(parser-ng-arrow) maximize its use, using SQL as a query language
@@ -105,7 +105,7 @@ One kernel, three backends, your choice of double or genuinely native float32 (n
105105
MathExpression me = new MathExpression("3*cos(x-2)+ln(3*x^3-5*x-4*tan(x))");
106106
VectorTurboEvaluator vte = new VectorTurboEvaluator(me);
107107

108-
try (GpuCompositeExpression gpu = GpuExpressionBridge.from(vte)) { // auto-picks CUDA, falls back to OpenCL
108+
try (GpuCompositeExpression gpu = GpuExpressionBridge.from(vte)) { // auto-picks CUDA, falls back to OpenCL/Metal
109109
double[] flat = /* your sample buffer, column-major per variable slot */;
110110
double[] out = new double[flat.length];
111111
gpu.applyBulk(flat, out); // full double precision
@@ -277,7 +277,7 @@ evaluator.applyBulk(inputs, out);
277277
| **< 1.0.0** | `MathExpression`, the interpreter. ParserNG Standard. |
278278
| **1.0.0 – 1.x** | Turbo tier arrives: `ScalarTurboEvaluator1` (variable args as an array), `ScalarTurboEvaluator2` (variable args as widened primitives internally), and `MatrixTurboEvaluator`, all built on `MethodHandles`. |
279279
| **2.0.0 – 2.x** | Bulk evaluation, via mechanical sympathy *and* SIMD. `VectorTurboEvaluator` coerces auto-vectorization through code shape alone; `SIMDVectorTurboEvaluator` forces it via the explicit Vector API. Both support `applyBulkParallel(in, out)`, but JDK 21 has no CPU pinning, capping the parallel win. |
280-
| **3.0.7** | `SIMDEngineEvaluator` and `SIMDCommandTurboEvaluator` add CPU pinning (best on Linux): 2 workers on 2 cores ≈ 1.8×–2.0× the work of 1 worker on 1 core. `SIMDEngineEvaluator` edges out `SIMDCommandTurboEvaluator` by a few ns/op. Both live in **`parser-ng-gpu-simd`** (JDK 22+), the module that also houses the star of this release: native **GPU bulk evaluators for CUDA and OpenCL**. |
280+
| **3.0.7** | `SIMDEngineEvaluator` and `SIMDCommandTurboEvaluator` add CPU pinning (best on Linux): 2 workers on 2 cores ≈ 1.8×–2.0× the work of 1 worker on 1 core. `SIMDEngineEvaluator` edges out `SIMDCommandTurboEvaluator` by a few ns/op. Both live in **`parser-ng-gpu-simd`** (JDK 22+), the module that also houses the star of this release: native **GPU bulk evaluators for CUDA and OpenCL and Metal**. |
281281

282282
Same `MathExpression` syntax at every tier. You scale up by choosing a different evaluator, never by rewriting the expression.
283283

@@ -391,7 +391,7 @@ double[] out = new double[totalElements];
391391
evaluator.applyBulk(inputs, out); // tail elements auto-masked if totalElements isn't lane-aligned
392392
```
393393

394-
### 5. GPU: OpenCL / CUDA (`parser-ng-gpu-simd`, JDK 22+)
394+
### 5. GPU: OpenCL / CUDA / Metal(`parser-ng-gpu-simd`, JDK 22+)
395395

396396
```java
397397
MathExpression me = new MathExpression("2*x^2-3*x+1");
@@ -451,7 +451,7 @@ Adds `VectorTurboEvaluator` and `SIMDVectorTurboEvaluator`:
451451

452452
### For Modern JDK 22+ GPU and/or CPU-Pinned SIMD Environments
453453

454-
Adds `SIMDEngineEvaluator`, `SIMDCommandTurboEvaluator`, and the GPU bulk evaluators (CUDA + OpenCL):
454+
Adds `SIMDEngineEvaluator`, `SIMDCommandTurboEvaluator`, and the GPU bulk evaluators (CUDA + OpenCL + Metal):
455455

456456
```xml
457457
<dependency>

‎parser-ng-gpu-simd/src/main/java/com/github/gbenroscience/simdext/turbo/tools/command/SIMDCommandF64.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import static com.github.gbenroscience.simd.turbo.tools.utils.VectorConfig.*;
99

1010
import com.github.gbenroscience.simdext.turbo.tools.utils.CPUPinner;
11-
import com.github.gbenroscience.simdext.turbo.tools.utils.VectorMath;
11+
import com.github.gbenroscience.simd.turbo.tools.utils.VectorMath;
1212
import java.lang.ref.Cleaner;
1313
import java.util.ArrayList;
1414
import java.util.InputMismatchException;

‎parser-ng-gpu-simd/src/main/java/com/github/gbenroscience/simdext/turbo/tools/command/SIMDCommandSegmentF64.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import static com.github.gbenroscience.simd.turbo.tools.VectorTurboEvaluator.BatchedVectorCompositeExpression.*;
88
import static com.github.gbenroscience.simd.turbo.tools.utils.VectorConfig.*;
99

10-
import com.github.gbenroscience.simdext.turbo.tools.utils.VectorMath;
10+
import com.github.gbenroscience.simd.turbo.tools.utils.VectorMath;
1111
import com.github.gbenroscience.simdext.turbo.tools.utils.CPUPinner;
1212
import java.lang.foreign.MemorySegment;
1313
import java.lang.foreign.ValueLayout;

‎parser-ng-gpu-simd/src/main/java/com/github/gbenroscience/simdext/turbo/tools/command/temp/SIMDCommandF64.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import static com.github.gbenroscience.simd.turbo.tools.utils.VectorConfig.*;
99

1010
import com.github.gbenroscience.simdext.turbo.tools.utils.CPUPinner;
11-
import com.github.gbenroscience.simdext.turbo.tools.utils.VectorMath;
11+
import com.github.gbenroscience.simd.turbo.tools.utils.VectorMath;
1212
import java.lang.ref.Cleaner;
1313
import java.util.ArrayList;
1414
import java.util.InputMismatchException;

‎parser-ng-gpu-simd/src/main/java/com/github/gbenroscience/simdext/turbo/tools/command/temp/SIMDCommandSegmentF64.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import static com.github.gbenroscience.simd.turbo.tools.VectorTurboEvaluator.BatchedVectorCompositeExpression.*;
88
import static com.github.gbenroscience.simd.turbo.tools.utils.VectorConfig.*;
99

10-
import com.github.gbenroscience.simdext.turbo.tools.utils.VectorMath;
10+
import com.github.gbenroscience.simd.turbo.tools.utils.VectorMath;
1111
import com.github.gbenroscience.simdext.turbo.tools.utils.CPUPinner;
1212
import java.lang.foreign.MemorySegment;
1313
import java.lang.foreign.ValueLayout;

‎parser-ng-gpu-simd/src/test/java/com/github/gbenroscience/simdext/VectorMathTests1.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
*/
2222
import com.github.gbenroscience.parser.MathExpression;
2323
import com.github.gbenroscience.simd.turbo.tools.SIMDVectorTurboEvaluator;
24-
import com.github.gbenroscience.simdext.turbo.tools.utils.VectorMath;
24+
import com.github.gbenroscience.simd.turbo.tools.utils.VectorMath;
2525
import org.junit.jupiter.api.Test;
2626
import java.util.Arrays;
2727
import static org.junit.jupiter.api.Assertions.assertEquals;

‎parser-ng-gpu-simd/src/test/java/com/github/gbenroscience/simdext/VectorMathTests2.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package com.github.gbenroscience.simdext;
1717
import com.github.gbenroscience.parser.MathExpression;
1818
import com.github.gbenroscience.simd.turbo.tools.SIMDVectorTurboEvaluator;
19-
import com.github.gbenroscience.simdext.turbo.tools.utils.VectorMath;
19+
import com.github.gbenroscience.simd.turbo.tools.utils.VectorMath;
2020
import org.junit.jupiter.api.Test;
2121
import java.util.Arrays;
2222
import static org.junit.jupiter.api.Assertions.assertEquals;

‎parser-ng-simd/README.md‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,7 @@ mvn clean test -Dtest=SIMDTurboEvaluatorTest
9494

9595
The test harness evaluates throughput performance vectors across varying scales ($20 \times 20$, $70 \times 70$, $100 \times 100$, and $200 \times 200$).
9696

97-
> ⚠️ **Configuration Suggestion:** Avoid configuring raw matrix printouts at higher dimension limits ($200 \times 200$) within the terminal log to prevent console buffer IO bottlenecks from stalling the test cycle.
9897

99-
---
10098

10199
### Current Project Roadmap
102100

0 commit comments

Comments
 (0)