Concurnas for Scientific Computing


Concurnas is useful for those doing Scientific Computing for the following reasons and more!

Easy to learn and high performance

The syntax of Concurnas is greatly inspired by languages such as Python - which is widely recognized as one of the easiest programming languages to learn.

Dynamically typed languages are often easy to learn but come with a performance penalty, not so with Concurnas as it runs upon the Java virtual Machine (JVM), thus giving you access to the phenomenal high performance of the JVM.

GPU computing

Concurnas has first class citizen support for GPU computing. Whether it be applications within machine learning, artificial intelligence or other compute heavy single instruction multiple data problems, GPU computing has become integrated with scientific computing. This is due to the fact that its often possible to achieve computational speed ups of over two orders of magnitude (100x) vs conventional single core CPU computation. Concurnas is able to achieve this whilst allowing code to be written in idiomatic Concurnas, meaning that it's not necessary for one to switch into C/C++ to perform GPU computation, thus making GPU computation accessible for non software engineers.

Off Heap Memory

Concurnas has built in support for Off heap memory. Scientific computing often involves working with large data sets. This feature of Concurnas makes it very easy to work with large data sets which cannot otherwise fit in memory all at the same time.

Distributed Computing

Concurnas has built in support for distributed computing. Often in scientific computing coding testing and development is done locally one one's machine, with final calculations being performed on shared compute clusters which have access to orders of magnitude more compute resource than that which is available to an individual researcher.

Concurnas makes tapping into remote, distributed, resources a simple process both from a syntactical perspective and from a code distribution perspective. Syntax wise the distributed computing model extends upon the concurrency model built into Concurnas, this minimizes the changes (if any!) that are required in order to perform remote computation. Similarly code is distributed automatically in Concurnas, this includes direct and transitive dependencies.

Vectorization

Vectorization is a handy method commonly used in scientific computing for succinctly and easily writing code which will be applied to each element of an array, list, matrix or other n dimensional array. This makes parallel operations on data as easy to implement as a single line of code, whereas without vectorization would require multiple iterative for loops etc.

The Concurnas implementation of vectorization is both smart and efficient. Concurnas is able to infer when vectorization should take place in order to satisfy an operation and automatically apply it. Secondly, when vectorized operations are linked together Concurnas does not waste memory with intermediate results, rather it optimizes to ensure as little memory is used as possible.

Extensibility

Concurnas is an extensible language. It is possible to embed virtual any programming language directly within Concurnas code. If one has calculations implemented in FORTRAN, or an entirely new/rare programming language, this can be supported within Concurnas.

DSL's

Scientific computing is an area which often benefits from Domain Specific Languages (DSL's). Since it is most usually non software engineers who are performing scientific computing any method by which the cognitive gap can be reduced between the problem domain and computer programming language is welcomed! DSL's help to greatly reduce this gap hence their popularity.

Concurnas includes a number of useful tools including operator overloading, extension functions and expression lists which can be used for DSL implementation.

Open Source

Concurnas is free and open source, licensed under the popular and permissive MIT license.

Support

Concurnas Ltd. was established in 2018 as a commercial entity in order to support the ongoing development of the Concurnas programming language as open source and to provide commercial support for Concurnas and consulting

In addition to paid support, Concurnas Ltd. supports the free Concurnas support community