2014년 11월 4일 화요일

무작정 JCUDA 설치하기

CUDA를 설치하였는데 Visual Studio도 없어서 sample을 어떻게 수정하고 빌드해야할지 막막하였습니다.
Java에서 CUDA를 사용하는 방법이 없을까 싶어서 검색해보았더니 JCUDA라는것도 있어서 이번에도 무작정 따라해봤습니다.

http://www.jcuda.org/ 여기를 방문합니다.

General setup
In order to use JCuda, you need an installation of the CUDA driver and toolkit, which may be obtained from the NVIDIA CUDA download site. (Note that there may be some delay between the release of a new CUDA version and the release of the matching JCuda version). You should first install the Developer Drivers for your operating system, and then the matching CUDA Toolkit. Plaese consult also the documentation from the NVIDIA site for the proper setup and installation procedure.
The SDK and code samples are not required to use JCuda, but the code examples may be helpful to get started and to see whether CUDA is working in general.
After CUDA has been properly installed, you may download the JCuda archive for your operating system from the downloads section. The archives contain the JAR files, and the matching native libraries (which are .DLL files for Windows, .SO files for Linux and .DYLIB files for MacOS).
The JAR files have to be present in the CLASSPATH, and the native library files must be located in a path that is visible for Java. In most cases, this should either be a path that is given as a java.library.path for the JVM, or the root directory of the project. (Alternatively, they can also be in a path that is contained in an environment variable like the PATH environment variable on Windows or the LD_LIBRARY_PATH environment variable on Linux).

1. JCuda를 사용하기 위해서 CUDA driver와 toolkit를 설치해야합니다.(이전 포스팅 참조)

2. http://www.jcuda.org/downloads/downloads.html 여기에서 자기에 맞는 binary를 받습니다. 윈도우라면 dll, linux라면 so 파일등

3. 다운 받은 파일을 압축을 풀고 CLASSPATH등으로 연결을 하라는데... 저는 그냥 java프로젝트쪽으로 복사해 둘 예정입니다.

4. java CUDA 예제를 하나 만들고 lib폴더를 하나만들고 그쪽으로 모두 복사합니다.

5. dll 파일은 path잡혀있는 곳으로 복사합니다.
저는 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin 여기로 하였습니다. CUDA를 설치하는 여기 경로가 path에 자동으로 추가가 되어있습니다.
이클립스에서 lib/jar를 선택한 파일을 add to build path해서 실행하면 됩니다.

6. 샘플 코드는 http://www.jcuda.org/tutorial/TutorialIndex.html 여기에 있는
JCudaRuntimeTest.java 해당내용을 만듭니다.


혹시 실행시 아래와 같은 에러가 난다면 jre 버전이 자신의 시스템과 맞는지 확인이 필요합니다.
This error message may occur on Windows when you are trying to use
- a 64 bit library on a 32 bit system or
- a 32 bit library on a 64 bit system
or when you are trying to start the program with the wrong Java version.
You should first check that you have downloaded the appropriate version for your system. If you already have the right version, make sure that you also have the right version of Java: On a 64 bit Windows, you can use the 32 bit Java Runtime Environment (JRE) for most applications, but you can not use the 32 bit JRE when you want to load a 64 bit native library. When you want to load a 64 bit native library, you also have to use the 64 bit version of the Java Runtime Environment.
아래와 같은 예제코드를 실행시켰더니 결과가 나옵니다.

import jcuda.*;
import jcuda.runtime.*;

public class CUDAtest {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Pointer pointer = new Pointer();
  JCuda.cudaMalloc(pointer, 4);
  System.out.println("Pointer: "+pointer);
  JCuda.cudaFree(pointer);
 }
}


결과
Pointer: Pointer[nativePointer=0x5015c0000,byteOffset=0]

숫자가 무엇을 의미하는지는 모르겠지만, 다음에는 내용을 분석해보고 접근해 보도록 하겠습니다.

댓글 없음:

댓글 쓰기