Please use this identifier to cite or link to this item: https://rfos.fon.bg.ac.rs/handle/123456789/2641
Title: UNCOMPLICATE - SOFTWARE LIBRARIES FOR MACHINE LEARNING AND HIGH PERFORMANCE COMPUTING
Authors: Dragan, Đurić
Keywords: Clojure, deep learning, programming
Issue Date: 2023
Publisher: Одељење техничких наука САНУ, Београд
Математички институт САНУ, Београд
Abstract: . We present Uncomplicate, a family of functional software libraries written in Clojure
that runs on central processing units (CPU) and graphic processing units (GPU). Among others,
this includes the following libraries: Deep Diamond, a tensor-based deep neural networks library,
Neanderthal, which handles vectors, matrices, and linear algebra, and ClojureCUDA, a functional
library for GPU programming.
What sets Uncomplicate libraries apart is that they offer relevant constructs at various levels of
abstraction, from low-level bindings to the high-level domain-specific code, without
compromising neither elegance nor performance. Despite being written in Clojure, a high-level
dialect of Lisp, they offer full performance of the state of the art lowest level operations provided
by the underlying vendor libraries of low-level operations such as Nvidia’s cuDNN (CUDA Deep
Neural Networks) and Intel’s MKL (Math Kernel Library), on CPU as well as GPU.
The implementation details of all Uncomplicate libraries are freely accessible online at
https://github.com/uncomplicate, including the whole history of development in Git
repositories. All libraries are available as free software under Eclipse Public License.
Compared to mainstream alternatives, such as Python’s NumPy, TensorFlow, Pytorch, and similar
libraries, we achieved comparable and better computation performance (where applicable). The
drawback is, of course, that we cannot even approach the popularity and invested resources that
the Python ecosystem receives. On the other hand, Uncomplicate libraries cover more
functionality (for features that are applicable) with orders of magnitude less code. As an example,
Neanderthal, a rough match to NumPy, is only 20,000 lines of code in total compared to NumPy’s
400,000. In addition to that, Neanderthal supports CPU, CUDA GPU, OpenCL GPU, and OpenCL
CPU execution, while NumPy’s core implementation only supports running on CPU. Uncomplicate
libraries are implemented more effectively, backed by the fact that it has been developed by one
developer in free time after work, while mainstream equivalents are developed by multitude of
full-time employees. It is a sort of an apples to oranges comparison, we admit, but we are open
to reviews and further suggestions.
URI: https://rfos.fon.bg.ac.rs/handle/123456789/2641
Appears in Collections:Radovi istraživača / Researchers’ publications

Show full item record

Google ScholarTM

Check

Altmetric


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.