Giter VIP home page Giter VIP logo

jalla's Introduction

Jalla aims at providing high level functions for linear algebra computations,
which should be fast and easy enough to use.
It also contains a Haskell wrapper for cblas and lapacke, a C interface for LAPACK written by Intel.
Jalla is written and maintained by Christian Gosch (github at goschs dot de) and
was started as a little project to learn Haskell.

Jalla (probably) needs ghc, it has not been tested with other Haskell implementations.
It is developed with ghc > 7.0.

You need to have CBLAS and LAPACK installed, e.g. by installing ATLAS generated libraries
on you computer. 
In Ubuntu, there are packages for CBLAS and LAPACK which you can install with apt-get,
synaptic, or any other such tool.
Lapacke must be compiled "by hand".

0. Get the jalla sources; say they are located in the directory "jalla/"
1. If you do not have LAPACKE installed, follow the instructions 
   below under "Getting and building LAPACKE".
2. In jalla/, call 
    cabal configure
    cabal build
    cabal haddock
3. Look at the generated documentation, which should be quite informative now.

Please contact the author at github at goschs dot de if anything does not work!


Using Arch Linux
----------------
On a current Arch Linux, you just need to install
the lapack package, and you should be good to go.
LAPACKE is included in that package.


Getting and building LAPACKE
----------------------------
LAPACKE is part of LAPACK since version 3.4.
If you have that version, use that. Otherwise:

The following steps of getting and building 
LAPACKE can be done with the script get_lapacke.sh.
You must have *wget* and *scons* installed on your 
system.
From jalla's top level directory, call
  ./get_lapacke.sh
This should download lapacke and build it with our
SConstruct file, in the sub-directory ./lapacke.
You can source the file set_env.bash if you are using Bash,
in order to set the LD_LIBRARY_PATH and LIBRARY_PATH
variables.

Note that you might as well get the newest sources of LAPACK from netlib,
and copy the lapacke subdirectory from there over to the jalla directory.
Both ways worked for me.

If you want to get and build manually:
1. Get Lapacke at <http://www.netlib.org/lapack/lapacke.tgz>
   or at <http://www.netlib.org/lapack/#_standard_c_language_apis_for_lapack>
2. Unpack lapacke into "./lapacke" in the top jalla directory.
3. (Follow lapacke's instructions to build)
   /OR/ use the shiny new SCons file provided to build lapacke
   for use with jalla, which can be found in the lapacke/ sub-directory
   in the jalla source code.

   Note that now, you can also let the Setup.hs script do the work right before configuring:
    runhaskell Setup.hs configure --user --flags="build_lapacke"
   should build lapacke right before configuring jalla.   

   If you don't use the provided SCons file, 
   note that Jalla expects the LAPACKE_... naming scheme, i.e. LAPACKE in upper case,
   the rest in lower case. That scheme is called LAPACK_NAME_PATTERN_MC in the LAPACKE make.inc
   file.
   Jalla also expects the define LAPACK_COMPLEX_STRUCTURE in the same make.inc.
   This means that complex numbers are represented as C struct.   




Documentation
-------------
The haddock documentation is not complete, but not so bad anymore.
I will add more. The most important things are documented.


Status
------
The code may change in some places, and will definitely be growing as soon as I need more functionality.
Please let me know if you have suggestions.

Please also tell me if you have a greater interest in this project and want to participate!


License
-------
See the file LICENSE.

jalla's People

Contributors

cgo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

jalla's Issues

whats the status of this project? :)

it doesn't seem to be easy to build on unix but not linux systems. thoughts?

(context: one way or another, I want to help make sure theres a working bsd3 lin alg toolchain for haskell in the ecosystem by the end of the summe r)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.