Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
f618f82
GPU transfers
lukemartinlogan Feb 8, 2026
bf354b5
IpcManager on GPU clients
lukemartinlogan Feb 8, 2026
9b83012
IPC allocation tests pass
lukemartinlogan Feb 8, 2026
6cb7f48
Add MakeCopyFutureGpu for GPU task serialization
lukemartinlogan Feb 8, 2026
2f03758
Complete GPU kernel task submission implementation
lukemartinlogan Feb 8, 2026
057486f
add_cuda_executable
lukemartinlogan Feb 9, 2026
35dcb1f
More ring buffer tests
lukemartinlogan Feb 9, 2026
b89169d
Submission of futures to queues seems to behave if queues allocated p…
lukemartinlogan Feb 9, 2026
8fc2371
Remove ai-prompts
lukemartinlogan Feb 9, 2026
3ac703c
Use AernaAllocator
lukemartinlogan Feb 9, 2026
5f46801
Add Vulkan timeline semaphore test for GPU ring buffer
lukemartinlogan Feb 9, 2026
bf56f61
Revert Vulkan timeline semaphore test
lukemartinlogan Feb 9, 2026
855a72a
Refactor Worker to support dedicated GPU queue polling
lukemartinlogan Feb 9, 2026
e4c6a32
CHI_IPC on GPU
lukemartinlogan Feb 10, 2026
06a083a
Allow ZMQ transport
lukemartinlogan Feb 10, 2026
e39e7be
memfd + symlink instead
lukemartinlogan Feb 10, 2026
c9a8190
Use lightbeam for all client-server IPC transport with inline bulk data
lukemartinlogan Feb 10, 2026
75a48bd
Derive inline bulk mode from ShmPtr alloc_id instead of explicit flag
lukemartinlogan Feb 10, 2026
063d6c1
Allow different transport modes
lukemartinlogan Feb 10, 2026
585a909
Fix compile errors on debug
lukemartinlogan Feb 10, 2026
78965b3
Switch TCP/IPC client path to network archives and force rescan on wake
lukemartinlogan Feb 10, 2026
8d34a08
Add shared-memory transport plugin to lightbeam
lukemartinlogan Feb 11, 2026
2dd917d
More transports
lukemartinlogan Feb 11, 2026
d3b40d0
Shm transfers work more consistently and follow lightbeam
lukemartinlogan Feb 11, 2026
a1bd59d
Remove debug
lukemartinlogan Feb 11, 2026
73d9940
Functinos again
lukemartinlogan Feb 12, 2026
625ddda
Use mmap intead of malloc to improve bdev performance and reduce page…
lukemartinlogan Feb 12, 2026
f5f92ee
Re-address resource utilization
lukemartinlogan Feb 12, 2026
20582f2
Fix BULK_EXPOSE
lukemartinlogan Feb 12, 2026
16fe482
Fixed crash due to use after free in future
lukemartinlogan Feb 12, 2026
23ad918
Use consume instead of owner
lukemartinlogan Feb 12, 2026
42ceaac
Merge branch 'main' of github.com:iowarp/core into 74-fix-context-tra…
lukemartinlogan Feb 12, 2026
9dad4d4
More than one transport is working seemingly
lukemartinlogan Feb 12, 2026
30cffee
Fix TCP bulk data copy and add SHM/TCP/IPC test variants
lukemartinlogan Feb 12, 2026
a8af756
Fix CTE distributed test volume mount path
lukemartinlogan Feb 12, 2026
826e0d3
Removed AI prompts folder
lukemartinlogan Feb 12, 2026
7a79348
Fix CI build: add missing local_sched files and algorithm include
lukemartinlogan Feb 12, 2026
601a82a
Compiler
lukemartinlogan Feb 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .devcontainer/cpu/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,29 @@ FROM iowarp/deps-cpu:latest
# - MPI (OpenMPI)
# - libaio (for bdev ChiMod)

# Remap iowarp user UID/GID to match the host user.
# This avoids file permission issues with bind-mounted volumes.
# Override at build time: --build-arg HOST_UID=$(id -u) --build-arg HOST_GID=$(id -g)
ARG HOST_UID=1000
ARG HOST_GID=1000

USER root
# Ubuntu 24.04 ships a default "ubuntu" user at UID 1000 which blocks
# updateRemoteUserUID and manual UID remapping (see
# https://github.com/microsoft/vscode-remote-release/issues/10030).
# Move it out of the way so iowarp can claim the host user's UID.
RUN if id ubuntu >/dev/null 2>&1; then \
usermod -u 59999 ubuntu && \
groupmod -g 59999 ubuntu; \
fi && \
OLD_UID=$(id -u iowarp) && OLD_GID=$(id -g iowarp) && \
if [ "${HOST_UID}" != "${OLD_UID}" ] || [ "${HOST_GID}" != "${OLD_GID}" ]; then \
groupmod -o -g "${HOST_GID}" iowarp && \
usermod -o -u "${HOST_UID}" -g "${HOST_GID}" iowarp && \
chown -R "${HOST_UID}:${HOST_GID}" /home/iowarp; \
fi

USER iowarp
WORKDIR /workspace

# Install Claude Code for AI-assisted development
Expand Down
5 changes: 5 additions & 0 deletions .devcontainer/cpu/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
"build": {
"dockerfile": "Dockerfile",
"context": "../..",
"args": {
"HOST_UID": "${localEnv:HOST_UID:1000}",
"HOST_GID": "${localEnv:HOST_GID:1000}"
},
"options": [
"--tag=iowarp/core-devcontainer:latest"
]
Expand All @@ -26,6 +30,7 @@
"--privileged",
"--shm-size=2gb"
],
"updateRemoteUserUID": true,
"initializeCommand": "bash -c 'mkdir -p ~/.ssh ~/.claude && chmod 700 ~/.ssh && touch ~/.claude.json'",
"customizations": {
"vscode": {
Expand Down
23 changes: 23 additions & 0 deletions .devcontainer/nvidia-gpu/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,29 @@ FROM iowarp/deps-nvidia:latest
# - NVIDIA Container Toolkit
# - GPU environment variables (CUDA_HOME, NVIDIA_VISIBLE_DEVICES, etc.)

# Remap iowarp user UID/GID to match the host user.
# This avoids file permission issues with bind-mounted volumes.
# Override at build time: --build-arg HOST_UID=$(id -u) --build-arg HOST_GID=$(id -g)
ARG HOST_UID=1000
ARG HOST_GID=1000

USER root
# Ubuntu 24.04 ships a default "ubuntu" user at UID 1000 which blocks
# updateRemoteUserUID and manual UID remapping (see
# https://github.com/microsoft/vscode-remote-release/issues/10030).
# Move it out of the way so iowarp can claim the host user's UID.
RUN if id ubuntu >/dev/null 2>&1; then \
usermod -u 59999 ubuntu && \
groupmod -g 59999 ubuntu; \
fi && \
OLD_UID=$(id -u iowarp) && OLD_GID=$(id -g iowarp) && \
if [ "${HOST_UID}" != "${OLD_UID}" ] || [ "${HOST_GID}" != "${OLD_GID}" ]; then \
groupmod -o -g "${HOST_GID}" iowarp && \
usermod -o -u "${HOST_UID}" -g "${HOST_GID}" iowarp && \
chown -R "${HOST_UID}:${HOST_GID}" /home/iowarp; \
fi

USER iowarp
WORKDIR /workspace

# Install Claude Code for AI-assisted development
Expand Down
5 changes: 5 additions & 0 deletions .devcontainer/nvidia-gpu/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
"build": {
"dockerfile": "Dockerfile",
"context": "../..",
"args": {
"HOST_UID": "${localEnv:HOST_UID:1000}",
"HOST_GID": "${localEnv:HOST_GID:1000}"
},
"options": [
"--tag=iowarp/core-devcontainer:latest"
]
Expand Down Expand Up @@ -31,6 +35,7 @@
"--shm-size=2gb",
"--gpus=all"
],
"updateRemoteUserUID": true,
"initializeCommand": "bash -c 'umask 077 && mkdir -p ~/.ssh ~/.claude && chmod 700 ~/.ssh && touch ~/.claude.json'",
// NOTE: If container fails to start with GPU error, run on host:
// sudo apt-get install -y nvidia-container-toolkit
Expand Down
29 changes: 29 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -784,6 +784,7 @@ environment:
- CHI_CLIENT_DATA_SEGMENT_SIZE=512M
- CHI_RUNTIME_DATA_SEGMENT_SIZE=512M
- CHI_ZMQ_PORT=5555
- CHI_IPC_MODE=TCP # SHM, TCP (default), or IPC
- CHI_LOG_LEVEL=info
- CHI_SHM_SIZE=2147483648
```
Expand Down Expand Up @@ -812,6 +813,34 @@ environment:
- CHI_HOSTFILE=/etc/iowarp/hostfile
```

## IPC Transport Modes

Chimaera clients communicate with the runtime server using one of three IPC transport modes, controlled by the `CHI_IPC_MODE` environment variable. This variable is read during `IpcManager::ClientInit()`.

**Values:**

| Value | Mode | Description |
|-------|------|-------------|
| `SHM` / `shm` | Shared Memory | Client attaches to the server's shared memory queues and pushes tasks directly. Lowest latency, requires same-machine access to the server's shared memory segment. |
| `TCP` / `tcp` | TCP (ZeroMQ) | Client sends serialized tasks over TCP via lightbeam PUSH/PULL sockets. Works across machines. **This is the default when `CHI_IPC_MODE` is unset.** |
| `IPC` / `ipc` | Unix Domain Socket (ZeroMQ) | Client sends serialized tasks over a Unix domain socket via lightbeam PUSH/PULL. Same-machine only, avoids TCP overhead. |

**Bulk data handling:**
- In SHM mode, `bulk()` serialization writes the `ShmPtr` (allocator ID + offset) since both client and server can resolve shared memory pointers.
- In TCP/IPC mode, buffers are allocated with null `alloc_id_` (private memory). `bulk()` detects null `alloc_id_` and inlines the actual data bytes into the serialization stream.

**Example:**
```bash
# Use shared memory transport (same machine, lowest latency)
export CHI_IPC_MODE=SHM

# Use TCP transport (default, works across machines)
export CHI_IPC_MODE=TCP

# Use Unix domain socket transport (same machine, no TCP overhead)
export CHI_IPC_MODE=IPC
```

## Python Wheel Distribution

### Building Bundled Wheels
Expand Down
13 changes: 5 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ option(WRP_CORE_ENABLE_JARVIS "Enable Jarvis CI infrastructure installation" OFF
#------------------------------------------------------------------------------
# HermesShm (context-transport-primitives) Options
#------------------------------------------------------------------------------
option(HSHM_ENABLE_TESTS "Enable tests for HermesShm" ON)
option(HSHM_ENABLE_PTHREADS "Support spawning pthreads" OFF)
option(HSHM_ENABLE_WINDOWS_THREADS "Support spawning windows threads" OFF)
option(HSHM_DEBUG_LOCK "Used for debugging locks" OFF)
Expand All @@ -123,7 +122,6 @@ set(HSHM_LOG_LEVEL "1" CACHE STRING "Log level threshold (0=Debug, 1=Info, 2=War
#------------------------------------------------------------------------------
# Chimaera (context-runtime) Options
#------------------------------------------------------------------------------
option(CHIMAERA_ENABLE_TESTS "Enable tests for Chimaera runtime" ON)

#------------------------------------------------------------------------------
# CTE (context-transfer-engine) Options
Expand Down Expand Up @@ -155,11 +153,7 @@ option(WRP_CORE_ENABLE_GRAY_SCOTT "Enable Gray-Scott ADIOS2 example (requires AD
# If WRP_CORE_ENABLE_BENCHMARKS is OFF, force all component benchmarks OFF
# Otherwise, use individual component values

# Apply master test switch
if(NOT WRP_CORE_ENABLE_TESTS)
set(HSHM_ENABLE_TESTS OFF)
set(CHIMAERA_ENABLE_TESTS OFF)
endif()
# Apply master test switch (no-op, WRP_CORE_ENABLE_TESTS used directly)

# Set HSHM_ENABLE_* aliases for backward compatibility
# These allow component code to continue using HSHM_ENABLE_* while we transition
Expand Down Expand Up @@ -645,8 +639,11 @@ endif()
# Add compiler flags following Google C++ style guide
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
# Disable some problematic warnings for external dependencies
# Disable warnings that are false positives or from external dependencies
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wno-unused-variable -Wno-reorder")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pedantic -Wno-sign-compare -Wno-missing-field-initializers")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-but-set-variable -Wno-unused-function -Wno-cast-function-type")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-self-move -Wno-format")

# Debug configuration
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -DDEBUG")
Expand Down
9 changes: 5 additions & 4 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,17 +40,17 @@
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"WRP_CORE_ENABLE_RUNTIME": "OFF",
"WRP_CORE_ENABLE_CTE": "OFF",
"WRP_CORE_ENABLE_RUNTIME": "ON",
"WRP_CORE_ENABLE_CTE": "ON",
"WRP_CORE_ENABLE_CAE": "OFF",
"WRP_CORE_ENABLE_CEE": "OFF",
"WRP_CORE_ENABLE_TESTS": "ON",
"WRP_CORE_ENABLE_BENCHMARKS": "ON",
"WRP_CORE_ENABLE_ELF": "ON",
"WRP_CORE_ENABLE_ELF": "OFF",
"WRP_CORE_ENABLE_CUDA": "ON",
"CMAKE_CUDA_ARCHITECTURES": "86",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"WRP_CORE_ENABLE_ASAN": "ON"
"WRP_CORE_ENABLE_ASAN": "OFF"
}
},
{
Expand Down Expand Up @@ -91,6 +91,7 @@
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"WRP_CORE_ENABLE_ASAN": "OFF",
"WRP_CORE_ENABLE_PYTHON": "ON",
"WRP_CORE_ENABLE_COVERAGE": "OFF",
"HSHM_LOG_LEVEL": "1"
}
},
Expand Down
7 changes: 0 additions & 7 deletions CTestConfig.cmake

This file was deleted.

45 changes: 0 additions & 45 deletions ai-prompts/phase1-merging.md

This file was deleted.

Empty file.
8 changes: 0 additions & 8 deletions ai-prompts/phase2-compiling.md

This file was deleted.

4 changes: 0 additions & 4 deletions ai-prompts/phase3-readme.md

This file was deleted.

Empty file removed ai-prompts/phase4-docs.md
Empty file.
10 changes: 0 additions & 10 deletions ai-prompts/phase5-distributed.md

This file was deleted.

9 changes: 0 additions & 9 deletions ai-prompts/phase6-uv.md

This file was deleted.

33 changes: 0 additions & 33 deletions ai-prompts/phase7-cmake.md

This file was deleted.

1 change: 0 additions & 1 deletion ai-prompts/phase8-install.md

This file was deleted.

37 changes: 0 additions & 37 deletions ai-prompts/phase9-del-old-hshm.md

This file was deleted.

1 change: 1 addition & 0 deletions cmake/IowarpCoreCommon.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ macro(wrp_core_enable_cuda CXX_STANDARD)

message(STATUS "USING CUDA ARCH: ${CMAKE_CUDA_ARCHITECTURES}")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --forward-unknown-to-host-compiler -diag-suppress=177,20014,20011,20012")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=-Wno-format,-Wno-pedantic,-Wno-sign-compare,-Wno-unused-but-set-variable")
enable_language(CUDA)

set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_INCLUDES 0)
Expand Down
Loading