Code Monkey home page Code Monkey logo

infinileap's Introduction

Developed by the operating systems group of the department of computer science of the Heinrich Heine University Düsseldorf, Infinileap aims at providing a simple object-oriented interface between Java and the native ucx library by leveraging Project Panama's Foreign Function Interface and Foreign-Memory Access API.

🚧   Notice

Infinileap is a research project under development. We do not recommend using the system in a production environment. Expect to encounter bugs. However, we are looking forward to bug reports and code contributions.

🚀   Demos

The project includes several sample applications that can be run from the command line. In order to run them, a distribution of the example module must first be created using Gradle. By default, Gradle installs the distribution inside the module's build folder. This behavior can be customized with the installPath property

# Install the distribution inside ${HOME}/infinileap
./gradlew example:installDist -PinstallPath="${HOME}/infinileap"

# Switch into ${HOME}/infinileap
cd "${HOME}/infinileap"

After Gradle has completed the build, the examples can be run from within the specified location.

All demos require a server as well as a client and should therefore be executed in two separate console windows. The addresses to be used for establishing the connection can be specified via the following program arguments.

Name Type Side Description Example
-c / --connect java.net.InetSocketAddress CLIENT The server's address and port 127.0.0.1:2998
-l / --listen java.net.InetSocketAddress SERVER The address the server should listen on 127.0.0.1:2998

It is also possible to omit the port. In this case the default value 2998 is used.

Messaging Demo (Source)

This demo exchanges a message between the server and the client, which is then output to the console.

  • Server Side

    ./bin/infinileap messaging --listen 127.0.0.1
  • Client Side

    ./bin/infinileap messaging --connect 127.0.0.1

Streaming Demo (Source)

This demo exchanges a stream of data between the server and the client, which is then output to the console.

  • Server Side

    ./bin/infinileap streaming --listen 127.0.0.1
  • Client Side

    ./bin/infinileap streaming --connect 127.0.0.1

Memory Access Demo (Source)

This demo directly reads the contents of a buffer residing inside the remote server's memory and prints it out to the console.

  • Server Side

    ./bin/infinileap memory --listen 127.0.0.1
  • Client Side

    ./bin/infinileap memory --connect 127.0.0.1

Atomic Operation Demo (Source)

This demo atomically increments a value residing inside the remote server's memory and prints out the result to the console.

  • Server Side

    ./bin/infinileap atomic --listen 127.0.0.1
  • Client Side

    ./bin/infinileap atomic --connect 127.0.0.1

⚠️   Known issues

  • If your JDK is not installed in one of the default locations, Gradle can be instructed to look in a custom location. To enable this feature the org.gradle.java.installations.paths property has to be set within your global gradle.properties file usually located inside ${HOME}/.gradle.

    org.gradle.java.installations.paths=/custom/path/jdk20
    
  • The HotSpot VM uses the SIGSEGV signal for its own purposes, which may interfere with signal handlers installed by the ucx library. Fortunately, ucx's signal handlers can be disabled by using an undocumented environment variable (see MPI.jl issue #337).

    UCX_ERROR_SIGNALS=""
    
  • The ucx library may fail at parsing some locale-dependent configuration values (e.g. numbers with decimal separators).

    parser.c:928  UCX  ERROR Invalid value for MEM_REG_GROWTH: '0.06ns'. Expected: time value: <number>[s|us|ms|ns]
    uct_md.c:270  UCX  ERROR Failed to read MD config
    

    Setting the locale to English might fix this.

🔧   Requirements

📜   License

This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.

infinileap's People

Contributors

fruhland avatar jbokman avatar krakowski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

fruhland jbokman

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.