This is JCUDA V3.0 for AMD64 bit architectures. The Java components are created as one JAR file. This was built using Eclipse with Sun Java x86-64 V1.6.0.013. 

The JNI object files were build on an AMD Phenom III Black edition with 4 cores, using Linux 2.6.31-21. The compiler was gcc V4.3.4. All linked libraries are 64bit. 

Also installed libraries included the following packages under Ubuntu 9.10:  freeglut3 freeglut3-dev libx11-dev mesa-common-dev libxmu6 g++-4.3. This is be no means the whole list of packages installed on my system. YMMV. 

The CUDA toolkit used was "cudatoolkit_3.0_linux_64_ubuntu9.04.run". 

The CUDA driver was "devdriver_3.0_linux_64_195.36.15.run". The modules for this were built using gcc 4.4, since that was what the Linux kernel was compiled with. 

The CUDA runtime installed was "gpucomputingsdk_3.0_linux.run". 

CUDPP V1.1 was compiled with gcc 4.3 for compatibility. Several changes to the makefile and some source files were needed to compile this under 64 bit Linux. For ease of use a license and compiled version of this is provided. 

Tests were performed usin an Nvidia GTX 285 graphics card with 1mb of memory, connected on an 16x PCI slot. 


CONTENTS 
========

	cudpp/		compiled code for cudpp v1.1
	doc/		java documentation for JCuda v3.0 
	lib/		library files for the JNI interfaces to JCuda v3.0 
	Cubin.java	see below 
	INSTALLATION	some notes on installation 
	JCuda.jar	the compiled JAR file containing 
				driver 	
				jcublas
				jcudpp
				jcufft
				runtime 
	README		this file



Notes on Cubin.java 
===================

The class is provided as-is, with no warranty expressed or implied that it will work or do anything useful (there, my legal eagle feels so much more comfortable). 

Cubin is a small class that will compile .cu files, on the fly, in to .cubin files. This means that you can provide the .cu file for a CUDA program as source code and Cubin will return the compiled .cubin file, ready to be loaded on to your CUDA processor. If the cubin file already exists and is newer than the cu file being provided, it will use that file, so a recompile every time is not needed. 

Usage: 


        // Load the CUBIN file.
    	Cubin sampleKernel = new Cubin("JCudaCubinSample_kernel.cu");
      	sampleKernel.prepareCubinFile();
      	String cubinFileName = sampleKernel.getCubinFileName();

        CUmodule module = new CUmodule();
        JCudaDriver.cuModuleLoad(module, cubinFileName);

If you like short cuts in your code, then you can use this. It will work just as well: 

        // Load the CUBIN file.
        CUmodule module = new CUmodule();
        JCudaDriver.cuModuleLoad(module, 
		new Cubin("JCudaCubinSample_kernel.cu").getCubinFileName()
	);


BE AWARE: 

I use log4j extensively in my code. Therefore Cubin.java has logger calls embeded in the code. If you don't like this, take them out. 


ASSUMPTIONS:

Cubin makes some assumptions that you can override using setters. 

	nvcc = "/usr/local/cuda/bin/nvcc";
	arc = "sm_11";
	model = System.getProperty("sun.arch.data.model");






Adrian Challinor, London, UK, April 2010 
contact me at: adrian dot challinor at osiris dot co dot uk 




