atomr-accel 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- atomr_accel-0.1.0/PKG-INFO +140 -0
- atomr_accel-0.1.0/README.md +116 -0
- atomr_accel-0.1.0/atomr/Cargo.toml +198 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/Cargo.toml +36 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/cluster_daemon.rs +464 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/events.rs +147 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/gossip.rs +65 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/gossip_pdu.rs +150 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/heartbeat.rs +46 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/heartbeat_sender.rs +150 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/leader.rs +152 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/lib.rs +44 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/member.rs +33 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/membership.rs +175 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/multi_dc.rs +158 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/reachability.rs +78 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/remote_adapter.rs +192 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/sbr.rs +183 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/sbr_runtime.rs +166 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/vector_clock.rs +98 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster/tests/cluster_multinode.rs +69 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-metrics/Cargo.toml +32 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-metrics/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-metrics/src/lib.rs +399 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/Cargo.toml +33 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/allocation.rs +164 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/coordinator.rs +158 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/ddata_coordinator.rs +173 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/entity_ref.rs +27 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/extractor.rs +8 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/handoff.rs +188 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/lib.rs +32 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/passivation.rs +113 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/persistent_coordinator.rs +265 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/rebalance.rs +155 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/remember_entities.rs +161 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/shard.rs +40 -0
- atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/shard_region.rs +129 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/Cargo.toml +28 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/src/error.rs +25 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/src/hocon.rs +698 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/src/lib.rs +19 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/src/path.rs +56 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/src/reference.conf.toml +70 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/src/reference.rs +6 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/src/value.rs +256 -0
- atomr_accel-0.1.0/atomr/crates/atomr-config/tests/hocon_integration.rs +67 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/Cargo.toml +44 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/actor_cell.rs +227 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/actor_ref.rs +266 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/actor_system.rs +244 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/address.rs +86 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/context.rs +266 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/coordinated_shutdown.rs +91 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/deploy.rs +50 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/extensions.rs +66 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/fsm.rs +85 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/inbox.rs +53 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/mod.rs +44 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/observer.rs +23 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/path.rs +106 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/props.rs +121 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/provider.rs +32 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/remote.rs +60 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/scheduler/hashed_wheel.rs +179 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/scheduler/mod.rs +40 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/scheduler/tokio_scheduler.rs +98 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/sender.rs +108 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/stash.rs +177 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/traits.rs +60 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/dispatch/dispatcher.rs +140 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/dispatch/mailbox.rs +53 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/dispatch/message_queues.rs +264 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/dispatch/mod.rs +11 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/event/dead_letters.rs +62 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/event/event_stream.rs +138 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/event/logging.rs +31 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/event/mod.rs +10 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/fsm_macro.rs +66 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/io/manager.rs +280 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/io/mod.rs +9 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/io/tcp.rs +27 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/io/udp.rs +10 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/lib.rs +57 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/ask.rs +22 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/backoff.rs +64 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/circuit_breaker.rs +128 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/mod.rs +14 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/pipe_to.rs +32 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/retry.rs +157 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/broadcast.rs +19 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/consistent_hash.rs +44 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/mod.rs +23 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/random.rs +33 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/round_robin.rs +24 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/scatter_gather.rs +41 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/smallest_mailbox.rs +47 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/tail_chopping.rs +113 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/serialization/json.rs +36 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/serialization/mod.rs +32 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/serialization/registry.rs +49 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/serialization/traits.rs +23 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/supervision.rs +292 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/bounded_queue.rs +73 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/clock.rs +50 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/mod.rs +14 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/snapshot.rs +115 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/type_registry.rs +56 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/tests/actor_lifecycle.rs +98 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/tests/fsm_macro.rs +44 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/tests/sender_typed.rs +107 -0
- atomr_accel-0.1.0/atomr/crates/atomr-core/tests/typed_context.rs +70 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/Cargo.toml +29 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/counters.rs +147 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/durable.rs +201 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/flag.rs +55 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/lib.rs +25 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/maps.rs +321 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/register.rs +55 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/replicator.rs +304 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/replicator_actor.rs +209 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/sets.rs +149 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/traits.rs +65 -0
- atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/tests/replicator_actor_multinode.rs +51 -0
- atomr_accel-0.1.0/atomr/crates/atomr-macros/Cargo.toml +34 -0
- atomr_accel-0.1.0/atomr/crates/atomr-macros/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-macros/src/lib.rs +240 -0
- atomr_accel-0.1.0/atomr/crates/atomr-macros/tests/actor_msg.rs +15 -0
- atomr_accel-0.1.0/atomr/crates/atomr-macros/tests/derive_actor.rs +40 -0
- atomr_accel-0.1.0/atomr/crates/atomr-macros/tests/derive_receive.rs +49 -0
- atomr_accel-0.1.0/atomr/crates/atomr-macros/tests/props_macro.rs +42 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/Cargo.toml +28 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/alod.rs +97 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/async_snapshot.rs +136 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/eventsourced.rs +309 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/journal.rs +184 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/lib.rs +25 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/persistent_actor.rs +82 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/persistent_fsm.rs +277 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/receive_persistent.rs +247 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/recovery.rs +29 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/recovery_permitter.rs +132 -0
- atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/snapshot.rs +51 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/Cargo.toml +37 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/acked_delivery.rs +175 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/address_uid.rs +71 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/cache.rs +152 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/chunking.rs +255 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/codec.rs +91 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/deadline_detector.rs +60 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/endpoint/mod.rs +242 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/endpoint_manager.rs +330 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/envelope.rs +84 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/error.rs +122 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/failure_detector.rs +11 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/failure_detector_registry.rs +60 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/lib.rs +106 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/metrics.rs +81 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/pdu.rs +64 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/phi_accrual.rs +121 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/provider.rs +67 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/reader_writer.rs +193 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/remote_props.rs +144 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/remote_ref.rs +104 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/remote_watcher.rs +194 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/router.rs +117 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/send_queue.rs +108 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/serialization/bincode_codec.rs +72 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/serialization/json_codec.rs +13 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/serialization/mod.rs +174 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/settings.rs +200 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/system.rs +227 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/system_daemon.rs +175 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/tls.rs +191 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/akka_protocol.rs +269 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/failure_injector.rs +86 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/mod.rs +73 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/tcp.rs +274 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/test_transport.rs +123 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/throttle.rs +78 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/tests/quarantine_lifecycle.rs +39 -0
- atomr_accel-0.1.0/atomr/crates/atomr-remote/tests/two_process.rs +193 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/Cargo.toml +34 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/bidi.rs +20 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/file_io.rs +121 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/flow.rs +119 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/framing.rs +153 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/graph.rs +30 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/hub.rs +202 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/junction.rs +105 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/kill_switch.rs +120 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/lib.rs +67 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/lifecycle.rs +104 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/materializer.rs +65 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/overflow.rs +163 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/queue.rs +60 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/recovery.rs +155 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/restart.rs +123 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/routing.rs +123 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/runnable.rs +31 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/sink.rs +226 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/source.rs +389 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/stream_ref.rs +158 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/substream.rs +134 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/supervision.rs +131 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/tcp.rs +151 -0
- atomr_accel-0.1.0/atomr/crates/atomr-streams/src/timed.rs +146 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/Cargo.toml +74 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/actor_registry.rs +171 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/bus.rs +116 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/cluster.rs +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/ddata.rs +71 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/dead_letters.rs +100 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/dto.rs +185 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/exporters/config.rs +98 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/exporters/mod.rs +26 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/exporters/otel.rs +315 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/exporters/prometheus.rs +431 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/lib.rs +117 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/persistence.rs +184 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/remote.rs +133 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/sharding.rs +94 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/streams.rs +78 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/actor_registry_integration.rs +51 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/cluster_integration.rs +47 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/dead_letters_integration.rs +35 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/exporters_integration.rs +33 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/persistence_integration.rs +45 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/remote_streams_ddata_integration.rs +63 -0
- atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/sharding_integration.rs +44 -0
- atomr_accel-0.1.0/atomr/crates/atomr-testkit/Cargo.toml +29 -0
- atomr_accel-0.1.0/atomr/crates/atomr-testkit/README.md +208 -0
- atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/event_filter.rs +60 -0
- atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/lib.rs +18 -0
- atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/multinode.rs +180 -0
- atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/probe.rs +242 -0
- atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/test_kit.rs +41 -0
- atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/test_scheduler.rs +221 -0
- atomr_accel-0.1.0/atomr-accel/Cargo.lock +2056 -0
- atomr_accel-0.1.0/atomr-accel/Cargo.toml +54 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/Cargo.toml +126 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/README.md +371 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/benches/rng_throughput.rs +90 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/benches/sgemm_overhead.rs +135 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/echo_no_gpu.rs +60 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/fft_1d.rs +54 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/jit_relu.rs +46 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/pipeline_no_gpu.rs +43 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/rng_uniform.rs +64 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/sgemm.rs +77 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/completion/host_fn.rs +96 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/completion/mod.rs +35 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/completion/poll.rs +92 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/completion/sync.rs +40 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/alloc_msg.rs +56 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/context_actor.rs +543 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/device_actor.rs +746 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/mod.rs +14 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/state.rs +144 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/dispatcher.rs +137 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/error.rs +242 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/gpu_ref.rs +159 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/graph/mod.rs +388 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/host/mod.rs +17 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/host/pinned.rs +417 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/blas.rs +206 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/blas_lt.rs +183 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/collective.rs +244 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/cudnn_actor.rs +720 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/envelope.rs +201 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/fft.rs +439 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/mod.rs +76 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/nvrtc.rs +374 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/record.rs +230 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/rng.rs +328 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/solver.rs +1052 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/sparse.rs +703 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/tensor.rs +522 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/lib.rs +62 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/memory/managed.rs +388 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/memory/mod.rs +13 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/multi_device/mod.rs +11 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/multi_device/world_actor.rs +348 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/observability.rs +159 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/p2p/mod.rs +462 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/pipeline/executor.rs +206 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/pipeline/mod.rs +38 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/pipeline/sink.rs +85 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/pipeline/stage.rs +26 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/placement/mod.rs +254 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/placement/sharded.rs +174 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/prelude.rs +68 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/replay/mod.rs +440 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/stream/mod.rs +60 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/stream/per_actor.rs +88 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/stream/pool.rs +60 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/stream/single.rs +25 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/streams_pipeline.rs +86 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/contract_e2e.rs +137 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/end_to_end_e2e.rs +105 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/kernel_envelope.rs +33 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/pinned_memcpy_e2e.rs +115 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/pinned_pool_lifecycle.rs +46 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/replay_persistence.rs +80 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/rng_fill_e2e.rs +58 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/sgemm_e2e.rs +75 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/spmv_e2e.rs +164 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/supervisor_decider.rs +94 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/svd_e2e.rs +183 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/typed_alloc.rs +123 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/watch_generation.rs +105 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/Cargo.toml +46 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/README.md +116 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/buffer.rs +72 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/device.rs +289 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/errors.rs +97 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/lib.rs +46 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/nvrtc.rs +42 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/rng.rs +36 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/runtime.rs +26 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/system.rs +98 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/tests/conftest.py +12 -0
- atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/tests/test_smoke.py +76 -0
- atomr_accel-0.1.0/pyproject.toml +35 -0
- atomr_accel-0.1.0/python/atomr_accel/__init__.py +68 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: atomr-accel
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Classifier: Development Status :: 4 - Beta
|
|
5
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
6
|
+
Classifier: Programming Language :: Rust
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
9
|
+
Classifier: Topic :: Scientific/Engineering
|
|
10
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
11
|
+
Requires-Dist: numpy>=1.24
|
|
12
|
+
Requires-Dist: pytest>=7 ; extra == 'test'
|
|
13
|
+
Requires-Dist: numpy>=1.24 ; extra == 'test'
|
|
14
|
+
Provides-Extra: test
|
|
15
|
+
Summary: Actor-shaped face for compute-acceleration backends (NVIDIA CUDA shipping; ROCm / Metal / oneAPI / Vulkan future), on the atomr actor runtime.
|
|
16
|
+
Keywords: cuda,gpu,atomr,actor,ml,accelerator
|
|
17
|
+
Home-Page: https://github.com/rustakka/atomr-accel
|
|
18
|
+
Author: atomr-accel contributors
|
|
19
|
+
License: Apache-2.0
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
22
|
+
Project-URL: Source, https://github.com/rustakka/atomr-accel
|
|
23
|
+
|
|
24
|
+
# atomr-accel (Python)
|
|
25
|
+
|
|
26
|
+
Python bindings for [atomr-accel](../..) — drive an actor-supervised
|
|
27
|
+
NVIDIA CUDA pipeline directly from Python without juggling streams,
|
|
28
|
+
contexts, or hand-rolled retry loops.
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
import numpy as np
|
|
32
|
+
import atomr_accel
|
|
33
|
+
|
|
34
|
+
with atomr_accel.System.open("my-app") as sys:
|
|
35
|
+
dev = sys.spawn_device(device_id=0) # real CUDA device
|
|
36
|
+
|
|
37
|
+
# Allocate two N×N f32 buffers on-device.
|
|
38
|
+
n = 256
|
|
39
|
+
a = dev.allocate_f32(n * n)
|
|
40
|
+
b = dev.allocate_f32(n * n)
|
|
41
|
+
c = dev.allocate_f32(n * n)
|
|
42
|
+
|
|
43
|
+
# Upload from numpy.
|
|
44
|
+
dev.copy_from_numpy(a, np.ones(n * n, dtype=np.float32))
|
|
45
|
+
dev.copy_from_numpy(b, np.full(n * n, 2.0, dtype=np.float32))
|
|
46
|
+
|
|
47
|
+
# Run cuBLAS SGEMM — the call blocks until the kernel finishes.
|
|
48
|
+
dev.sgemm(a, b, c, m=n, n=n, k=n, alpha=1.0, beta=0.0)
|
|
49
|
+
|
|
50
|
+
# Pull the result back into a fresh numpy array.
|
|
51
|
+
result = dev.copy_to_numpy(c)
|
|
52
|
+
print(result.reshape(n, n))
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
For hosts without a GPU, pass `mock=True` to `spawn_device` and the
|
|
56
|
+
device replies `Unrecoverable("...mock mode")` for any kernel call —
|
|
57
|
+
useful for testing the surrounding plumbing in CI.
|
|
58
|
+
|
|
59
|
+
## Install
|
|
60
|
+
|
|
61
|
+
The wheel builds with [maturin](https://www.maturin.rs/):
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# from this directory
|
|
65
|
+
pip install maturin pytest numpy
|
|
66
|
+
maturin develop --release # builds + installs into the active venv
|
|
67
|
+
pytest tests/ # runs the no-GPU smoke suite
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
For a release wheel:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
maturin build --release --no-default-features --features extension-module
|
|
74
|
+
# wheel lands in target/wheels/
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The pure-Python facade (`python/atomr_accel/__init__.py`) re-exports
|
|
78
|
+
the native classes and exception types. Downstream libraries import
|
|
79
|
+
from `atomr_accel` and treat `atomr_accel._native` as private.
|
|
80
|
+
|
|
81
|
+
## Feature flags
|
|
82
|
+
|
|
83
|
+
The Rust crate matches `atomr-accel`'s feature gating so the wheel can
|
|
84
|
+
be built minimal or full:
|
|
85
|
+
|
|
86
|
+
| Feature | Adds |
|
|
87
|
+
|-------------------|-------------------------------------------------|
|
|
88
|
+
| (default) | `System`, `Device`, `GpuBuffer`, exceptions |
|
|
89
|
+
| `curand` | `RngGenerator` |
|
|
90
|
+
| `nvrtc` | `NvrtcKernel` |
|
|
91
|
+
| `cudnn` / `cufft` / `cusolver` / `cublaslt` / `nccl` | placeholder; future Python surfaces |
|
|
92
|
+
| `core-libs` / `training-libs` / `full-cuda` | aggregates |
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
maturin develop --features atomr-accel-py/curand,atomr-accel-py/nvrtc
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Public API
|
|
99
|
+
|
|
100
|
+
| Class / function | What it wraps |
|
|
101
|
+
|---------------------------------|-----------------------------------------------------|
|
|
102
|
+
| `atomr_accel.System.open(name)` | A `atomr_core::actor::ActorSystem` lifetime |
|
|
103
|
+
| `system.spawn_device(id, mock=)` | A `DeviceActor` (real or mock) |
|
|
104
|
+
| `device.allocate_f32(len)` | `DeviceMsg::AllocateF32` → `GpuBuffer` |
|
|
105
|
+
| `device.copy_from_numpy(buf, np)` | H2D `CopyFromHostF32` |
|
|
106
|
+
| `device.copy_to_numpy(buf)` | D2H `CopyToHostF32` → numpy `float32` array |
|
|
107
|
+
| `device.sgemm(a,b,c,m,n,k,...)` | cuBLAS SGEMM via `BlasActor` |
|
|
108
|
+
| `device.stats()` | `DeviceMsg::Stats` → `DeviceLoad` |
|
|
109
|
+
| `GpuBuffer.is_stale()` | Generation token check vs. `DeviceState` |
|
|
110
|
+
| `GpuRuntimeError` (and subclasses) | Typed `GpuError` mapping |
|
|
111
|
+
|
|
112
|
+
Every method blocks the calling thread until the underlying actor
|
|
113
|
+
replies (the GIL is released for the duration via `py.allow_threads`).
|
|
114
|
+
Async wrappers can be layered later via
|
|
115
|
+
`pyo3_async_runtimes::tokio::future_into_py`.
|
|
116
|
+
|
|
117
|
+
## How it works
|
|
118
|
+
|
|
119
|
+
Three pieces:
|
|
120
|
+
|
|
121
|
+
1. **A shared tokio runtime.** The first call to
|
|
122
|
+
`System.open(...)` initializes a multi-threaded scheduler; every
|
|
123
|
+
subsequent call reuses it. Implemented in `src/runtime.rs` via
|
|
124
|
+
`pyo3-async-runtimes::tokio::init`.
|
|
125
|
+
2. **The `_native` extension module.** `src/lib.rs` registers
|
|
126
|
+
`System`, `Device`, `GpuBuffer`, exceptions, and (feature-gated)
|
|
127
|
+
`RngGenerator` / `NvrtcKernel`. Each Python class wraps a typed
|
|
128
|
+
`ActorRef<...>` from atomr-accel and converts replies via
|
|
129
|
+
`errors::map_gpu`.
|
|
130
|
+
3. **The pure-Python facade** at `python/atomr_accel/__init__.py`. Hides
|
|
131
|
+
`_native`; documents the API; gives downstream libraries a stable
|
|
132
|
+
import path.
|
|
133
|
+
|
|
134
|
+
See [docs/python-bridge.md](../../docs/python-bridge.md) for the
|
|
135
|
+
full architecture write-up.
|
|
136
|
+
|
|
137
|
+
## License
|
|
138
|
+
|
|
139
|
+
Apache-2.0.
|
|
140
|
+
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# atomr-accel (Python)
|
|
2
|
+
|
|
3
|
+
Python bindings for [atomr-accel](../..) — drive an actor-supervised
|
|
4
|
+
NVIDIA CUDA pipeline directly from Python without juggling streams,
|
|
5
|
+
contexts, or hand-rolled retry loops.
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
import numpy as np
|
|
9
|
+
import atomr_accel
|
|
10
|
+
|
|
11
|
+
with atomr_accel.System.open("my-app") as sys:
|
|
12
|
+
dev = sys.spawn_device(device_id=0) # real CUDA device
|
|
13
|
+
|
|
14
|
+
# Allocate two N×N f32 buffers on-device.
|
|
15
|
+
n = 256
|
|
16
|
+
a = dev.allocate_f32(n * n)
|
|
17
|
+
b = dev.allocate_f32(n * n)
|
|
18
|
+
c = dev.allocate_f32(n * n)
|
|
19
|
+
|
|
20
|
+
# Upload from numpy.
|
|
21
|
+
dev.copy_from_numpy(a, np.ones(n * n, dtype=np.float32))
|
|
22
|
+
dev.copy_from_numpy(b, np.full(n * n, 2.0, dtype=np.float32))
|
|
23
|
+
|
|
24
|
+
# Run cuBLAS SGEMM — the call blocks until the kernel finishes.
|
|
25
|
+
dev.sgemm(a, b, c, m=n, n=n, k=n, alpha=1.0, beta=0.0)
|
|
26
|
+
|
|
27
|
+
# Pull the result back into a fresh numpy array.
|
|
28
|
+
result = dev.copy_to_numpy(c)
|
|
29
|
+
print(result.reshape(n, n))
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For hosts without a GPU, pass `mock=True` to `spawn_device` and the
|
|
33
|
+
device replies `Unrecoverable("...mock mode")` for any kernel call —
|
|
34
|
+
useful for testing the surrounding plumbing in CI.
|
|
35
|
+
|
|
36
|
+
## Install
|
|
37
|
+
|
|
38
|
+
The wheel builds with [maturin](https://www.maturin.rs/):
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# from this directory
|
|
42
|
+
pip install maturin pytest numpy
|
|
43
|
+
maturin develop --release # builds + installs into the active venv
|
|
44
|
+
pytest tests/ # runs the no-GPU smoke suite
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
For a release wheel:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
maturin build --release --no-default-features --features extension-module
|
|
51
|
+
# wheel lands in target/wheels/
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The pure-Python facade (`python/atomr_accel/__init__.py`) re-exports
|
|
55
|
+
the native classes and exception types. Downstream libraries import
|
|
56
|
+
from `atomr_accel` and treat `atomr_accel._native` as private.
|
|
57
|
+
|
|
58
|
+
## Feature flags
|
|
59
|
+
|
|
60
|
+
The Rust crate matches `atomr-accel`'s feature gating so the wheel can
|
|
61
|
+
be built minimal or full:
|
|
62
|
+
|
|
63
|
+
| Feature | Adds |
|
|
64
|
+
|-------------------|-------------------------------------------------|
|
|
65
|
+
| (default) | `System`, `Device`, `GpuBuffer`, exceptions |
|
|
66
|
+
| `curand` | `RngGenerator` |
|
|
67
|
+
| `nvrtc` | `NvrtcKernel` |
|
|
68
|
+
| `cudnn` / `cufft` / `cusolver` / `cublaslt` / `nccl` | placeholder; future Python surfaces |
|
|
69
|
+
| `core-libs` / `training-libs` / `full-cuda` | aggregates |
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
maturin develop --features atomr-accel-py/curand,atomr-accel-py/nvrtc
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Public API
|
|
76
|
+
|
|
77
|
+
| Class / function | What it wraps |
|
|
78
|
+
|---------------------------------|-----------------------------------------------------|
|
|
79
|
+
| `atomr_accel.System.open(name)` | A `atomr_core::actor::ActorSystem` lifetime |
|
|
80
|
+
| `system.spawn_device(id, mock=)` | A `DeviceActor` (real or mock) |
|
|
81
|
+
| `device.allocate_f32(len)` | `DeviceMsg::AllocateF32` → `GpuBuffer` |
|
|
82
|
+
| `device.copy_from_numpy(buf, np)` | H2D `CopyFromHostF32` |
|
|
83
|
+
| `device.copy_to_numpy(buf)` | D2H `CopyToHostF32` → numpy `float32` array |
|
|
84
|
+
| `device.sgemm(a,b,c,m,n,k,...)` | cuBLAS SGEMM via `BlasActor` |
|
|
85
|
+
| `device.stats()` | `DeviceMsg::Stats` → `DeviceLoad` |
|
|
86
|
+
| `GpuBuffer.is_stale()` | Generation token check vs. `DeviceState` |
|
|
87
|
+
| `GpuRuntimeError` (and subclasses) | Typed `GpuError` mapping |
|
|
88
|
+
|
|
89
|
+
Every method blocks the calling thread until the underlying actor
|
|
90
|
+
replies (the GIL is released for the duration via `py.allow_threads`).
|
|
91
|
+
Async wrappers can be layered later via
|
|
92
|
+
`pyo3_async_runtimes::tokio::future_into_py`.
|
|
93
|
+
|
|
94
|
+
## How it works
|
|
95
|
+
|
|
96
|
+
Three pieces:
|
|
97
|
+
|
|
98
|
+
1. **A shared tokio runtime.** The first call to
|
|
99
|
+
`System.open(...)` initializes a multi-threaded scheduler; every
|
|
100
|
+
subsequent call reuses it. Implemented in `src/runtime.rs` via
|
|
101
|
+
`pyo3-async-runtimes::tokio::init`.
|
|
102
|
+
2. **The `_native` extension module.** `src/lib.rs` registers
|
|
103
|
+
`System`, `Device`, `GpuBuffer`, exceptions, and (feature-gated)
|
|
104
|
+
`RngGenerator` / `NvrtcKernel`. Each Python class wraps a typed
|
|
105
|
+
`ActorRef<...>` from atomr-accel and converts replies via
|
|
106
|
+
`errors::map_gpu`.
|
|
107
|
+
3. **The pure-Python facade** at `python/atomr_accel/__init__.py`. Hides
|
|
108
|
+
`_native`; documents the API; gives downstream libraries a stable
|
|
109
|
+
import path.
|
|
110
|
+
|
|
111
|
+
See [docs/python-bridge.md](../../docs/python-bridge.md) for the
|
|
112
|
+
full architecture write-up.
|
|
113
|
+
|
|
114
|
+
## License
|
|
115
|
+
|
|
116
|
+
Apache-2.0.
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
[workspace]
|
|
2
|
+
resolver = "2"
|
|
3
|
+
members = [
|
|
4
|
+
"crates/atomr",
|
|
5
|
+
"crates/atomr-core",
|
|
6
|
+
"crates/atomr-config",
|
|
7
|
+
"crates/atomr-macros",
|
|
8
|
+
"crates/atomr-testkit",
|
|
9
|
+
"crates/atomr-remote",
|
|
10
|
+
"crates/atomr-cluster",
|
|
11
|
+
"crates/atomr-cluster-tools",
|
|
12
|
+
"crates/atomr-cluster-sharding",
|
|
13
|
+
"crates/atomr-cluster-metrics",
|
|
14
|
+
"crates/atomr-distributed-data",
|
|
15
|
+
"crates/atomr-persistence",
|
|
16
|
+
"crates/atomr-persistence-query",
|
|
17
|
+
"crates/atomr-persistence-tck",
|
|
18
|
+
"crates/atomr-persistence-query-inmemory",
|
|
19
|
+
"crates/atomr-persistence-sql",
|
|
20
|
+
"crates/atomr-persistence-redis",
|
|
21
|
+
"crates/atomr-persistence-mongodb",
|
|
22
|
+
"crates/atomr-persistence-cassandra",
|
|
23
|
+
"crates/atomr-persistence-aws",
|
|
24
|
+
"crates/atomr-persistence-azure",
|
|
25
|
+
"crates/atomr-streams",
|
|
26
|
+
"crates/atomr-telemetry",
|
|
27
|
+
"crates/atomr-dashboard",
|
|
28
|
+
"crates/atomr-coordination",
|
|
29
|
+
"crates/atomr-discovery",
|
|
30
|
+
"crates/atomr-di",
|
|
31
|
+
"crates/atomr-hosting",
|
|
32
|
+
"crates/atomr-serialization-hyperion",
|
|
33
|
+
"xtask",
|
|
34
|
+
"examples/pingpong",
|
|
35
|
+
"examples/chat",
|
|
36
|
+
"examples/fault-tolerance",
|
|
37
|
+
"examples/event-sourced-counter",
|
|
38
|
+
"examples/cluster-pubsub-chat",
|
|
39
|
+
"examples/sharded-keyvalue",
|
|
40
|
+
"benches/ping_throughput",
|
|
41
|
+
"crates/atomr-profiler",
|
|
42
|
+
"crates/py-bindings/pycore",
|
|
43
|
+
"crates/py-bindings/pytestkit",
|
|
44
|
+
"crates/py-bindings/pyremote",
|
|
45
|
+
"crates/py-bindings/pycluster",
|
|
46
|
+
"crates/py-bindings/pycluster-tools",
|
|
47
|
+
"crates/py-bindings/pycluster-sharding",
|
|
48
|
+
"crates/py-bindings/pyddata",
|
|
49
|
+
"crates/py-bindings/pypersistence",
|
|
50
|
+
"crates/py-bindings/pystreams",
|
|
51
|
+
"crates/py-bindings/pycoordination",
|
|
52
|
+
"crates/py-bindings/pydiscovery",
|
|
53
|
+
"crates/py-bindings/pydi",
|
|
54
|
+
"crates/py-bindings/pyhosting",
|
|
55
|
+
]
|
|
56
|
+
exclude = ["akka.net"]
|
|
57
|
+
|
|
58
|
+
[workspace.package]
|
|
59
|
+
version = "0.1.0"
|
|
60
|
+
edition = "2021"
|
|
61
|
+
rust-version = "1.78"
|
|
62
|
+
license = "Apache-2.0"
|
|
63
|
+
repository = "https://github.com/rustakka/atomr"
|
|
64
|
+
homepage = "https://github.com/rustakka/atomr"
|
|
65
|
+
authors = ["atomr contributors"]
|
|
66
|
+
|
|
67
|
+
[workspace.dependencies]
|
|
68
|
+
# Async / runtime
|
|
69
|
+
tokio = { version = "1.39", features = ["full"] }
|
|
70
|
+
tokio-util = { version = "0.7", features = ["codec"] }
|
|
71
|
+
async-trait = "0.1"
|
|
72
|
+
futures = "0.3"
|
|
73
|
+
futures-util = "0.3"
|
|
74
|
+
pin-project-lite = "0.2"
|
|
75
|
+
|
|
76
|
+
# Logging / tracing
|
|
77
|
+
tracing = "0.1"
|
|
78
|
+
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
|
|
79
|
+
|
|
80
|
+
# Concurrency primitives
|
|
81
|
+
dashmap = "6"
|
|
82
|
+
parking_lot = "0.12"
|
|
83
|
+
crossbeam-channel = "0.5"
|
|
84
|
+
crossbeam-queue = "0.3"
|
|
85
|
+
flume = "0.11"
|
|
86
|
+
|
|
87
|
+
# Serialization
|
|
88
|
+
serde = { version = "1", features = ["derive"] }
|
|
89
|
+
serde_json = "1"
|
|
90
|
+
bincode = { version = "2.0.0-rc.3", features = ["serde"] }
|
|
91
|
+
bytes = "1"
|
|
92
|
+
|
|
93
|
+
# Protobuf (remote)
|
|
94
|
+
prost = "0.13"
|
|
95
|
+
prost-build = "0.13"
|
|
96
|
+
|
|
97
|
+
# Config
|
|
98
|
+
config = { version = "0.14", default-features = false, features = ["toml", "json", "yaml"] }
|
|
99
|
+
toml = "0.8"
|
|
100
|
+
|
|
101
|
+
# Error / utility
|
|
102
|
+
thiserror = "1"
|
|
103
|
+
anyhow = "1"
|
|
104
|
+
once_cell = "1"
|
|
105
|
+
|
|
106
|
+
# Testing
|
|
107
|
+
proptest = "1"
|
|
108
|
+
criterion = { version = "0.5", default-features = false, features = ["html_reports"] }
|
|
109
|
+
|
|
110
|
+
# Macros
|
|
111
|
+
proc-macro2 = "1"
|
|
112
|
+
quote = "1"
|
|
113
|
+
syn = { version = "2", features = ["full", "extra-traits"] }
|
|
114
|
+
|
|
115
|
+
# Python bindings
|
|
116
|
+
pyo3 = { version = "0.22", default-features = false }
|
|
117
|
+
pyo3-async-runtimes = { version = "0.22", default-features = false, features = ["tokio-runtime"] }
|
|
118
|
+
|
|
119
|
+
# UUID / time
|
|
120
|
+
uuid = { version = "1", features = ["v4", "serde"] }
|
|
121
|
+
chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }
|
|
122
|
+
|
|
123
|
+
# Persistence drivers (used by provider crates; kept here so versions stay in sync)
|
|
124
|
+
sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio-rustls", "macros", "any", "chrono", "uuid"] }
|
|
125
|
+
fred = { version = "10", default-features = false, features = ["i-std", "transactions"] }
|
|
126
|
+
mongodb = { version = "3" }
|
|
127
|
+
scylla = { version = "1" }
|
|
128
|
+
aws-config = { version = "1" }
|
|
129
|
+
aws-sdk-dynamodb = { version = "1" }
|
|
130
|
+
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
|
|
131
|
+
hmac = "0.12"
|
|
132
|
+
sha2 = "0.10"
|
|
133
|
+
base64 = "0.22"
|
|
134
|
+
url = "2"
|
|
135
|
+
|
|
136
|
+
# HTTP / web (atomr-dashboard)
|
|
137
|
+
axum = { version = "0.7", default-features = false, features = ["json", "ws", "http1", "tokio", "query", "matched-path"] }
|
|
138
|
+
tower = { version = "0.5", default-features = false, features = ["util"] }
|
|
139
|
+
tower-http = { version = "0.5", default-features = false, features = ["cors", "trace", "fs"] }
|
|
140
|
+
rust-embed = { version = "8" }
|
|
141
|
+
clap = { version = "4", features = ["derive"] }
|
|
142
|
+
|
|
143
|
+
# Internal
|
|
144
|
+
atomr = { path = "crates/atomr", version = "0.1.0" }
|
|
145
|
+
atomr-core = { path = "crates/atomr-core", version = "0.1.0" }
|
|
146
|
+
atomr-config = { path = "crates/atomr-config", version = "0.1.0" }
|
|
147
|
+
atomr-macros = { path = "crates/atomr-macros", version = "0.1.0" }
|
|
148
|
+
atomr-testkit = { path = "crates/atomr-testkit", version = "0.1.0" }
|
|
149
|
+
atomr-remote = { path = "crates/atomr-remote", version = "0.1.0" }
|
|
150
|
+
atomr-cluster = { path = "crates/atomr-cluster", version = "0.1.0" }
|
|
151
|
+
atomr-cluster-tools = { path = "crates/atomr-cluster-tools", version = "0.1.0" }
|
|
152
|
+
atomr-cluster-sharding = { path = "crates/atomr-cluster-sharding", version = "0.1.0" }
|
|
153
|
+
atomr-cluster-metrics = { path = "crates/atomr-cluster-metrics", version = "0.1.0" }
|
|
154
|
+
atomr-distributed-data = { path = "crates/atomr-distributed-data", version = "0.1.0" }
|
|
155
|
+
atomr-persistence = { path = "crates/atomr-persistence", version = "0.1.0" }
|
|
156
|
+
atomr-persistence-query = { path = "crates/atomr-persistence-query", version = "0.1.0" }
|
|
157
|
+
atomr-persistence-query-inmemory = { path = "crates/atomr-persistence-query-inmemory", version = "0.1.0" }
|
|
158
|
+
atomr-persistence-tck = { path = "crates/atomr-persistence-tck", version = "0.1.0" }
|
|
159
|
+
atomr-persistence-sql = { path = "crates/atomr-persistence-sql", version = "0.1.0" }
|
|
160
|
+
atomr-persistence-redis = { path = "crates/atomr-persistence-redis", version = "0.1.0" }
|
|
161
|
+
atomr-persistence-mongodb = { path = "crates/atomr-persistence-mongodb", version = "0.1.0" }
|
|
162
|
+
atomr-persistence-cassandra = { path = "crates/atomr-persistence-cassandra", version = "0.1.0" }
|
|
163
|
+
atomr-persistence-aws = { path = "crates/atomr-persistence-aws", version = "0.1.0" }
|
|
164
|
+
atomr-persistence-azure = { path = "crates/atomr-persistence-azure", version = "0.1.0" }
|
|
165
|
+
atomr-streams = { path = "crates/atomr-streams", version = "0.1.0" }
|
|
166
|
+
atomr-telemetry = { path = "crates/atomr-telemetry", version = "0.1.0" }
|
|
167
|
+
atomr-dashboard = { path = "crates/atomr-dashboard", version = "0.1.0" }
|
|
168
|
+
atomr-coordination = { path = "crates/atomr-coordination", version = "0.1.0" }
|
|
169
|
+
atomr-discovery = { path = "crates/atomr-discovery", version = "0.1.0" }
|
|
170
|
+
atomr-di = { path = "crates/atomr-di", version = "0.1.0" }
|
|
171
|
+
atomr-hosting = { path = "crates/atomr-hosting", version = "0.1.0" }
|
|
172
|
+
|
|
173
|
+
[profile.release]
|
|
174
|
+
opt-level = 3
|
|
175
|
+
lto = "thin"
|
|
176
|
+
codegen-units = 1
|
|
177
|
+
|
|
178
|
+
[profile.bench]
|
|
179
|
+
opt-level = 3
|
|
180
|
+
lto = "thin"
|
|
181
|
+
|
|
182
|
+
# Phase 0 lint baseline. See docs/idiomatic-rust.md (P-4).
|
|
183
|
+
#
|
|
184
|
+
# `todo`/`unimplemented` are denied workspace-wide because the audit
|
|
185
|
+
# found 0 sites; any regression breaks CI immediately.
|
|
186
|
+
#
|
|
187
|
+
# `unwrap_used`/`expect_used`/`panic` (and `print_stdout`/
|
|
188
|
+
# `print_stderr`/`dbg_macro` in library crates) are NOT promoted to
|
|
189
|
+
# `warn` here — the existing CI gate runs `cargo clippy ... -D
|
|
190
|
+
# warnings` and the audit found pre-existing sites that would break
|
|
191
|
+
# it. Instead, the per-crate counts are tracked by `cargo xtask
|
|
192
|
+
# audit` against `docs/reports/audit-2026-04.json`; CI runs
|
|
193
|
+
# `cargo xtask audit --check` and fails on regression. Phases that
|
|
194
|
+
# touch a given crate ratchet that crate's lints up to `warn`/`deny`
|
|
195
|
+
# once the corresponding sites are cleaned up (see Phase 13).
|
|
196
|
+
[workspace.lints.clippy]
|
|
197
|
+
todo = "deny"
|
|
198
|
+
unimplemented = "deny"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "atomr-cluster"
|
|
3
|
+
description = "Membership, gossip, reachability, vector clocks, and split-brain resolvers for atomr clusters."
|
|
4
|
+
version.workspace = true
|
|
5
|
+
edition.workspace = true
|
|
6
|
+
rust-version.workspace = true
|
|
7
|
+
license.workspace = true
|
|
8
|
+
repository.workspace = true
|
|
9
|
+
homepage.workspace = true
|
|
10
|
+
readme = "README.md"
|
|
11
|
+
documentation = "https://docs.rs/atomr-cluster"
|
|
12
|
+
keywords = ["actor", "cluster", "distributed", "gossip"]
|
|
13
|
+
categories = ["network-programming", "concurrency"]
|
|
14
|
+
|
|
15
|
+
[dependencies]
|
|
16
|
+
atomr-core = { workspace = true }
|
|
17
|
+
atomr-remote = { workspace = true }
|
|
18
|
+
atomr-config = { workspace = true }
|
|
19
|
+
tokio = { workspace = true }
|
|
20
|
+
serde = { workspace = true }
|
|
21
|
+
serde_json = { workspace = true }
|
|
22
|
+
bincode = { workspace = true }
|
|
23
|
+
parking_lot = { workspace = true }
|
|
24
|
+
thiserror = { workspace = true }
|
|
25
|
+
tracing = { workspace = true }
|
|
26
|
+
async-trait = { workspace = true }
|
|
27
|
+
|
|
28
|
+
[dev-dependencies]
|
|
29
|
+
atomr-testkit = { workspace = true }
|
|
30
|
+
|
|
31
|
+
[lints]
|
|
32
|
+
workspace = true
|
|
33
|
+
|
|
34
|
+
[package.metadata.docs.rs]
|
|
35
|
+
all-features = true
|
|
36
|
+
rustdoc-args = ["--cfg", "docsrs"]
|