In comparision to pure CUDA ArrayFire is quite overcomplicated to install. I spent two days on trying to install AF on Ubuntu Desktop 16.04 and it failed. Theoretically it is user-friendly. Practically I would be truthfully disappointed like quite rich, bought-by-myself edition of Matlab with comparision to GNU Octave empowered by GNU Parallel prototyping model of programming. To sum up: I do prototype on Octave and rarely, efficiently implement sth. on CUDA C++11.
Post Scriptum: I am only an free amateur, ask for paid advise an expert.
Post Post Scriptum: cheap optimal GPU: GTX770; expensive optimal GPU: GTX1080ti; cheap optimal server: Dell 2950 II; expensive optimal server: Dell R720xd; Dell R820. Optimal by the mean of GFLOPs/USD; GFLOPs/W; Quality/price.