microsoft / microsoft/DiskANN

Illegal instruction (core dumped)

Open
#684 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
Dominant language
Rust
Stars
1.9k
Forks
454
Avg merge
3d 22h
Merged PRs (30d)
35

Description

Hi, thanks for the great project. I'd like to report an issue I encountered.
According to the tutorial from [Commandline interface for building and search SSD based indices](https://github.com/microsoft/DiskANN/blob/main/workflows/SSD_index.md) , I'm trying to learn how diskann works and the execution performance. However, I met the following problems. When I execute the command `./apps/utils/compute_groundtruth --data_type float --dist_fn l2 --base_file data/sift/sift_learn.fbin --query_file data/sift/sift_query.fbin --gt_file data/sift/sift_query_learn_gt100 --K 100`, it shows a core dumped shown as below.

```
Reading bin file data/sift/sift_query.fbin ...
#pts in part = 10000, #dims = 128, size = 5120000B
Finished reading part of the bin file.
Finished converting part data to float.
Reading bin file data/sift/sift_learn.fbin ...
#pts = 100000, #dims = 128
Number of parts: 1
Reading bin file data/sift/sift_learn.fbin ...
#pts in part = 100000, #dims = 128, size = 51200000B
Finished reading part of the bin file.
Finished converting part data to float.
Illegal instruction (core dumped)
```

When I try to construct the index, it shows the same result. Then I try to debug with gdb, and the result is
```
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
Downloading separate debug info for system-supplied DSO at 0x7ffff7fc3000
Downloading separate debug info for /home/ubuntu/anaconda3/lib/libmkl_intel_ilp64.so
Downloading separate debug info for /home/ubuntu/anaconda3/lib/libmkl_intel_thread.so
Downloading separate debug info for /lib/x86_64-linux-gnu/libomp.so.5
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGILL, Illegal instruction.
0x0000555555567e39 in boost::program_options::typed_value, std::allocator >, char>* boost::program_options::value, std::allocator > >(std::__cxx11::basic_string, std::allocator >*) ()
(gdb) bt
#0 0x0000555555567e39 in boost::program_options::typed_value, std::allocator >, char>* boost::program_options::value, std::allocator > >(std::__cxx11::basic_string, std::allocator >*) ()
#1 0x000055555555c031 in main ()
```

My system architecture is:
```
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 40 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 56
On-line CPU(s) list: 0-55
Vendor ID: GenuineIntel
Model name: QEMU Virtual CPU version 2.5+
CPU family: 15
Model: 107
Thread(s) per core: 1
Core(s) per socket: 56
Socket(s): 1
Stepping: 1
BogoMIPS: 3990.62
Flags: fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni ssse3 cx16 ss
e4_1 sse4_2 x2apic popcnt aes hypervisor lahf_lm cpuid_fault pti
Virtualization features:
Hypervisor vendor: KVM
Virtualization type: full
Caches (sum of all):
L1d: 1.8 MiB (56 instances)
L1i: 1.8 MiB (56 instances)
L2: 224 MiB (56 instances)
L3: 16 MiB (1 instance)
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0-55
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: KVM: Mitigation: VMX unsupported
L1tf: Mitigation; PTE Inversion
Mds: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Meltdown: Mitigation; PTI
Mmio stale data: Unknown: No mitigations
Reg file data sampling: Not affected
Retbleed: Not affected
Spec rstack overflow: Not affected
Spec store bypass: Vulnerable
Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Retpoline
Srbds: Not affected
Tsx async abort: Not affected
Vmscape: Not affected
```
And my cpu may not support AVX2. My problem is that how to successfully run the command. Thanks in advance! I'm looking forward to your reply.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with workflows/SSD_index.md and the apps/utils/compute_groundtruth entry point, reproducing the command shown in the issue. Inspect the SIGILL location in gdb and compare the build's instruction requirements with the listed QEMU CPU flags. Done means the ground-truth command and index construction run successfully, or the supported CPU/build limitation is documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
search
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.