Closed manoch-iris closed 4 years ago
This is a pretty serious problem for Syngine. It is unclear if our diagnostic fix of skipping an apparently re-used buffer will result in major performance issues or not. If not, we could apply a hot fixed until this is resolved. Any time to consider this @krischer ?
Yes - sorry - this has been on my backburner for a while.
It heavily depends on the access pattern of course but effectively turning off the buffer might have a very negative effect on performance and I/O load. I'm pretty sure that what happens is that the data is read from the buffer and somehow modified in-place so the buffered version changes . This of course should not happen and a well placed copy of the array would solve that.
As a quick fix with much less of a potential performance impact you could just copy immediately after it is retrieved from the buffer.
Otherwise I'll hopefully have some time to look at this early next week.
Hi all! A bit delayed from my side but I think I fixed the issue here: https://github.com/krischer/instaseis/pull/78
In the end it is a one liner with a (I think) very minimal performance impact but I also added a regression test. Can you verify that this fixes the issue on your side? I'd then cut a new release.
Hi Lion,
Thank you for looking into this. We have verified that your change fixes the issue at our end.
Instaseis version 1.4.2 is now available on pypi
so if you have a fortran compiler you can just run pip install -U instaseis
and it should update. Conda packages might take a few more days - if this finishes soonish I can still merge it, otherwise I'll be off tomorrow and it will have to wait until the end of the week: https://github.com/conda-forge/instaseis-feedstock/pull/23
Thanks, Lion!
Thank you Lion! I will wait for the conda package.
—manoch
On Aug 11, 2020, at 2:57 PM, Lion Krischer notifications@github.com wrote:
Instaseis version 1.4.2 is now available on pypi so if you have a fortran compiler you can just run pip install -U instaseis and it should update. Conda packages might take a few more days - if this finishes soonish I can still merge it, otherwise I'll be off tomorrow and it will have to wait until the end of the week: conda-forge/instaseis-feedstock#23
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
The conda package is out now.
Thank you Lion, I really appreciate it. Syngine is upgraded.
—manoch
On Aug 13, 2020, at 1:31 AM, Lion Krischer notifications@github.com wrote:
The conda package is out now.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/krischer/instaseis/issues/76#issuecomment-673341615, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABL5L2VWSFDYUDT7Y5YKWDTSAOQHRANCNFSM4OS7E3VA.
Hi,
Inconsistent data for the same request are returned by the Syngine Web Service when the source mechanism is set to sourceforce. The issue can be simulated outside the Syngine using;
db = instaseis.open_db()
In both cases, the minimum and maximum values of the returned traces change as the same request is submitted multiple times. To repeat the cycle, Syngine servers must be restarted or the open_db() statement above must be re-executed.
The Example 1 below shows a request that was submitted to Syngine 6 times with the min and max values of the traces returned by Syngine for each run. Our testing reveals that:
• This behavior is only observed for sourceforce. Other source mechanism ( sourcedoublecouple and sourcemomenttensor) appear to be functioning correctly. • This behavior is observed regardless of the model used.
The issue appears to be caused by the code segment that creates and populates the mesh.displ_buffer. In file : reciprocal_merged_instaseis_db.py by replacing the if block starting at line 387
with:
utemp = self._get_and_reorder_utemp(id_elem)
The returned results are consistent (Example 2).
Example 1 (original code):
Example 2 (modified code):