Ошибка выполнения Rootbeer, как ее исправить?
Я учусь использовать Rootbeer, поэтому я сделал следующие вещи:
[1] Скачанный Rootbeer-1.2.3.jar
[2] Установленный набор инструментов CUDA и драйвер CUDA: http://www.nvidia.com/content/cuda/cuda-downloads.html
[3] Скомпилирован следующий пример программы.
[4] Запустил ArrayMultApp из NetBeans 8.0.2
import java.util.List;
import java.util.ArrayList;
import org.trifort.rootbeer.runtime.Kernel;
import org.trifort.rootbeer.runtime.Rootbeer;
public class ArrayMultApp
{
public void multArray(int[] array)
{
List<Kernel> jobs=new ArrayList();
for (int i=0;i<array.length;++i) jobs.add(new ArrayMult(array,i));
Rootbeer rootbeer=new Rootbeer();
rootbeer.run(jobs);
}
public static void main(String[] args)
{
ArrayMultApp app=new ArrayMultApp();
int[] array=new int[10];
for (int i=0;i<array.length;++i) array[i]=i;
for (int i=0;i<array.length;++i) System.out.println("start array["+i+"]: "+array[i]);
app.multArray(array);
for (int i=0;i<array.length;++i) System.out.println("final array["+i+"]: "+array[i]);
}
}
class ArrayMult implements Kernel
{
private int[] m_source;
private int m_index;
public ArrayMult(int[] source,int index)
{
m_source=source;
m_index=index;
}
public void gpuMethod()
{
m_source[m_index]*=11;
}
}
Но я получил следующее сообщение об ошибке:
start array[0]: 0
start array[1]: 1
start array[2]: 2
start array[3]: 3
start array[4]: 4
start array[5]: 5
start array[6]: 6
start array[7]: 7
start array[8]: 8
start array[9]: 9
Exception in thread "main" java.lang.ClassCastException: ArrayMult cannot be cast to org.trifort.rootbeer.runtime.CompiledKernel
at org.trifort.rootbeer.runtime.CUDAContext.setKernel(CUDAContext.java:119)Java Result: 1
У меня Intel Core i7 x 980, NVIDA GeForce GTX 780 и Java 8 на Win 7 64 бит.
Я скопировал образец приложения с сайта Rootbeer, почему я получил сообщение об ошибке и как его исправить?
Изменить: я забыл упомянуть одну вещь, во время установки, он сказал, что у меня не было Microsoft Visual Studio, что-то подобное и сказал, что некоторые части о том, что не было установлено, я думал, что я разработчик Java, я не нужна Visual Studio, и я не возражаю против отсутствия этих частей, может ли это быть проблемой? Означает ли это, что мне нужно сначала купить и установить Microsoft Visual Studio, прежде чем я смогу использовать Rootbeer для разработки на Java?
Я следовал инструкциям, чтобы перейти в [ C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\bin\win64\Release> ], и выполнил множество тестов, все они работают нормально, и я вижу изображения, обрабатываемые в маленьких окнах правильно.
Когда я попытался сделать это, я получил следующую ошибку:
C:\Dir_Rootbeer_Samples\dist>java -jar lib/Rootbeer-1.2.3.jar Rootbeer_Samples.jar Rootbeer_Samples-GPU.jar
warning: sm_12 and sm_11 not supported with recursion. use -norecursion to enable.
warning: sm_12 and sm_11 not supported with doubles. use -nodoubles to enable.
caching package names for: C:\Dir_Rootbeer_Samples\dist\Rootbeer_Samples.jar
cpool == null
java.lang.NullPointerException
at soot.rbclassload.RootbeerClassLoader.loadHierarchySootClasses(RootbeerClassLoader.java:963)
at soot.rbclassload.RootbeerClassLoader.loadNecessaryClasses(RootbeerClassLoader.java:294)
at org.trifort.rootbeer.entry.RootbeerCompiler.setupSoot(RootbeerCompiler.java:198)
at org.trifort.rootbeer.entry.RootbeerCompiler.compile(RootbeerCompiler.java:219)
at org.trifort.rootbeer.entry.RootbeerCompiler.compile(RootbeerCompiler.java:213)
at org.trifort.rootbeer.entry.Main.run(Main.java:208)
at org.trifort.rootbeer.entry.Main.main(Main.java:244)
caching package names for: C:\Dir_Rootbeer_Samples\dist\lib\Rootbeer-1.2.3.jar
caching package names for: C:\Program Files\Java\jre1.8.0_20\lib\rt.jar
cpool == null
java.lang.NullPointerException
at soot.rbclassload.RootbeerClassLoader.loadHierarchySootClasses(RootbeerClassLoader.java:963)
at soot.rbclassload.RootbeerClassLoader.loadNecessaryClasses(RootbeerClassLoader.java:294)
at org.trifort.rootbeer.entry.RootbeerCompiler.setupSoot(RootbeerCompiler.java:198)
at org.trifort.rootbeer.entry.RootbeerCompiler.compile(RootbeerCompiler.java:219)
at org.trifort.rootbeer.entry.RootbeerCompiler.compile(RootbeerCompiler.java:213)
at org.trifort.rootbeer.entry.Main.run(Main.java:208)
at org.trifort.rootbeer.entry.Main.main(Main.java:244)
caching package names for: Rootbeer_Samples.jar
cpool == null
java.lang.NullPointerException
at soot.rbclassload.RootbeerClassLoader.loadHierarchySootClasses(RootbeerClassLoader.java:963)
at soot.rbclassload.RootbeerClassLoader.loadNecessaryClasses(RootbeerClassLoader.java:294)
at org.trifort.rootbeer.entry.RootbeerCompiler.setupSoot(RootbeerCompiler.java:198)
at org.trifort.rootbeer.entry.RootbeerCompiler.compile(RootbeerCompiler.java:219)
at org.trifort.rootbeer.entry.RootbeerCompiler.compile(RootbeerCompiler.java:213)
at org.trifort.rootbeer.entry.Main.run(Main.java:208)
at org.trifort.rootbeer.entry.Main.main(Main.java:244)
remapping class: java.util.concurrent.atomic.AtomicLong
java.lang.NullPointerException
at soot.rbclassload.RootbeerClassLoader.remapClasses(RootbeerClassLoader.java:998)
at soot.rbclassload.RootbeerClassLoader.loadNecessaryClasses(RootbeerClassLoader.java:295)
at org.trifort.rootbeer.entry.RootbeerCompiler.setupSoot(RootbeerCompiler.java:198)
at org.trifort.rootbeer.entry.RootbeerCompiler.compile(RootbeerCompiler.java:219)
at org.trifort.rootbeer.entry.RootbeerCompiler.compile(RootbeerCompiler.java:213)
at org.trifort.rootbeer.entry.Main.run(Main.java:208)
at org.trifort.rootbeer.entry.Main.main(Main.java:244)
C:\Dir_Rootbeer_Samples\dist>