Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Running in non-Intel machine #529

Closed
3 of 4 tasks
msharmavikram opened this issue Jul 18, 2018 · 4 comments
Closed
3 of 4 tasks

Running in non-Intel machine #529

msharmavikram opened this issue Jul 18, 2018 · 4 comments
Labels

Comments

@msharmavikram
Copy link

Summary

I am trying to run FAISS in IBM Power 8 system with P100 GPUs. I see that most of code is hardcoded to use Intel platform with SSE4 enabled. Are there any ways I could get this working without the help of SSE4? I see IndexHNSW files have SSE4 optimizations. Any means I can avoid file and get running?

Platform

IBM Power 8 with Nvidia P100 machines with Cuda 8.0

OS: Ubuntu 16.04LTS

Faiss version: 2dc30e1

Faiss compilation options: Not using MKL, SSE4 or Intel specific options

Running on:

  • CPU
  • GPU

Interface:

  • C++
  • Python

Reproduction instructions

Run it on IBM Machine.

@mdouze
Copy link
Contributor

mdouze commented Jul 19, 2018

This is a good question. Sadly, by lack of a non-x64 dev platform we were dragged into writing non portable code.

However, all code that depends on SSE/popcount has a "slow" version that is written in generic c++. That code must be enabled, often manually in the current version.

In IndexHNSW, the only part that depends on SSE is the one handling PQ compressed HNSW which is a corner case use of HNSW. It can be safely commented out.

The function fvec_L2sqr is the most useful function for HNSW without compression, it is implemented in utils.cpp and the generic version is fvec_L2sqr_ref.

@msharmavikram
Copy link
Author

Thanks for the information. I am going to try out these modifications that you suggested and if I find more issues, I will continue this thread.

@msharmavikram
Copy link
Author

Are there any alternatives to these two structures?
Distance2xXPQ4 and Distance2xXPQ4

@mdouze mdouze mentioned this issue Aug 17, 2018
4 tasks
@mdouze
Copy link
Contributor

mdouze commented Aug 30, 2018

Compilation for non-intel machines is supported in 1.4.0

@mdouze mdouze closed this as completed Aug 30, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants