amplab / snap

Scalable Nucleotide Alignment Program -- a fast and accurate read aligner for high-throughput sequencing data
https://www.microsoft.com/en-us/research/project/snap/
Apache License 2.0
288 stars 66 forks source link

no match for max(unsigned long, _int64) #68

Closed mr-c closed 8 years ago

mr-c commented 8 years ago

Hello all,

There is an experimental architecture with growing support in Debian called x32. While not yet official, all software is built for this port by default. During this a problem was found, though it doesn't affect the other official ports:

32-bit builds of snap-aligner that get past #812376 still fail:

  SNAPLib/SortedDataWriter.cpp:338:70: error: no matching function for call to 'max(long unsigned int, _int64)'
               min(1UL << 23, max(1UL << 17, bufferSpace / blocks.size()))); // 128kB to 8MB buffer space per block

So far, this error has only occurred on x32, but I expect *i386
builds will fail the same way.  I'd suggest including <stdint.h> and
substituting UINT64_C(1) for both occurrences of 1UL here.  Could you
please take a look?

I made a x32 bit chroot and tested the offered fix but it didn't work for me. This is out of my league, but I thought I'd mention it in the interest of completeness.

bolosky commented 8 years ago

You’re trying to do a 32 bit version of SNAP?

That would have very limited utility, because SNAP’s index data structure is typically around 10 bytes/base of reference, which means that you’d run out of address space for references much bigger than 400M bases (not even counting all of the address space used by buffers, etc., and assuming that you can use the entire 32 bits for user processes, which may not may not be true for your OS).

Do you have applications in mind that will use a tiny reference? Because on the face of it, this doesn’t really make much sense to me.

--Bill

From: Michael R. Crusoe [mailto:notifications@github.com] Sent: Sunday, January 24, 2016 6:59 AM To: amplab/snap snap@noreply.github.com Subject: [snap] no match for max(unsigned long, _int64) (#68)

Hello all,

There is an experimental architecture with growing support in Debian called x32https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fwiki.debian.org%2fX32Port&data=01%7c01%7cbolosky%40microsoft.com%7cb5f9ab4132734d7b3e4008d324cee088%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=tx%2fWjduyRT5X7lb1zER%2fnWdkX5oIHXDysqk7wVwq494%3d. While not yet official, all software is built for this port by default. During this a problem was foundhttps://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fbugs.debian.org%2fcgi-bin%2fbugreport.cgi%3fbug%3d812378%235&data=01%7c01%7cbolosky%40microsoft.com%7cb5f9ab4132734d7b3e4008d324cee088%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=cgm%2fiHgc46cHKoAvJAr39kzTcyP4ejK7fDh8db6JFDs%3d, though it doesn't affect the other official ports:

32-bit builds of snap-aligner that get past #812376 still fail:

SNAPLib/SortedDataWriter.cpp:338:70: error: no matching function for call to 'max(long unsigned int, _int64)'

           min(1UL << 23, max(1UL << 17, bufferSpace / blocks.size()))); // 128kB to 8MB buffer space per block

So far, this error has only occurred on x32, but I expect *i386

builds will fail the same way. I'd suggest including and

substituting UINT64_C(1) for both occurrences of 1UL here. Could you

please take a look?

I made a x32 bit chroot and tested the offered fix but it didn't work for me. This is out of my league, but I thought I'd mention it in the interest of completeness.

— Reply to this email directly or view it on GitHubhttps://github.com/amplab/snap/issues/68.

mr-c commented 8 years ago

32 bit version isn't a personal concern of mine; but was auto-attempted by Debian's build infrastructure; I'm just the messenger here :-)

Since it isn't a good fit for this package I'll see if I can disable the build.

For your leisure time reading, here is more on the x32 platform: https://wiki.debian.org/X32Port