
1. General
What is CULA?
CULA is EM Photonics' GPU-accelerated numerical linear algebra library that contains a growing list of LAPACK functions.
What is LAPACK?
LAPACK stands for Linear Algebra PACKage. It is an industry standard computational library that has been in development for over 15 years and provides a large number of routines for factorization, decomposition, system solvers, and eigenvalue problems.
Why GPUs?
Modern GPUs can process more than graphics. The massively parallel architectures of graphics processors have the capacity to run computationally intensive, general-purpose software. With proper implementation, many applications can see large speed-ups when ported to the GPU.
Which GPUs does CULA run on?
CULA requires a CUDA-enabled NVIDIA GPU. These include the GeForce 8, 9, 100, and 200 series GPUs with a minimum of 256MB of dedicated graphics memory. Additionally, the entire NVIDIA Tesla line supports CULA as well as a number of the newer NVIDIA Quadro workstation graphics cards. The full list of supported devices can be found from NVIDIA.
What is CUDA?
CUDA is NVIDIA’s framework for using their GPUs as general purpose computing devices. More information can be found in NVIDIA’s CUDA FAQ.
Which GPU will get me the best results?
Currently, the NVIDIA® GeForce™ GTX 285 and Tesla™ C1060 are the fastest CUDA-enabled single-GPU devices available.
How fast is CULA?
The actual speed-up depends heavily on the algorithm, the size of your data set, and what you are benchmarking against. When benchmarking against a standalone LAPACK implementation, CULA routines typically show a 40x to 200x speed-up. In most cases, there is a 3x to 10x speed-up when comparing CULA to Intel’s Math Kernel Library implementation of LAPACK running on their latest Core i7 processor. We have assembled several performance charts comparing CULA to other implementations of LAPACK.
How accurate are the results?
Comparing results from linear algebra routines can be a non-trivial task. Different algorithms need to be validated in different fashions. However, when comparing various norms, residuals, and reconstructions, we typically see results that are accurate to machine precision.
I don’t know anything about GPU programming. Can CULA help me?
The CULA interface was designed with simplicity in mind. There is no need for the user to manage GPU memory or know any specifics about GPU programming. Simply call a CULA function and the framework will do all the GPU management for you. The allocations, workspace creations, and memory transfers are all taken care of under the hood.
Where do I get CULA?
Currently, you can visit our Beta page for information on obtaining the CULA Basic Beta. When it is released, you will be able to download CULA Basic for free from our Download page. Starting September 30, you will also be able to purchase CULA Premium from our online store and CULA Commercial by contacting us.
Who developed CULA?
CULA was developed by EM Photonics in a partnership with NVIDIA. More information about the CULA Team can be found on the About Us page.
2. Versions
What are the differences between the three versions?
CULA Basic, CULA Premium, and CULA Commercial offer different levels of functionality, support, and distribution rights. See our Versions page for more information.
Which version do I need?
We offer three versions of CULA to suit a wide range of users. We have created a chart to help you decide which version is right for you.
What are your redistribution policies?
CULA Basic is free for all uses. CULA Premium is for internal development and research purposes only. If you want to include the CULA library in your own application, CULA Commercial offers redistribution rights and extensive support to integrate CULA into your own software.
3. Purchasing
What is included in the "one year subscription" when I purchase CULA?
By purchasing a one year subscription to CULA, you are entitled to one year of software updates and support. At the end of the year, you may renew your subscription for an additional fee. When your subscription has expired, you are free to continue to use the most recent version of CULA prior to expiration.
Are educational discounts available?
With valid student identification, we offer a full version of CULA Premium with limited support at $95 per license. For more information, see our academics page.
4. Technical
Which operating systems are supported?
We have installers available for 32-bit and 64-bit versions of Windows and Linux. Our development team has tested CULA on 32-bit and 64-bit versions of the following operating systems:
- Windows XP
- Windows Vista
- Windows 7
- Ubuntu 9.04
- Red Hat Enterprise Linux 4.7
- Red Hat Enterprise Linux 5.3
- Fedora 11
- Mac OS X
Is CULA's source code available?
No. Our installers only provide pre-compiled libraries and the headers needed to develop a CULA application.
Where can I find out more about how to program with CULA?
A programmer's guide is included in the CULA distribution. For an online version of this guide, see the CULA Programmer's Guide.
Where can I find a function reference?
A full reference manual is included in the CULA distribution. For an online version of this guide, see the CULA Reference Manual.
What tools were used to create CULA?
CULA was developed using components from NVIDIA's CUDA and CUBLAS libraries, elements from Intel's MKL, and is based on algorithms from the original Netlib LAPACK implementation.
Is double precision supported?
Any NVIDIA device built upon the G200 architecture will support double precision. Previous architecture generations only support single precision. The full list of GPUs that support double precision can be found in the CUDA Programming Guide.
Are complex and double-complex data types supported?
All versions of CULA support single-precision complex data. Double-precision complex support is included in both CULA Premium and CULA Commercial. Only GPUs that support double-precision can work with double-precision complex data. The CULA Basic Beta only supports single-precision real data.
How does CULA store data?
In order to maintain compatibility with the original FORTRAN interface of LAPACK, all CULA functions use column-major data. For more information about this, see the Matrix Storage section of the CULA Programmer's Guide.
Why do CULA functions take pointers to host memory instead of GPU memory?
For the vast majority of CULA functions, memory management accounts for an insignificant portion of total processing time. Our CULA framework has an optimized memory management system that attempts to maximize memory bandwidth by properly aligning memory boundaries. More information can be found in the Compiling With CULA section of the CULA Programmer's Guide.
Why is the CULA interface different from LAPACK?
LAPACK was originally designed for systems running FORTRAN over 15 years ago. Since then, many programming techniques have drastically changed and bottlenecks have shifted. For these reasons, we have made some slight changes to simplify the interface of LAPACK while adding functionality. For more details about these changes, see the Differences Between CULA and LAPACK section of the CULA Programmer's Guide.
How much GPU memory do I need?
The exact memory size you need depends on your algorithm, but you will typically need enough memory to hold the data set and a few extra megabytes for various workspaces. For example, a GeForce™ card with 1 GB of memory can store up to a 10k by 10k matrix.
5. Troubleshooting
I’m having problems with my GPU and/or video drivers. Can you help?
Problems specific to GPU devices and their drivers should be handled by NVIDIA. The latest drivers can always be obtained directly from NVIDIA on their Download page.
An LAPACK routine I need is missing. What should I do?
LAPACK is a gigantic library and we have only written a subset of the entire package so far. CULA Premium and CULA Commercial are constantly growing as new functions are added. If there is function you would like to see added, contact us on our forums and voice your opinion on what the developers should work on next.
I’m having problems. Where can I get help?
If you are having a problem with CULA Basic, we offer community-based support on our forums. CULA Premium users can submit support ticket through our website to receive personalized help.
I think I found a bug. What should I do?
First, be sure that you are experiencing a software bug and not an issue related to faulty hardware or drivers. If you are still reasonably sure you have encountered a bug, please post on our forums with a description of the problem, a snippet of code demonstrating the error, and information about the system where the bug occurred. Alternatively, CULA Premium users can submit a support ticket with the relevant information.
6. Other Routines
I’d like to accelerate something not contained in LAPACK to run on GPUs. Can you help me?
The CULA Team has experience in optimizing and implementing a wide spectrum of algorithms using GPU-acceleration. Visit our Consulting page to see how we can help you.
