|
From: | Florian Weik |
Subject: | Re: [ESPResSo-devel] Bond-deleting strangeness |
Date: | Wed, 7 Jan 2015 23:26:53 +0100 |
Maybe a bit dirty, but could playing around with something like
__asm__(".symver memcpy,...
do the trick?
On 01/07/2015 10:20 PM, Axel Arnold wrote:
> Well, I was more polite about this change than Linus...
>
> https://bugzilla.redhat.com/show_bug.cgi?id=638477#c129
>
> But I do like his statement about standards :-). The other funny thing
> is that he thinks they just forgot to handle overlapping in early memcpy
> and therefore introduced memmove with guaranteed behavior. I just wrote
> try_delete_bond in the golden window when both were the same...
>
> Cheers,
> Axel
>
>> On 07.01.2015, at 23:10, Florian Weik <address@hidden
>> <mailto:address@hidden>> wrote:
>>
>> This is a joke, right?
>>
>> On Wed, Jan 7, 2015 at 10:56 PM, Axel Arnold
>> <address@hidden <mailto:address@hidden>>
>> wrote:
>>
>> Hi!
>>
>> No, that problem is more subtle, and will probably stick around
>> for a while. glibc < 2.14 aliased memcpy to memmove, which allows
>> for overlapping memory regions, while memcpy doesn't. The current
>> glibc versions have a more efficient memcpy, that does not allow
>> for overlap, which in this case however occurs.
>>
>> I can’t test on my Mac, since Apple decided wisely that an
>> unmeasurable speed gain (according to Linus) isn’t worth breaking
>> hundreds of applications, but most Linux distros seem to have this
>> problem. Shooting yourself (or others) in the foot seems to be
>> great fun...
>>
>> Best,
>> Axel
>>
>>> On 07.01.2015, at 15:52, Florian Weik <address@hidden
>>> <mailto:address@hidden>> wrote:
>>>
>>> Hi,
>>> the function looks suspicious to me, might be an off by one
>>> error. I'll get back to you if I've got it figured out.
>>>
>>> Florian
>>>
>>> On Wed, Jan 7, 2015 at 3:45 PM, Rudolf Weeber
>>> <address@hidden
>>> address@hidden <mailto:address@hidden>>>> <mailto:address@hidden>> wrote:
>>>
>>> Hi,
>>> On Wed, Jan 07, 2015 at 02:42:27PM +0100, Rudolf Weeber wrote:
>>> > I encountered very strange behaviour when deleting individual bonds from particles which have more than one bond.
>>> > In some cases, the code works correctly, in some cases, the wrong bond seems to be deleted and in some cases, the bond list gets screwed up completely.
>>> > The code, which is supposed to delete the bond is in particle_data.cpp:try_delete_bond()
>>> And here is a case, where the bond list is screwed up entirely:
>>>
>>>
>>> {0 FENE 47.396 2.5 1.0} {1 angle_harmonic 473.96000000000004
>>> 1.0471975512} {2 FENE 473960.0 2.0 1.0} {3 FENE 473960.0 0.1
>>> 0.0} {1 1 lennard-jones 1000.0 2.672696154421018 3.0 0.25 0.0
>>> 0.0 0.0 } {magnetic 1.0 dawaanr }
>>> I.e., bond 0 and 2 have one partner, bond 1 has two partners
>>>
>>>
>>>
>>> Initial bond configurations
>>> { {0 21746} {0 21747} {0 22047} {1 22047 21746} {1 22049
>>> 21747} {1 22348 22047} {1 22349 22049} }
>>> Del: 0 21746
>>> { {0 21747} {0 22047} {1 22047 21746} {1 22049 21747} {22047
>>> 1} {22047 1} {22349 22049} }
>>>
>>> ---------------------------------
>>>
>>> The relevant code is
>>> proc makeBondRigid { id bond} {
>>> global bondMeshPairSoft 0
>>> global bondMeshAngleSoft 1
>>> global bondMeshPairStiff 2
>>> global bondParticleMesh 3
>>>
>>> puts "$id: Making bond rigid: $bond"
>>> # First delete the old bond
>>> puts "[part $id print bond]"
>>> puts " Del: $bond"
>>> eval "part $id bond delete $bond"
>>> puts "[part $id print bond]"
>>>
>>> # Make new bond with changed type
>>> lset bond 0 $bondMeshPairStiff
>>> # Add
>>> puts " Add: $bond"
>>> eval "part $id bond $bond"
>>> puts "[part $id print bond]"
>>> }
>>>
>>>
>>> Regards, Rudolf
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Florian Weik
>>>
>>> ++49 157 85939252 <tel:%2B%2B49%20157%2085939252>
>>>
>>
>> ------------------------------------------------
>> JP Dr. Axel Arnold
>> ICP, Universität Stuttgart
>> Allmandring 3
>> 70569 Stuttgart, Germany
>> Email: address@hidden
>> <mailto:address@hidden>
>> Phone: +49 711 685 67609 <tel:%2B49%20711%20685%2067609>
>>
>>
>>
>>
>> --
>> Florian Weik
>>
>> address@hidden <mailto:address@hidden>
>> ++49 157 85939252
>>
>
> ------------------------------------------------
> JP Dr. Axel Arnold
> ICP, Universität Stuttgart
> Allmandring 3
> 70569 Stuttgart, Germany
> Email: address@hidden <mailto:address@hidden>
> Phone: +49 711 685 67609
>
--
Ulf D. Schiller
Centre for Computational Science
University College London
20 Gordon Street
London WC1H 0AJ
United Kingdom
Phone: +44 (0)20 7679 5300
[Prev in Thread] | Current Thread | [Next in Thread] |