Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unknown kernel in partial assembly #182

Closed
sungho91 opened this issue Feb 21, 2024 · 7 comments
Closed

Unknown kernel in partial assembly #182

sungho91 opened this issue Feb 21, 2024 · 7 comments
Assignees

Comments

@sungho91
Copy link

Hi,

I have a quick question. I tested Laghos using high-order elements, but it was terminated when I used more than 4th-order and 3rd-order elements for H1 and L2 spaces with partial assembly calculation. It showed an error message saying "Unknown kernel".

Partial assembly is supposed to benefit high-order methods, but it seems not to be working in this case. This is strange to me.

Sungho

Something like this,
Unknown kernel 0x2c
MFEM abort: Unknown kernel
... in function: void mfem::hydrodynamics::QUpdate::UpdateQuadratureData(const mfem::Vector&, mfem::hydrodynamics::QuadratureData&)
... in file: laghos_solver.cpp:1327

@vladotomov
Copy link
Member

vladotomov commented Feb 21, 2024

Hi @sungho91, I just merged #180. Try again and let me know. Higher orders can be added similarly.

@sungho91
Copy link
Author

@vladotomov, thank you for your comment. I added those lines, and Laghos worked well.

For Q5Q4: {0x26A, &ForceMult2D<2,6,10,5>} and {0x2A, &QKernel<2,10>}
For Q6Q5: {0x27C, &ForceMult2D<2,7,12,6>} and {0x2C, &QKernel<2,12>}
For Q7Q6: {0x28E, &ForceMult2D<2,8,14,7>} and {0x2E, &QKernel<2,14>}

So, for Q8Q7, it should be: {0x29G, &ForceMult2D<2,9,16,8>} and {0x2G, &QKernel<2,16>}.

However, I encountered an error when I tried to build Laghos: "unable to find numeric literal operator ‘operator""G’".
This means I should use different identifiers. Also, can you explain to me what those numbers represent?

The "2" seems to represent dimension but the others look related to the degree of polynomial but I don't know them exactly.

@vladotomov
Copy link
Member

vladotomov commented Feb 21, 2024

These 0x* ids are hexidecimal numbers, so they go up to F, there is no G.

@vladotomov
Copy link
Member

vladotomov commented Feb 21, 2024

@sungho91 you can put any id you want to test things, just make sure it doesn't overlap with another one. I guess we didn't expect we would need more than 16 kernels for a given dimension.

@sungho91
Copy link
Author

@vladotomov, I see. Did you mean that Laghos is not allowed to use Q8Q7 because this Q8Q7 requires 16 kernels?

@vladotomov
Copy link
Member

I didn't mean that. You can run Q8Q7 - just put any id that's not already used. For example 0x2B is not used. Or just put a 1000, doesn't matter much.

@sungho91
Copy link
Author

@vladotomov, thank you for clarifying it. Laghos runs correctly with Q8Q7 in 2D.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants