Computational model. C&#x2F;CUDA have an imperative view of the world which is really hard to boil into hardware. Functional approaches are a much better idea.<p>The compilation from the imperative world to digital logic is typically pretty opaque. What ends up happening is that the compiler ends up generating shitty hardware, and either you do or don&#x27;t have a mental model of the hardware you actually want. If you have the mental model, you end up jiggling the C&#x2F;CUDA compiler into generating the logic you want in lieu of just being able to tell it up front. If you don&#x27;t have a mental model, making decent hardware is going to suck, and you&#x27;re probably better off learning an HDL anyway.<p>A high level functional approach that still recognizes that you&#x27;re writing hardware is a nice abstraction.