3 ms·
Except in this case the question makes sense, you don't have malloc on the GPU (it only allocates from a fixed array), and without dynamic memory allocation you
by WithinReason 5y ago
Except in this case the question makes sense, you don't have malloc on the GPU (it only allocates from a fixed array), and without dynamic memory allocation you could just use indices to an array any time you would use a pointer on the CPU. This also makes sense if you transfer your datastructure between GPU and CPU, since you don't need to translate pointers.
- DonHopkins 5y agoRight, and you can simply use your finger to point at things you drew on your top-of-the-line Turbo SRX 3D display, instead of your cursor. What does Brecht Van Lommel know about writing 3D graphics code and GPU kernels, anyway? https://www.blenderdiplom.com/en/interviews/400-interview-brecht-van-lommel-on-cycles.html https://www.blenderdiplom.com/en/interviews/400-interview-br... https://devtalk.blender.org/t/2021-08-31-blender-rendering-meeting/20206/16 https://devtalk.blender.org/t/2021-08-31-blender-rendering-m... So the hip, forward-thinking HP technical support person was right after all, decades ago! Makes me wonder why they're not still in business. Such nice hardware! Too bad about the software.
- my123 5y agoYou share the same pointers between CPU and GPU. Pointers in structures for example are one of the use cases. Also as an even more unique option, see cudaHostRegister (on CUDA) to make a CPU buffer not allocated through CUDA accessible from the GPU without a copy, at the same address[1]. This isn’t especially high performance because you have to go through the PCIe bus (on Tegra, this mechanism is even more attractive), it’s however very useful. Your address space is unified between CPU and GPU, with the same pointers used between both. [1] at the same address for host allocations registered through that mechanism is only there on recent GPUs. Allocations done through CUDA still share the same address on both worlds on GPUs where this is unsupported.