I have a matrix of size 60,000 rows * 12 columns - each row is a single point. I want to compute the 60,000*60,000 matrix of pairwise Euclidean distances between the points using a CUDA based GPU. 3.6 Billion entries should fit within out 200GB RAM. The developer may work on a smaller machine and work with say only 1,000 entries but the solution should be scalable to our CUDA server.
This is part 1 of a large project. Strong knowledge of algorithms, data structures, computer science, mathematics, linear algebra, and CUDA C is required for success of this and future parts of the project. For an expert programmer, this should not take more than 4-6 hours.
The source code should run on Linux. The developer should sign a NDA and non-compete agreement, and assign us the copyright for the work performed.
The job is pretty simply - open a file; read a n *m matrix (n rows representing m-dimensional points), compute pairwise distances using Euclidean distance metric between the n rows, and report the resulting n*n distance matrix in a file. n is of the order of 1E6 and m is of the order of 10.