Hello. I got one error with compact32bit on 64bit:
(gdb) bt #0 0x00000000821f5400 in ?? () #1 0x00000000ff9ab2b0 in ?? () #2 0x00000000ff9ab2b2 in ?? () #3 0x0000000d021fff10 in ?? () #4 0x0000000d821f9e1c in ?? () #5 0x0000000d821f9f00 in ?? () #6 0x0000000d021fff38 in ?? () #7 0x00000000fffc3c10 in ?? () #8 0x00000000fffc3c14 in ?? () #9 0x00000000fffc3c26 in ?? () #10 0x0000000d821f9a25 in ?? () #11 0x0000000d021fff98 in ?? () #12 0x00000000fffc3c2e in ?? () #13 0x00000000fffc04b2 in ?? () #14 0x00000000fffbf892 in ?? () #15 0x0000000d821ea5b2 in ?? () #16 0x00000000fffc3c58 in ?? () #17 0x00000000fffc04b2 in ?? () #18 0x00000000fffbf928 in ?? () #19 0x00000000fffbf916 in ?? () #20 0x0000000d821e9646 in ?? () #21 0x0000000d821e29c8 in ?? () #22 0x0000000d821e29d7 in ?? () #23 0x0000000d021fffc0 in ?? () #24 0x00000000fffbf4a0 in ?? () #25 0x00000000fffbf4aa in ?? () #26 0x0000000d821e21ac in ?? () #27 0x0000000d821e21b6 in ?? () #28 0x0000000d021fffd8 in ?? () #29 0x0000000d821e203a in ?? () #30 0x0000000d821e204a in ?? () #31 0x0000000d021ffff0 in ?? () #32 0x00000008008acab5 in X86AsmRaiseException () from /home/nick/polyml_compact32bit_debug/lib/libpolyml.so.9 #33 0x00000008008acab5 in X86AsmRaiseException () from /home/nick/polyml_compact32bit_debug/lib/libpolyml.so.9 #34 0x0000000000000001 in ?? () Backtrace stopped: Cannot access memory at address 0xd02200000
??, 20 ???. 2019 ?. ? 13:21, David Matthews <David.Matthews at prolingua.co.uk>:
I've now merged a major piece of development work into GitHub master. This is a variant of 64-bit mode that uses 32-bit values. It was triggered by the observation that Isabelle often peformed better with the 32-bit version than the 64-bit despite the 64-bit version allowing a much larger heap and having more registers. It appears that Isabelle, at any rate, is limited more by the bandwidth between the processors and main memory than by the processors themselves. This may well be the result of the work on parallelising the application and the garbage collector.
In effect there are now three versions on the X86: native 64-bit, native 32-bit and 32-bits on 64-bits. The new version can be built with the --enable-compact32bit option to configure. It allows a heap size of up to 16Gbytes by using 31-bit "object ids", essentially indexes into an array of 8-byte cells. This heap contains only the data. Code, thread stacks and other support structures are outside this.
It has been extensively tested with Isabelle (thanks to Makarius) and seems to perform better than either of the native address versions. I started the development about a year ago; development of the final stages were supported by Data61 and CSIRO through Gerwin Klein.
I would be interested in feedback on this and also the native address versions. Whether it well help other applications may depend on whether the limitation is processor speed or memory bandwidth. It's likely that many applications will continue to perform best with native addressing.
The update also includes changes to the X86 code-generator that affect all the variants. These changes improve the way boolean values and conditionals are handled. There also other changes to the IO system. Garbage-collection of streams has been removed and overlapped IO is now used on Windows which should improve performance and responsiveness. There have been changes to the handling of floating point and Real32 has been added.
Let me have any feedback.
Regards, David
polyml mailing list polyml at inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml