Treffer: UNCOMPLICATE - SOFTWARE LIBRARIES FOR MACHINE LEARNING AND HIGH PERFORMANCE COMPUTING
ARR
openAccess
Serbian
1458441411
From OAIster®, provided by the OCLC Cooperative.
Weitere Informationen
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 effectiv