Live data from Hacker News

Py-Videocore: Python Library for GPGPU on Raspberry Pi

github.com

11–20 of 23 posts

Re: Py-Videocore: Python Library for GPGPU on Raspberry Pi

#11

Cool project. Small rant; can we please stop titling our libraries with the language extension as a portion?

I like it (for otherwise generic names); it quickly shows which language the library is for, reduces name collisions, and makes Googling easier.

That's fair, but I feel like most languages have searchable package repositories, and I'd be searching in one of those, eliminating the need for such naming.

Re: Py-Videocore: Python Library for GPGPU on Raspberry Pi

#13

All the GPGPU projects on the Pi seem to be centered around low level assembly language for the Videocore. Are there any technical reasons why there are no higher level C/C++ abstractions?

Shader units --- e.g. the VideoCore's QPUs, which this project is targeting --- are very very weird. Compiling C into them basically isn't possible. They don't really do memory accesses, for example.

The VideoCore's own processor, commonly referred to as the VPU or just the VC4, is a perfectly normal architecture with its own vector unit and DSP addons. C can compile into that perfectly easily, and the real-time OS that runs on it alongside Linux is written in it, but there aren't any adequate open source C compilers yet.

More info on the QPU here:

https://github.com/hermanhermitage/videocoreiv-qpu

Re: Py-Videocore: Python Library for GPGPU on Raspberry Pi

#14

All the GPGPU projects on the Pi seem to be centered around low level assembly language for the Videocore. Are there any technical reasons why there are no higher level C/C++ abstractions?

Shader units --- e.g. the VideoCore's QPUs, which this project is targeting --- are very very weird. Compiling C into them basically isn't possible. They don't really do memory accesses, for example. The VideoCore's own processor, commonly referred to as the VPU or just the VC4, is a perfectly normal architecture with its own vector unit and DSP addons. C can compile into that perfectly easily, and the real-time OS t…

Disclaimer: I know nothing about the issues, but would using C with inline assembly gain anything?

Re: Py-Videocore: Python Library for GPGPU on Raspberry Pi

#15

Earlier quoted context omitted.

I like it (for otherwise generic names); it quickly shows which language the library is for, reduces name collisions, and makes Googling easier.

That's fair, but I feel like most languages have searchable package repositories, and I'd be searching in one of those, eliminating the need for such naming.

Package repositories are useful to download the libraries; not so much if you're looking for discussions regarding them.

Re: Py-Videocore: Python Library for GPGPU on Raspberry Pi

#16

All the GPGPU projects on the Pi seem to be centered around low level assembly language for the Videocore. Are there any technical reasons why there are no higher level C/C++ abstractions?

I think C/C++ programmers are more pragmatic than the typical Python/Ruby programmer in that their highest priority is the program works (typically performance is important). If the code is nice that's just a bonus.

I probably shouldn't bother replying to this. But I am curious about what leads a person to paint with such broad strokes.

I've intentionally chosen a job that is mostly Python. Because while I am aware that it has some flaws or trade offs or whatever you want to call them, it's a language that -- first and foremost -- allows me to write programs that work.

The fact that I find the language aesthetically pleasing is a bonus. When I run into situations where Python isn't good enough, then I drop down into C and do things there.

I'm new enough at being a developer that I'm willing to understand that there are things I may be missing out on coming from a self-taught background that started with SQL and then moved to C# and eventually Python, and then sometimes C when needed.

I'm also open to the idea that a person's language of choice indicates something about their personality characteristics in the same way that you can guess a little about a person based on which instrument they play in an orchestra or a band.

But is there really anything you can say about what I'm reading in your comment as 'rigor' based on that?

Re: Py-Videocore: Python Library for GPGPU on Raspberry Pi

#17
post #14

Earlier quoted context omitted.

Shader units --- e.g. the VideoCore's QPUs, which this project is targeting --- are very very weird. Compiling C into them basically isn't possible. They don't really do memory accesses, for example. The VideoCore's own processor, commonly referred to as the VPU or just the VC4, is a perfectly normal architecture with its own vector unit and DSP addons. C can compile into that perfectly easily, and the real-time OS t…

Disclaimer: I know nothing about the issues, but would using C with inline assembly gain anything?

No. Inline assembly is a static construct targeting the same compute unit as the C code during compile-time.

What is needed is "runtime inline assembly" which assembles inline assembly for a different target architecture at runtime.

This is essentially what shader programs are and you don't need special syntax to support it. Just store your shader program in a char* and bundle an assembler/compiler with your host program.

Re: Py-Videocore: Python Library for GPGPU on Raspberry Pi

#18

All the GPGPU projects on the Pi seem to be centered around low level assembly language for the Videocore. Are there any technical reasons why there are no higher level C/C++ abstractions?

I think C/C++ programmers are more pragmatic than the typical Python/Ruby programmer in that their highest priority is the program works (typically performance is important). If the code is nice that's just a bonus.

The same could be said for Python/Ruby programmers.

Pragmatism and nice code are not at odds with each other. Quite the opposite, they are often in agreement with each other.

Re: Py-Videocore: Python Library for GPGPU on Raspberry Pi

#19

Cool project. Small rant; can we please stop titling our libraries with the language extension as a portion?

This is part of Python culture.

That's like me saying "can we stop choosing HN usernames that contain programming references?"

Post reply on HN