JCuda - Java bindings for CUDA
This is the RicheyWorks contributor fork of upstream JCuda. The verified changes are now combined in this fork for its own development. This is not an official JCuda release; the original project and MIT attribution are preserved.
Want to help with Java, CUDA, JNI, testing or build setup? Start with CONTRIBUTING.md and the scoped starter proposals. Please check upstream issues and draft PRs before starting duplicate work.
See the repeatable Windows build for matching fork Java/native JARs, a hash-checked launcher, and a tiny real GPU smoke test. It uses existing toolchain prerequisites and publishes no release.
For Java-only verification, install the sibling parent and run mvn -f JCudaJava/pom.xml -Pcpu-tests test: 113 checks without a GPU. See CPU test prerequisites and scope.
23 distinct fixes integrated in the RicheyWorks forks: 22 runtime/API fixes (including diagnostic formatting) and 1 build fix. The original twenty-fix stack passed 198 focused regression cases plus 9 optional round-trip checks; a tiny GPU kernel also passed. Historical upstream submissions remain unmerged; those links are records of individual patches, not a promise of upstream review. This source integration is not a binary release. See integration and testing details. Companion tests, documentation and the separately credited community dependency do not increase our count.
The three later JNI safety fixes are recorded in the safety integration record, with separate combined validation and limits.
| # | Fix | Evidence / historical upstream draft |
|---|---|---|
| 1 | Preserve direct-buffer marks when creating position-aware pointers | Draft #49 |
| 2 | Honor stored pointer offsets in both getByteBuffer views |
Draft #50 |
| 3 | Support character buffers in Pointer.toBuffer |
Draft #51 |
| 4 | Allow cuCtxSetCurrent(null) to unbind the calling thread's context |
Draft #52 |
| 5 | Preserve native array output under JNI checking by honoring copy-back mode | jcuda-common draft #4, companion tests #53 |
| 6 | Remove incomplete native-library resources after failed extraction so retry can succeed | Draft #54 |
| 7 | Avoid pointer-size initialization failure when the data-model property is missing; infer known architectures | Draft #55 |
| 8 | Build: replace rejected Java 7 compiler options with an explicit Java 8 baseline | jcuda-parent draft #2 |
| 9 | Preserve device-pointer offsets when creating and querying driver texture resource descriptors | Draft #56 |
| 10 | Diagnostics: name combined memory-handle and graphics-registration flags instead of reporting INVALID | Draft #57 |
| 11 | Fix JNI field/handle errors and missing location values in the virtual-memory allocation/property workflow | Draft #58 |
| 12 | Return sparse-array tile dimensions in fresh result objects for plain and mipmapped queries | Draft #59 |
| 13 | Preserve native size counts in managed-memory advice/prefetch instead of truncating them on Win64 | Draft #60 |
| 14 | Preserve device name, UUID and LUID outputs when JNI uses copied array storage | Draft #61 |
| 15 | Reject invalid device-name output lengths before native array access | Draft #62 |
| 16 | Read virtual-memory access descriptor locations from the correct nested object | Draft #63 |
| 17 | Honor caller capacities and bound native output in five driver graph-list queries | Draft #64 |
| 18 | Return stream access-policy windows through the correct nested object and preserve their field values | Draft #65 |
| 19 | Return NVRTC lowered-name errors without reading an invalid output pointer or reporting false out-of-memory | Draft #66 |
| 20 | Reject undersized NVRTC binary-output arrays before native writes | Draft #67 |
| 21 | Validate PTX compiler lengths, output capacities and failed-query outputs | Evidence |
| 22 | Bound NVRTC architecture-list output and preserve trailing Java elements | Evidence |
| 23 | Preserve PCI bus-ID outputs on CUDA errors and validate native capacities | Evidence |
See the verified inventory for before/after evidence and testing limits. The 20-fix report was prepared privately; the next milestone is original JCuda GPU art. Join in with a focused, reproducible contribution; upstream review and release decisions remain with the original project.
Further fork work is recorded in the development log, including the primary-context test leak fix and its ownership regressions.
The fork also has weekly contributor inspection and explicit CPU verification, with read-only reports and no automatic PR execution or merging.
Refer to jcuda-main for further information and build instructions.