CUDA/Ada ======== CUDA/Ada is an Ada binding to NVIDIA's CUDA parallel computing platform and programming model. This project was developed during the course of the master seminar "Progam Analysis and Transformation" at the University of Applied Sciences Rapperswil. Licence ------- -------------------------------------------------------------------------------- Copyright (C) 2011 Reto Buerki Copyright (C) 2011 Adrian-Ken Rueegsegger University of Applied Sciences Rapperswil This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. -------------------------------------------------------------------------------- Documentation ------------- The paper about CUDA/Ada can be found here: http://www.codelabs.ch/cuda-ada/cuda-ada-article.pdf. Download -------- The current development version of CUDA/Ada is available through its git repository: $ git clone http://git.codelabs.ch/git/cuda-ada.git A browsable version of the repository is also available here: http://git.codelabs.ch/?p=cuda-ada.git. Build ----- To compile CUDA/Ada on your system, you need to have the following software installed: * GNAT compiler: http://www.gnu.org/software/gnat/gnat.html * Ahven (Test-Framework): http://ahven.stronglytyped.org/ * CUDA Toolkit for Linux 10.10: http://developer.nvidia.com/cuda-downloads * NVIDIA Developer Drivers for Linux: http://developer.nvidia.com/cuda-downloads Testing ------- CUDA/Ada contains an unit test suite which can be run by entering the following command: $ make tests Of course, you need a CUDA aware GPU for this to work. Benchmarks ---------- CUDA/Ada provides benchmarking code that measures matrix addition and multiplication in Ada, CUDA/Ada and native CUDA C. The benchmarks can be run by issuing the following command: $ make perf COUNT=10 This will print the cumulated execution times of ten successive matrix operations for the three different implementations.