UNCOMPLICATE - SOFTWARE LIBRARIES FOR MACHINE LEARNING AND HIGH PERFORMANCE COMPUTING
Апстракт
. 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 al...l 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.
Кључне речи:
Clojure, deep learning, programmingИзвор:
KONFERENCIJA VEŠTAČKA INTELIGENCIJA, 26-12-2023, 39-Издавач:
- Одељење техничких наука САНУ, Београд
- Математички институт САНУ, Београд
Институција/група
Fakultet organizacionih naukaTY - CONF AU - Dragan, Đurić PY - 2023-12-26 UR - https://rfos.fon.bg.ac.rs/handle/123456789/2641 AB - . 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. PB - Одељење техничких наука САНУ, Београд PB - Математички институт САНУ, Београд C3 - KONFERENCIJA VEŠTAČKA INTELIGENCIJA T1 - UNCOMPLICATE - SOFTWARE LIBRARIES FOR MACHINE LEARNING AND HIGH PERFORMANCE COMPUTING SP - 39 DO - https://www.mi.sanu.ac.rs/~ai_conf/AI_conf_Knjiga_apstrakata.pdf ER -
@conference{ author = "Dragan, Đurić", year = "2023-12-26", 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.", publisher = "Одељење техничких наука САНУ, Београд, Математички институт САНУ, Београд", journal = "KONFERENCIJA VEŠTAČKA INTELIGENCIJA", title = "UNCOMPLICATE - SOFTWARE LIBRARIES FOR MACHINE LEARNING AND HIGH PERFORMANCE COMPUTING", pages = "39", doi = "https://www.mi.sanu.ac.rs/~ai_conf/AI_conf_Knjiga_apstrakata.pdf" }
Dragan, Đ.. (2023-12-26). UNCOMPLICATE - SOFTWARE LIBRARIES FOR MACHINE LEARNING AND HIGH PERFORMANCE COMPUTING. in KONFERENCIJA VEŠTAČKA INTELIGENCIJA Одељење техничких наука САНУ, Београд., 39. https://doi.org/https://www.mi.sanu.ac.rs/~ai_conf/AI_conf_Knjiga_apstrakata.pdf
Dragan Đ. UNCOMPLICATE - SOFTWARE LIBRARIES FOR MACHINE LEARNING AND HIGH PERFORMANCE COMPUTING. in KONFERENCIJA VEŠTAČKA INTELIGENCIJA. 2023;:39. doi:https://www.mi.sanu.ac.rs/~ai_conf/AI_conf_Knjiga_apstrakata.pdf .
Dragan, Đurić, "UNCOMPLICATE - SOFTWARE LIBRARIES FOR MACHINE LEARNING AND HIGH PERFORMANCE COMPUTING" in KONFERENCIJA VEŠTAČKA INTELIGENCIJA (2023-12-26):39, https://doi.org/https://www.mi.sanu.ac.rs/~ai_conf/AI_conf_Knjiga_apstrakata.pdf . .