/qpl-java

Primary LanguageJavaOtherNOASSERTION

DISCONTINUATION OF PROJECT.

This project will no longer be maintained by Intel.

Intel will not provide or guarantee development of or support for this project, including but not limited to, maintenance, bug fixes, new releases or updates. Patches to this project are no longer accepted by Intel. If you have an ongoing need to use this project, are interested in independently developing it, or would like to maintain patches for the community, please create your own fork of the project.

Contact: webadmin@linux.intel.com

Java* Native Interface binding for Intel® Query Processing Library

OVERVIEW

This library will allow Java* applications to communicate with the Intel® Query Processing Library (Intel® QPL) , for use with Intel® In-Memory Analytics Accelerator (Intel® IAA) , to improve performance by accelerating operations like compression and decompression.

HOW TO BUILD & RUN

PREREQUISITES TO BUILD

The following are the prerequisites for building this Java library:

  1. Intel® QPL library - To build, Intel® QPL follow Installation. Make sure Intel® QPL library installed into either "/usr/local/lib64" or "/usr/local/lib". This library has been tested with Intel® QPL version 1.3.1
  2. Java 11 or Java 17.
  3. Build tools - g++, CMake , Maven and clang (for fuzz testing).

PREREQUISITES TO RUN

This library assumes the availability of Intel® IAA hardware.

For more information about the Intel® In-Memory Analytics Accelerator, refer to the IAA spec on the Intel® 64 and IA-32 Architectures Software Developer Manuals page.

STEPS TO BUILD

Once all the prerequisites have been satisfied:

$ git clone https://github.com/intel/qpl-java.git
$ cd qpl-java
$ mvn clean package

Available Maven commands include:

  • compile - builds sources
  • test - builds and runs tests
  • site - generates Surefire report into target/site
  • javadoc:javadoc - builds javadocs into target/site/apidocs
  • package - builds jar file into target directory
  • spotless:check - check if source code is formatted well.
  • spotless:apply - fixes source code format issues.

LIBRARY TESTING

This library supports both functional and Fuzz testing.

FUNCTIONAL TEST

To run all the functional tests, execute the following command:

mvn clean test
FUZZ TEST

Jazzer tool is used to enable fuzz testing on this project.

see here for Jazzer dependencies.

To run the Fuzz tests, execute the following command:

mvn clean test -Dfuzzing=true

The above command executes each Jazzer Fuzz tests for 10 seconds. To run for a longer duration, modify -max_total_time fuzzParameter in pom.xml

USING THIS LIBRARY IN EXISTING JAVA APPLICATIONS

WITH MAVEN

qpl-java is available from the Maven central repository. Add the following dependency to your pom.xml:

<dependency>
    <groupId>com.intel.qpl</groupId>
    <artifactId>qpl-java</artifactId>
    <version>1.0.0</version>
</dependency>

WITH CLASSPATH

To use this library in your Java application, build the qpl-java jar and include its location in your Java classpath. For example:

$ mvn package
$ javac -cp .:<path>/qpl-java/target/qpl-java-<version>.jar <source>
$ java -cp .:<path>/qpl-java/target/qpl-java-<version>.jar <class>

Alternatively, include qpl-java's target/classes directory in your Java classpath and the target/cppbuild directory in your java.library.path. For example:

$ mvn compile
$ javac -cp .:<path>/qpl-java/target/classes <source>
$ java -cp .:<path>/qpl-java/target/classes -Djava.library.path=<path>/qpl-java/target/cppbuild <class>

CONTRIBUTING

Thanks for your interest! Please see the CONTRIBUTING.md document for information on how to contribute.

Contacts

For more information on this library, contact Kokoori, Shylaja (shylaja.kokoori@intel.com) or Suvarna Reddy, Sevanthi (sevanthi.suvarna.reddy@intel.com) .

 

* Java is a registered trademark of Oracle and/or its affiliates.