Previous | --- Slide 63 of 63
Back to Lecture Thumbnails
jgrace

I think that problems with adopting a very high level of abstraction in a programming system are raised when the abstraction is too high for the programmer to be well aware of what he/she is coding. In other situations, the high level of abstraction could form a barrier for achieving certain necessary tasks if the abstraction does not support a particular utility that a programmer needs. On the other hand, using levels of abstraction in programming systems allows the programmer to focus on his/her task without getting too bogged down in the details of moving values into registers etc. This can make programming more efficient as well if there are functionalities under the hood to distribute tasks to threads in the most optimal way for instance.

rmjones

The data-parallel structure emphasizes simplicity over richness of features. While you won't be able to construct nuanced synchronization schemes and have fine-grained control over the completion of operations in your data-parallel program, you do get a clear, simpler program to read, and you allow lower-level implementation details of the language to easily introduce advanced optimizations for your code.

bayfc

I think there are a number of problems with adopting a very high level of abstraction with regards to performance and efficiency. Using a high level of abstraction means that the programmer does not necessarily understand what is happening at a lower level, potentially causing them to miss obvious performance issues. For instance, it would be easy for a person inexperienced with ISPC to use blocked assignment without realizing that their code is not mapped onto the most efficient possible combination of vector instructions. Additionally, using a higher level of abstraction may prevent a programmer from making certain useful optimizations which can't be done automatically. On the other hand, a higher level of abstraction can be very useful in that it can allow a programmer to get a high fraction of possible performance while making developement easier and reducing the risk of bugs.

blipblop

Regarding the second question, I quite like The Law of Leaky Abstractions as a read.

Please log in to leave a comment.