XCOMPUTE
Xplicit Computing's Objective Massively-Parallel Unified Technical Environment
XCOMPUTEâ„¢ is the only-of-its-kind peer-to-peer scientific computing platform enabling developers and users to build complex things using system and algorithm building blocks. The XC platform facilitates collaborative digital environments by leveraging advanced software with CPU, GPU, and network technologies.
Systems (nouns) and Algorithms (verbs)
XCOMPUTE aims to be infrastructure for an integrated engineering environment and digital twin platform. XC acts as a hypervisor and information Rosetta Stone across teams' digital projects, encouraging the integration of files and code into a single source-of-truth (facilitating integration with other software across the team). Users progressively resolve concepts via systems and subsystems, collaboratively assigning relevant attributes, performing simulations, and optimizing objectives. These systems and algorithms can be copied and/or reused as desired.
Xplicit Computing's strategy is to first address critical bottlenecks in CAE/PLM, including: systems definition and requirement capture, spatial processing (such as mesh generation), performant data concurrency, intra- and inter-system coupling, global optimization, multi-physics, and digital automation. Progressively-sophisticated modules and capabilities will be released on a development schedule.
Your input is welcome as we work to deliver more functionalities, starting with structural and thermal FEM, followed by compressible FVM, incompressible LBM, and electromagnetism. The expectation is that there will be compounding capability due to high level-of-integration.
Unified CAE Architecture
XCOMPUTE-SERVER (machine backend) [libopencl] |
XCOMPUTE-CLIENT (human interface) [libopengl, libqt5] |
XC-COMMON (wire protocol) [libomp, libz, libssl, libcrypto] |
|
XC-MESSAGES (file schema) [libstdc++, libprotobuf] |
XC applications and libraries are written in contemporary C++, utilizing four software abstraction layers: Messages schema, Common protocol and the Server and Client applications. A fourth SIMD runtime layer is dynamically compiled and deployed from Server and Client apps using OpenCL / OpenGL. Where possible, XC machinery is procedural (permitting dynamic computation with minimal underlying memory/complexity) and polymorphic (enabling functional specialization of types).
Server-Client Platform
The simulation state machine is hosted on one or more Servers identified by cryptographic certificates. Host machines are typically GPU-accelerated workstations managed by your team or 3rd-party SaaS provider. Teammates access and manipulate the server state through one or more interactive Client apps on GPU-accelerated laptops and desktops using the built-in xcompute protocol.
Common Submodules
Common underlying socket transport protocols (on IANA-registered port 11235) facilitate "get", "set", and "do" functions between computing sessions, moving commands and payloads across computing sessions.
To access project setup and data, XC objects are serialized and deserialized using our free and open Messages library, based on Google's popular Protocol Buffer compiler, acting as a Rosetta Stone across programming languages. This offers many methods to directly integrate XC files. The Messages repository contains a C++ and Python example "hello_vector" to demonstrate save & load upon vectorized binary data.
For additional software platform design information, please see the XCOMPUTE whitepaper.