Hacker News new | past | comments | ask | show | jobs | submit login

Presumably finite element analysis involves multiplying many such matricies? Hopefully in parallel?

If so, you can represent them as a Nx12x12 "tensor" for some large N (presumably proportional to the number of elements?), and I'm reasonably sure that's within the realm of what TPUs accelerate well.




FEA is essentially solving the equation F=-kx (- cv + ma if you're going dynamic).

There are a few steps.

1) discretize the problem, breaking the item into a mesh. Maybe triangles/ tetrahedrons, but maybe also cubes, as the element math is easier.

2) for each element apply a geometric transform to the element stiffness matrix to convert it from a unit stiffness matrix to the global coordinates. Note that this step accounts for the shape of the unit as well.

3) assemble the stiffness matrix by iterating over all the degrees of freedom of all the nodes and adding the contribution from each element stiffness matrix. This will result in a (nodes * dof) Square symmetric matrix, that’s generally sparse and tends to the diagonal. If you’re doing dynamic, the damping and mass matrices need to be assembled as well.

4) Solve the equation using some factorization method, either LU or similar for static, or some Eigen solution for dynamic.

If you’re doing nonlinear/ plastic then repeat generating the stiffness matrix at each iteration.

It’s been years since I did this, but at the time (‘97) I went to a lecture that asserted to that point, since the first cray, the hw improvements and the sw improvements were both about a 10^6 speedup for FEA problems.


These are usually iterative methods




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: