
GENIAL (GENeric Image Array Library)
GENIAL is a C++ class library for scientific computing which is highly optimized. It uses template techniques to achieve high performance. It uses the same conventions as the Standard Template Library (STL), consisting of containers, iterators, adaptors, function objects and algorithms. It is therefore easily portable.
The intensive use of templates makes it possible for the library to automatically adapt the calculations on containers to the specified problem in order to get the quickest execution. A parallelization of calculations is made possible by multi-threading algorithms and SIMD modules (MMX,SSE,SSE2,SSE3).
'Durable development' is the philosophy of the library. It demonstrates that generic programming is much easier than C and results in faster execution.
GENIAL is distributed freely under an open source license (GPL), and contributions to the library are welcome.
Features:
Array containers with many associated basic calculations,
Signal processing functions (FFT, DCT, convolution...),
Linear algebra functions (subset of BLAS...),
Image processing functions (motion estimations...)
Multi-threading algorithms, multi-threaded 2D-FFT, multi-threaded BLAS matrix product (new),
XML container,
MPEG-7 Descriptors (none released).
Platforms/Compilers:
Intel C++ Compiler: ICL (Windows), ICC (Linux)
The resulting execution is much
quicker than any other tested compiler.
Visual C++ 2005 and 2008 : VC8/VC9 (Windows) -
download Visual C++ 2008 Express
Previous versions cannot compile GENIAL, but they might succeed with the
latest service pack installed.
GCC (Unix/Linux/Windows/MacOs)
...?
Downloads:
genial-2.1.0.zip
Sources + documentation + samples
genial-2.1.0-vc9-sse2.zip,
genial-2.1.0-vc9-sse3.zip
or genial-2.1.0-vc9-sse3-mt.zip
Sources
+ documentation
+ samples + project for Visual Studio 2008 + compiled static library with
SSE2/SSE3/multi-threading instructions.
Beta Version:
genial-2.2.0.zip,
genial-2.2.0-vc9-sse2.zip,
genial-2.2.0-vc9-sse3.zip
or genial-2.2.0-vc9-sse3-mt.zip
You can use this beta without any concern: Only the multi-threaded
implementation might slightly change in the release.
Consequently to many demands, the projects for Windows are now delivered
with DLL instead of static libraries. Just write me enough e-mails to have a
significant opinion pool.
- Still quicker FFT on small matrices (≤
64x64) !!
- quicker "expression-templates"
- small syntactic corrections to please the newest GCC versions (≥4.3)
- and other minor changes...
Future versions might be further optimized for 64-bits OS and with the newest SIMD instructions (SSSE3, SSE4, SSE4.1)
Benchmarks:
FFT: GENIAL/FFTW, 1-2 threads
Matrix product: GENIAL/ATLAS, 1-2-4 threads
Suggestions, remarks, problems? Contact me!
Patrick LAURENT