-
Notifications
You must be signed in to change notification settings - Fork 358
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
'success' in 'struct nest::StaticAssert...' does not name a type #1031
Comments
This is the complete build log: build-log.txt |
Another note: the build is only failing on 2 architectures: i686 and armv7hl (All builds here: https://koji.fedoraproject.org/koji/taskinfo?taskID=29705080) |
@sanjayankur31 From @jakobj Could you take a look? |
This is an issue with inter-machine aliasing (both of those architectures are 32 bit architectures where We could fix this by defining However, really, this aliasing is a bit of a mess, depending on raw c types without fixed lengths, and in fact that indexes have less than 27 bits and so on. If you allow 32 bit compilation, then you would need to also reduce the bits allocated for lcid, rank, tid, and id's. so that entire section should be type-trait based values, or make NEST fully 64-bit types even on 32 bit machines. The only reason not to have fixed-size types is that someone intends to run on a 32 bit supercomputer -- and I'd hope that everyone building an ARM supercomputer is waiting for the new vectorized operators anyhow. |
@apeyser Thanks for the explanation! I am not entirely sure I fully understand your comment on 32-bit supercomputers (is some irony hiding there?). It seems we need to have 64 bits for Another approach would be require that |
I'd definitely go for using well-defined length types for as many types as possible, such as |
@ikitayama Could you comment on this issue with respect to coming ARM-based systems? |
At multiple points we require the variables to have exactly the number of bits (64 in our case) we would expect on a normal 64bit machine, e.g., for the bitmasks in https://github.com/nest/nest-simulator/blob/master/nestkernel/target.h#L46 or the bitfields in https://github.com/nest/nest-simulator/blob/master/nestkernel/source.h#L43. The easiest option I see here is to define all the relevant variables as |
@jakobj I also do not see the value of a 32 bit version. @terhorstd Could you put this on the agenda for the next NEST Developer VC as an explicit decision item? |
I've built today's master branch without an issue in Rawhide (aka Fedora 30 candidate with GCC 8.2.1) VM on a ThunderX server (arm64). As @jakobj mentioned, the Community should decide they want to support 32-bit binaries. I'd just drop the support and be done with it. I think Arm-based supercomputers will all be 64-bit machines. |
I had discussed this during the package review too. The reviewer had suggested we support whatever archs were available in case someone wants to run smaller sims on a chromebook or something. However, I agree that if it's too much trouble, then we drop support here (as upstream), and downstream packagers like me at Fedora can drop support too. 2.14 didn't error out---this only turned up when I tried to build 2.16. |
What’s the advantage of runnng NEST on 32-bit platforms? 2.16 has the 5th
gen kernel which Is new, during the develeoent it was considered to support
from small laptops up to supercomputers, but guess the assumption was that
they are all on 64-bit platforms.
…On Thu, Sep 27, 2018 at 19:13 Ankur Sinha ***@***.***> wrote:
I had discussed this during the package review too. The reviewer had
suggested we support whatever archs were available in case someone wants
to run smaller sims on a chromebook
<https://bugzilla.redhat.com/show_bug.cgi?id=1273579#c26> or something.
However, I agree that if it's too much trouble, then we drop support here
(as upstream), and downstream packagers like me at Fedora can drop support
too. 2.14 didn't error out
<https://koji.fedoraproject.org/koji/packageinfo?packageID=27405>---this
only turned up when I tried to build 2.16.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1031 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AA6w51V9_fhdSzS9x1ICH98IsuBYj7tJks5ufKTggaJpZM4Wqh30>
.
|
Not much other than supporting a wider range of hardware. If 32 bit is going away and 64 bit will become the norm, dropping 32bit support should be fine. I'm not as up to date as the others here on these things, unfortunately. |
The worst case is a 2-fold memory increase -- that's just meaningless, computationally. Fuggedaboutit and just go to well-defined 64 bit types, and if someone's laptop needs twice as much memory, they should borrow someone else's in the lab with twice as much memory. |
I have worked out a pragmatic solution which I tested on a 32-bit ARM Raspberry Pi. See also pull request #1065. Regarding the word size, I believe, one can safely assume that future ARM-based HPC systems are 64-bit architectures. Nonetheless, there is also the very interesting XILINX Zynq device family (ARM + FPGA) that is still 32-bit. Being prepared and keeping an eye on writing portable code is not wrong. Unfortunately, NEST is not well prepared for that, e.g., we do not have user defined platform-independent type definitions - and this is just one aspect! I also agree with @apeyser that relying on integral C-types and bit-shifting data is not the best solution here. I worked around the current problem by doing the following:
I found that it is not needed for the moment to change the types of |
PR #1065 needs a second reviewer so we can merge and close it and this issue. It's already been approved by a first reviewer (me). @sanjayankur31 @ikitayama @jakobj @heplesser |
I think with @jakobj 's approval, PR #1065 should go into the mainline. I'm
not following the code changes unfortunately, so
remove from the possible reviewers list.
…On Tue, Nov 13, 2018 at 4:26 PM Alexander Peyser ***@***.***> wrote:
PR #1065 <#1065> needs a
second reviewer so we can merge and close it and this issue. It's already
been approved by a first reviewer (me). @sanjayankur31
<https://github.com/sanjayankur31> @ikitayama
<https://github.com/ikitayama> @jakobj <https://github.com/jakobj>
@heplesser <https://github.com/heplesser>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1031 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AA6w536M6EERZ_MKU2l6e40BzRQCnv0tks5uunQ1gaJpZM4Wqh30>
.
|
I'm getting a failed build with GCC 8.2.1 on Fedora 30 systems for the nest 2.16.0 release. I'm still looking at the cause, but here is the error message.
The compiler flags are:
Cheers!
The text was updated successfully, but these errors were encountered: