Finally get through OpenCL's Hello World in Kotlin. Computing 3 million times sin and cos using GPU, total time is 456ms, 105ms is used to compute and read result back to CPU. On the other hand, CPU takes whole 891ms to compute cos and sin. Which I guess it's more convinced for me to just say "GPU is good for parallel computing". The result is more vivid than sentences.

After doing this, I though LWJGL's document on OpenCL is really bad. What all I referenced are Java test codes and C++ codes. And I rely on my experience a lot to debug it. It looks like JOCL's binding is more object oriented and more user friendly. But LWJGL is offering a integrated package of OpenGL, GLFW and OpenCL binding, which I guess I have to stick with it for now.

Besides auto converting Java bytecode to OpenCL kernel, Aparapi seems much easier to get start with. Without dealing a lot of data copying and buffer creating things, life is much simpler.

I might write a blog(in Chinese of course, since I'm a Chinese, maybe I'll commit this program to LWJGL as a OpenCL HelloWorld) to describe where you should take a good care with LWJGL's OpenCL binding, where I actually crash the JVM by doing it wrong. (BTW, using println to locate the crash point is way faster than step through XD)

Learned a lot about general computing on GPU via a youtube video.

Besides OpenGL compute shader, I'd prefer using OpenCL to update tons of units concurrently. I'll give it a try, but it seems like LWJGL's OpenCL binding is not well documented and only a few examples are given. Maybe I'll go further deeper in it.


I think my current password are used for last ten years and somehow I still didn't change it and relay on the 2FA to protect my account

What's more I only have one yubikey and doesn't have a backup for those 2FA identities.

Well... That may not be a good practice.

via @Johann150

Now I achieved 11+ fps with GLSL shaders to draw a colored circle. This circle has been sliced into 30e5 segments and CPU only give a index of each segment, then shader computes each vertex's coordinate and give them color.

I think that is a nice try for a OpenGL beginner.

Encountered a mind-blowing problem with OpenGL.

When I finally drew a circle using LWJGL with OpenGL, I tried moving my code from glBegin/glEnd calls to VBOs, and today I tried to make my code using shaders. And problem is here.

I draw a circle by slicing it into some segments and calculate the coordinates of points on the edge, then I can use GL_TRIANGLE_FAN or GL_LINE_LOOP to draw a circle. I randomly choose a color by assigning red equals cos(theta), where the i th theta is 2 * pi * i divided by total segments.

If I draw the circle using GL_LINE_LOOP, the color on the edge is correct, where only theta in mines pi to pi is positive number, thus given the red color, which should be the right hand side of the circle. Picture 1 is a compare that on the left I used GL_COLOR_ARRAY client state to draw color, on the right side I use shader but calculated cos before fragment shader(both in CPU part and vertex shader, they are same in result). In picture 2, I calculate cos value in the fragment shader by the theta passed by vertex shader. And it shows on the right of the picture, which is pretty odd.

I knew there other stages between vertex shader and fragment shader, but how they effect those color or theta value? Also on the left side of picture, color gradient given by fixed pipeline also seems a little bit weird.

BTW I have no ideas about where to find those documents. LWJGL doesn't have a detailed document on OpenGL(which I guess they of course not have one), and on the OpenGL side, the documents are just overwhelmed me...

Medicine always amazing

As soon as I take the first pill, my nose feels much better.

have a cold with pretty strong symptoms
95% percent sure it's not covid 19

I feel so fucked up by just having this little flu (I guess), I lost my towel and struggled to finish my passages. I felt like I'm broken and I knew that shouldn't be that hard, but I can't finish that properly. Anyway at least I finished that and found my towel.
Now I somehow understand the feeling who has severe disease, feeling of frustration. A friend of mine has struggled with cancer for several years and it's really unbearable.

Symptoms from flu and the friend trying to fighting the cancer, both make me feel sad.

It's 11:30pm in UTC+8,
I think I'd better go to bed now.

Everybody goodnight 😴

太强了,人均BiLSTM CRF,我记得去年搞这个,因为dl4j没有CRF层,于是用了一层attention代替,结果效果极差


via @Candinya

I rerun the code this morning and it didn't crash.

I didn't change anything and it just magically runs. But still I can't see anything on that window. My OpenGL codes probably still broken.

I want to draw a circle using lwjgl (with OpenGL as underlying library) as a hello world program ...and the jvm just keep crashing Fine. Anything...

I want to draw a circle using lwjgl (with OpenGL as underlying library) as a hello world program

...and the jvm just keep crashing


Anything related to C++ is hard.

This is why we can't have nice things

This video is about stuff: light bulbs, printers, phones and why they aren't better. Go to and use code VERITASIUM to get a 2-...

Sorry, I don't support communism. I don't support capitalism either.

I only support freedom, and love. My motto is, "if it doesn't hurt anyone, then do it".

It's complicated, I know. But that's how it is.





New configuration

Dual screen works fine for me.

Another use of dual screen is laptop for gaming guides, monitor for switch XD



Show more
Qoto Mastodon

QOTO: Question Others to Teach Ourselves. A STEM-oriented instance.

An inclusive free speech instance.
All cultures and opinions welcome.
Explicit hate speech and harassment strictly forbidden.
We federate with all servers: we don't block any servers.