Comments (5)
OSError: /home/zhan/Desktop/Zhan/6d/0de3c0e4ecf8614b3892628044d2f2.so: cannot apply additional memory protection after relocation: Cannot allocate memory
Your computer appears to be running out of memory. If you use a system resources viewer like htop
you would be able to verify this.
To resolve this you could either try running on a machine with more memory or reduce the problem size. It's also possible that you have introduced some sort of memory leak breaking Python's ability to garbage collect old objects. Can you provide some more information about the simulation you are running?
from firedrake.
That error usually occurs if you have a timestepping (or similar) loop, and are doing some assignment or computation that has a dependence on a literal numeric value.
For example, a typical thing you might think to write is:
t = 0
while t < t_end:
t += dt
some_form_with_t_in_it = ... t ...
assemble(some_form_with_t_in_it) # or solve, or interpolate, ...
This will provoke compilation of a new kernel on every iteration and eventually produce this error.
The correct usage is to wrap literal constant values that are updated in a loop like this in a Constant
, and use assign
:
t = Constant(...)
some_form_with_t_in_it = ... t ...
while float(t) < t_end:
t.assign(t + dt)
assemble(some_form_with_t_in_it)
from firedrake.
That error usually occurs if you have a timestepping (or similar) loop, and are doing some assignment or computation that has a dependence on a literal numeric value.
For example, a typical thing you might think to write is:
t = 0 while t < t_end: t += dt some_form_with_t_in_it = ... t ... assemble(some_form_with_t_in_it) # or solve, or interpolate, ...
This will provoke compilation of a new kernel on every iteration and eventually produce this error.
The correct usage is to wrap literal constant values that are updated in a loop like this in a
Constant
, and useassign
:t = Constant(...) some_form_with_t_in_it = ... t ... while float(t) < t_end: t.assign(t + dt) assemble(some_form_with_t_in_it)
Could you please give me more details of the code? I don't quite understand it.
Thank you very much.
from firedrake.
That error usually occurs if you have a timestepping (or similar) loop, and are doing some assignment or computation that has a dependence on a literal numeric value.
For example, a typical thing you might think to write is:t = 0 while t < t_end: t += dt some_form_with_t_in_it = ... t ... assemble(some_form_with_t_in_it) # or solve, or interpolate, ...
This will provoke compilation of a new kernel on every iteration and eventually produce this error.
The correct usage is to wrap literal constant values that are updated in a loop like this in aConstant
, and useassign
:t = Constant(...) some_form_with_t_in_it = ... t ... while float(t) < t_end: t.assign(t + dt) assemble(some_form_with_t_in_it)
Could you please give me more details of the code? I don't quite understand it. Thank you very much.
The core difference here is what is getting passed to assemble(...)
(though the same logic would apply to solve(...)
and other Firedrake functions).
If you are assembling something with a literal number like 1.68 * u * v * dx
then this number will get embedded in the generated code, so if you change the number to, say, 1.72 * u * v * dx
then brand new code will be generated. If you do this a lot such as in a timestepping loop, then you can end up having the sorts of issues that you describe.
The trick to fixing this is to wrap the literal value in a Firedrake Constant
type. E.g. Constant(1.68) * u * v * dx
. Then if you later assemble Constant(1.72) * u * v * dx
then no new code is generated.
This is described here in the manual.
from firedrake.
That error usually occurs if you have a timestepping (or similar) loop, and are doing some assignment or computation that has a dependence on a literal numeric value.
For example, a typical thing you might think to write is:t = 0 while t < t_end: t += dt some_form_with_t_in_it = ... t ... assemble(some_form_with_t_in_it) # or solve, or interpolate, ...
This will provoke compilation of a new kernel on every iteration and eventually produce this error.
The correct usage is to wrap literal constant values that are updated in a loop like this in aConstant
, and useassign
:t = Constant(...) some_form_with_t_in_it = ... t ... while float(t) < t_end: t.assign(t + dt) assemble(some_form_with_t_in_it)
Could you please give me more details of the code? I don't quite understand it. Thank you very much.
The core difference here is what is getting passed to
assemble(...)
(though the same logic would apply tosolve(...)
and other Firedrake functions).If you are assembling something with a literal number like
1.68 * u * v * dx
then this number will get embedded in the generated code, so if you change the number to, say,1.72 * u * v * dx
then brand new code will be generated. If you do this a lot such as in a timestepping loop, then you can end up having the sorts of issues that you describe.The trick to fixing this is to wrap the literal value in a Firedrake
Constant
type. E.g.Constant(1.68) * u * v * dx
. Then if you later assembleConstant(1.72) * u * v * dx
then no new code is generated.This is described here in the manual.
Thank you very much for your patient answer!
from firedrake.
Related Issues (20)
- BUG: CheckpointFile mesh saving crash HOT 4
- Derivative returns cofunction instead of function when the functional is independent of a control
- INSTALL: Script fails at PETSc while downloading HWLOC HOT 13
- running error for Marmousi model HOT 2
- BUG: Solving the Stokes equations defined with TrialFunction returns an error HOT 1
- BUG: Greater error than expected in quadrilateral GLL elements HOT 4
- Compute norm of assembled derivative HOT 5
- "Too many indices for sum factorisation!" for calculating radius on extruded CubedSphereMesh. HOT 1
- INSTALL: ImportError when running firedrake-update on Linux HOT 2
- INSTALL: Linux (Ubuntu 22.04.4 LTS) HOT 10
- Tests for `to_petsc_local_numbering`
- BUG: firedrake-install is now failing with --petsc-int-type=int64 HOT 3
- Buckling problem HOT 2
- Flake8 for demos HOT 2
- Zenodo release
- Labelling of Internal Facets in Mesh Generated with Netgen HOT 3
- Zenodo release request
- Error on interpolation using --petsc-int-type int64 HOT 1
- BUG: Adjoint inconsistency with self-assignment via projection HOT 1
- BUG: Many tests fail with 64-bit indices
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from firedrake.