sleef
cglm
sleef | cglm | |
---|---|---|
17 | 12 | |
590 | 2,050 | |
- | - | |
8.1 | 9.3 | |
9 days ago | 12 days ago | |
C | C | |
Boost Software License 1.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sleef
-
The Case of the Missing SIMD Code
I'm the main author of Highway, so I have some opinions :D Number of operations/platforms supported are important criteria.
A hopefully unbiased commentary:
Simde allows you to take existing nonportable intrinsics and get them to run on another platform. This is useful when you have a bunch of existing code and tight deadlines. The downside is less than optimal performance - a portable abstraction can be more efficient than forcing one platform to exactly match the semantics of another. Although a ton of effort has gone into Simde, sometimes it also resorts to autovectorization which may or may not work.
Eigen and SLEEF are mostly math-focused projects that also have a portability layer. SLEEF is designed for C and thus has type suffixes which are rather verbose, see https://github.com/shibatch/sleef/blob/master/src/libm/sleef... But it offers a complete (more so than Highway's) libm.
-
Does anyone have any interest in my deep-learning framework?
But the other part about SIMD: I'm unsure if mgl-mat uses SIMD for transcendental functions or even for something like element-wise multiplication and division*. SIMD easily provides a speed-boost of 4-8 times which numpy uses. Libraries like sleef have been put to use by many.
- `constexpr` what?
- Advice on porting glibc trig functions to SIMD
-
SIMD intrinsics and the possibility of a standard library solution
Highway and Agner's VectorClass also have math functions. And SLEEF should definitely be mentioned.
-
Portable SIMD library
"SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT" - https://github.com/shibatch/sleef
- SIMD Library for Evaluating Elementary Functions, Vectorized Libm and DFT
-
C library for multiple-precision floating-point arithmetic with correct rounding
Not mentioned in the list of users is SLEEF (https://github.com/shibatch/sleef), which provides fast approximations for various elementary functions. (It generates coefficients for the approximations with mpfr)
SLEEF itself is used by PyTorch.
-
How to speed up array writes?
If you are looking at floats, there's https://sleef.org
-
Benchmarking sine approximations and interpolators.
It would be interesting to see SLEEF added in the benchmarks.
cglm
-
converting a vec4 into a mat4
It's too bad you are using C. If you were using C++, you could use teh fantastic GLM library, which implements the vector math stuff from GLSL as CPU/C++ code. you might want to have a look at CLGM: https://github.com/recp/cglm
-
Matrix multiplication in C
There's cglm, but I don't know how good it is. Really though for hobby OpenGL stuff, it's going to be 3x3, 4x4, 1x4 matrices, so rolling one's own stuff is not that terrible, if it proves to be a bottleneck (probably won't), you can drop in some fancy SIMD bullshit later.
- Portable SIMD library
- Looking for fast, generalized lin alg library
-
In what way should I write a matrix library for my OpenGL game?
There is a cglm: repo
-
What can I replace the C++ code "Vector3f" with?
Check out https://github.com/recp/cglm I use it judiciously.
-
I want to make a game for Linux. Where do I even start?
GLM and CGLM should probably be mentioned as well since you'll probably want a good linear algebra library if you are going with just a rendering library instead of a full game engine.
-
What would be the best way to implement a (algebra) vector in C (for OpenGL purposes)?
cglm has two options for representing a vector: using a struct and using an array. The default one is using an array, but I'm not seeing what are the benefits of using an array instead of a struct. When using an array, you need to use out parameters, which make the code much more ugly when doing multiple operations. Using a struct, I can simply return the struct from the function. The only advantage of using an array would be that it's easier to iterate through it, but I could do the same using structs like this
-
Using CGLM, why does the value of this vec4 affect the mat4?
It has been a while since I've written any C so it's very likely I'm missing something very simple. But I'm using CGLM and I have this simple program:
-
Anyone is using plain C?
https://github.com/recp/cglm is a C version of GLM
What are some alternatives?
nsimd - Agenium Scale vectorization library for CPUs and GPUs
GLM - OpenGL Mathematics (GLM)
yenten-arm-miner-yespowerr16 - ARM 64 CPU miner for Yespower variant algorithms
linmath.h - a lean linear math library, aimed at graphics programming. Supports vec3, vec4, mat4x4 and quaternions
sb-simd - A convenient SIMD interface for SBCL.
raylib - A simple and easy-to-use library to enjoy videogames programming
vector-libm
plutovg - Tiny 2D vector graphics library in C
crlibm - A mirror of the CRLibm project from INRIA Forge
sse2neon - A translator from Intel SSE intrinsics to Arm/Aarch64 NEON implementation
xbyak_aarch64
simd_utils - A header only library implementing common mathematical functions using SIMD intrinsics