Fassi通过CUDA支持GPU,要求3.5以上算力,float16要求CUDA7.5+

通过index_gpu_to_cpu可以将索引从GPU复制到CPU,index_cpu_to_gpu 和 index_cpu_to_gpu_multiple可以从CPU复制到GPU,并支持GpuClonerOptions来调整GPU存储对象的方式。

GpuIndexFlat, GpuIndexIVFFlat 和 GpuIndexIVFPQ分别是IndexFlat, IndexIVFFlat 和 IndexIVFPQ的GPU实现。它们除了算法需要的参数,还需要一个资源对象GpuResources,来避免无效的数据交互。

GPU下的限制:

  • 都所有索引 k 和nprobe 必须小于1024
  • GpuIndexIVFPQ,每个向量允许字节数:1, 2, 3, 4, 8, 12, 16, 20, 24, 28, 32, 48, 56, 64 和 96。超过56,可以使用 float16 IVFPQ 模式。
  • GpuIndexIVFPQ的预计算表占用显存较大,如果有cudaMalloc错误,禁止预计算表
  • indices_options = INDICES_CPU,设置倒排文件可以放在CPU
  • StandardGpuResources默认使用18%的GPU显存,并动态调整
  • add和search最好再batch的形式进行,见示例
  • I/O操作不支持GPU

benchs/bench_gpu_sift1m.py 下是Python的GPU使用示例

使用多卡
可以复制数据到多个GPU,分开查询IndexProxy;也可以通过IndexShards分割数据到多个GPU。

GPU在单卡下是CPU的5-10倍,多卡和单卡相比基本是线性的提升:8个卡可以提升6-7倍。推荐支持batch查询,且当最近邻k值很大时性能也会受影响。

最新文章

  1. 嵌入式Linux驱动开发之helloword心得
  2. SVN 首次用TortoiseSVN Checkout 提示Unexpected HTTP status 405
  3. winform异步进度条LongTime
  4. 省市区联动(MVC分布视图)
  5. 学习ajax 总结
  6. SQL 索引
  7. 可以供MFC调用的,QT实现的DLL(使用qt-solutions的qtwinmigrate实现)
  8. iOS6和iOS7代码的适配(1)
  9. css边框内圆角
  10. Zabbix 3.2.4至3.2.7的升级方案
  11. Django学习(6)配置静态文件
  12. Deep Learning系统实训之一:深度学习基础知识
  13. 关于python的基础知识
  14. HDU 2048:神、上帝以及老天爷(错排公式,递推)
  15. Jersey RESTful WebService框架学习(五)使用@BeanParam
  16. PHP魔术方法之__invoke()
  17. 111python
  18. Sprint6
  19. The YubiKey -- COMPARISON OF VERSIONS
  20. sqlalchemy 判断字段是否存在

热门文章

  1. mac系统下安装mysql 和phpmyadmin
  2. SpringBoot中Redis的set、map、list、value、实体类等基本操作介绍
  3. MYSQL内存评估
  4. SQL Server中判断字符串出现的位置及字符串截取
  5. iframe父页面获取iframe子页面的元素 与 iframe子页面获取父页面元素
  6. 快速开方法(c语言)译文
  7. 对于在Android Studio 的 build.gradle 中的默认applicationId 要不要写呢?
  8. Atitit 遍历文件夹算法 autoit attilax总结
  9. Atitit js canvas的图像处理类库attilax总结与事业
  10. Atitit gui界面ui技术发展史与未来趋势