• Stars
    star
    310
  • Rank 134,926 (Top 3 %)
  • Language
    Clojure
  • License
    Other
  • Created over 4 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Clojure library designed to aid in the implementation of high performance algorithms and systems.

dtype-next

Next generation high performance Clojure toolkit.

Clojars Project

Build Status

Checkout The:

New Functionality

Description

dtype-next provides a unified pathway for dealing with contiguous containers of primitive datatypes such as ints and floats. In addition it defines the basis for array programming as found in APL or numpy and a deep Java interface hierarchy with default methods to allow implementing new arrays painless. This interface hierarchy integrates with Java Streams, Spliterators, and various members of the java.util.function package. In addition it extends these concepts to native-heap based containers.

There are namespaces to allow elementwise operations across scalars and arrays, highly optimized reductions across index spaces, and algorithms that operate in index space for use when multiple buffers share an index space.

This library forms the numeric basis that underlies the 'tech.ml.dataset' system. It also defines a language independent ABI which allows zerocopy to C-based systems such as numpy, OpenCV, Julia, TVM and neanderthal.

Additional targets of this library:

  • Small runtime footprint. This is harder than it looks but the main thing is that the system needs to produce the right answers with as little type specific code as necessary.
  • Full native memory support. Malloc, free, memset, memcpy. Just the basics but guaranteed to be available.
  • Graal Native support.
  • Support for JDK-8 through JDK-17+ - JDK-16 is no longer supported. For jdk-17 usage, please see project.clj for required flags.
  • Blogpost, example and involved example of using the FFI architecture across JNA, JDK-16 and GraalNative.

Native Test

  • In order to get mmap working on the native test I had to grab the larray .so from the uberjar and load it manually. Not a big issue at the end of the day but I was having problems getting graal native to package resources.

Use the scripts to get graal and compile test. The code is located under native-test; so far reader/writing/copying all work for native and jvm heap datasets. Tensors work.

Graal Native

Test Dependencies

  • Intelยฎ Math Kernel Library - Use your system package manager to install libmkl-rt

License

Copyright ยฉ 2020 Chris Nuernberger

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.

More Repositories

1

charred

zero dependency efficient read/write of json and csv data.
Clojure
194
star
2

ham-fisted

High performance HAMT
Clojure
148
star
3

libjulia-clj

Julia bindings for Clojure -- Currently somewhat unstable --
Clojure
103
star
4

tmdjs

High Performance Data Processing for ClojureScript
Clojure
98
star
5

avclj

libavcodec pathways for Clojure.
Clojure
57
star
6

cljs-lambda-gateway-example

Simple bare-bones example of launching a full website using API gateway and AWS lambda
Clojure
53
star
7

facial-rec

Facial rec tech
Python
31
star
8

depsviz

Graphiz visualization for deps.edn
Clojure
22
star
9

streams

Simple monte carlo simulation system based on lazy non-caching streams.
Clojure
20
star
10

ames-house-prices

exploring aimes house prices comp
Jupyter Notebook
20
star
11

lambinator

Clojure 3d graphics editing platform
Clojure
10
star
12

ds-graal

Example of tech.ml.dataset and graalvm reading a CSV and writing Parquet.
Shell
9
star
13

berger-emacs

clean emacs setup for clojure
Emacs Lisp
8
star
14

fast-json

Clojure
7
star
15

ham-scripted

High performance js primitives
JavaScript
7
star
16

simpledata

A simple example project with a few datasets and sql bindings
Clojure
6
star
17

kmeans-mnist

An example of Clojure/Julia integration.
Clojure
6
star
18

mkl

Basic mkl bindings based on dtype-next's ffi system
Clojure
3
star
19

garmin-fit-clj

Clojure parser for garmin fit files
Clojure
2
star
20

thinksm

Thinktopic state machine implementation.
Clojure
1
star
21

siemplify-graal-native-example

Shell
1
star
22

benchmark

Simple benchmarking tools
Clojure
1
star
23

d3meetup

Working through a bunch of garmin/strava data for d3 meetup vega demonstration
Jupyter Notebook
1
star
24

difftest

Comparison of diff-1d algorithms
Clojure
1
star