1. 一般问题什么是CULA ?CULA是由EM Photonics公司开发的GPU加速线性代数库,包含了一组不断增加的LAPACK函数。 什么是LAPACK?LAPACK代表线性代数包。它是行业标准计算库,已经发展15年多。它是由许多解决因式分解、分解、系统解算器和特征值等问题的程序组成。为什么用GPU?现在的GPU不仅仅是处理图像问题。图形处理器的大规模并行计算架构有能力来运行计算密集型通用软件。经过正确的实施,许多应用程序都可以移植到GPU上,让计算速度大幅度提升 哪些GPU能运行CULA? CULA 需要CUDA支持的nVIDIA的GPU.此外,全系列NVIDIA Tesla产品线以及最新的NVIDIA Quadro工作站显卡是支持CULA的。这些都可以在NVIDIA官网上找到所支持的产品列表。 CULA有多快?实际的增速在很大程度上取决于算法、数据集的大小以及您比较的基准。当基准是与一个独立的LAPACK执行想比较,CULA程序通常为了40倍-200倍的速度提升。 在大多数情况下,将CULA与用Intel的数学内核库(Math Kernel Libary)执行LAPCK比较,在最新的Intel i7处理器上运,会有3倍到10倍的速度提升。 数据的精确度如何? 比较线性代数例程的结果是一个不同寻常的任务。不同的算法需要用不同的方式来验证,然而,当比较各种范数,残差,和重组,我们通常看到结果具有精确的机器精度我对GPU编程所知甚少,CULA能帮助我吗?CULA界面在设计的时候就考虑了简单性。用户不需要考虑GPU内存,也不需要知道任何GPU编程细节。只需要简单掉调用一个CULA函数,程序会为您做好所有的GPU管理工作,比如分配、生成工作区、内存传输等都会很好地照顾到。 谁开发了CULA? CULA 是由EM Photonics 公司在NVIDIA的协助下开发出来的。更多的信息可访问官方网站。2. 版本问题CULA三种版本有什么不同? CULA 基础版 CULA 高级版以及CULA商业版本提供不同层次的功能、技术支持和使用权限。CULA基础版不需要任何费用,用户可以不受任何限制使用并且发布出去。 CULA高级版和商业版提供额外的程序,可以让企业自己用,或者为他们的客户创建GPU加速产品时使用。我需要什么版本我们提供的这三个CULA版本是针对不同的用户需求。CULA基础版是专为技术爱好者和学术机构研究用的免费版本。这个版本只提供单精度和一些常用的LAPACK程序组合,仅仅在官方技术论坛里提供技术支持。CULA高级版是为所有需要在他们的研究项目里进行GPU线形代数加速的客户提供的高级库,这个版本额外提供了一些支持单精度和双精度的程序。CULA商业版本是针对那些需要将我们的库放在他们自己的软件里进行销售的客户。这个版本包含了免版税批量许可价格,并且包含所有CULA高级版本的功能以及重新分配的权利,将直接获得我们CULA开发团队的技术支持。什么是您们的重新分配权利。 CULA基础版本是对所有用户免费。CULA高级板适合于内部开发或者研究为目的的。CULA商业版本提供了重新分配的权利以及扩展的技术支持,可以将CULA整合到您自己的软件中。 3. 关于购买当我购买CULA,一年使用权限里包含了哪些? 当您购买了CULA一年使用权限,一年内您可以获得软件的更新版本以及技术支持。1年结束的时候,您可以支付额外的一点费用继续使用CULA。如果你的购买已经到期,您可以继续免费使用您到期前的这个版本。 我可以为我的集群或一组电脑购买CULA吗? CULA是按照电脑的数量进行授权的。如果您需要为您的集群购买CULA,那您需要为您的每一个节点购买一个授权。一个节点的授权可以照顾到一定数量的电脑或者集群。 4. 关于技术问题CULA支持什么操作系统? 我们提供32位和64位Windows和Linux版本。我们的开发团队已经在下列32位和64位操作系统上做了测试: o Windows XPo Windows Vistao Windows 7o Ubuntu 10.10o Red Hat Enterprise Linux 5.3o Fedora 11o Mac OS X是否可以得到CULA的源代码? No. 我们只提供安装预编译的库和开发一个CULA应用所需要的头文件。 是否支持双精度?任何NVIDIA9000系列以上的产品都支持双精度。早期的架构只支持单精度。支持双精度的GPU全系列产品列表可以在CUDA编程手册里找到。 复数和双精度数据类型支持吗? 所有CULA版本都支持单精度复数类型,双精度复数类型支持包括在CULA PREMIUM和Commerical中,只有支持双精度的GPU卡才能执行双精度复数类型,CULA Bascic 只支持单精度实数类型CULA如何存储数据?为了保持与原有Fortran LAPACK接口的兼容性,所有CULA函数都使用column-major 数据.关于这一点可以参考CULA编程者指南的矩阵存储部分内容。 为什么CULA函数都指向主机内存而不是GPU内存? 对于绝大多数CULA函数,内存管理占了总处理时间极小部分。我们的CULA框架有一个优化的内存管理系统,试图最大限度地通过适当调整内存的边界内存带宽。关于这一点可以参考CULA编程者指南中的“CULA编译”内容。 为什么CULA界面与LAPACK有些不同? LAPACK最初是设计用于运行15年前FORTRAN的系统。此后,许多编程技术已经大大改变,瓶颈已经转移。基于这些原因,我们做了一些细微变化,以简化LAPACK接口,同时增加的功能。更多的信息可以参考CULA编程者指南中“CULA与LAPCK不同点”.我需要多大GPU内存?具体需要多大的内存取决于您的算法。通常来说您需要足够多的内存来保存数据集以及一些额外工作区里的字节。举例来说,一块1GB内存的GeForce™卡可以存储11K x 11K双精度或者16K x 16K 单精度矩阵。 5. 故障排除我需要的一个LAPACK例程没有,我该怎么做? LAPACK是一个巨大的库,我们只是写了这个库里的几个子集而已。CULA高级版和商业版还在不断地增加新的函数。如果您想看到增加了哪些函数,可以在论坛上与我们联系,给我们的开发人员提出宝贵的意见和建议。 我遇到问题,我该如何获得帮助? 如果您在使用CULA基础版本中遇到了问题,我们只是提供论坛里的技术支持。对于CULA高级版的用户可以在个人技术支持论坛里提交问题,获得我们个性化的帮助。 我想我找到了一个bug,我该怎么做?首先,请确保您遇到软件缺陷,而不是相关的硬件故障或驱动程序问题。如果你仍然有理由相信你遇到一个错误,请我们的论坛上发表了对问题的描述,一个展示了错误代码片段以及对系统中发生的错误信息。