Bonjour j'ai trouver un bot de code sur internet pour utiliser OpenCl avec java mais parament mon GPU est plus lent que mon CPU (j'ai essayer c avec diférents ordinateurs sans sucsées)
resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 import com.amd.aparapi.Kernel; import com.amd.aparapi.Range; public class App { static final int size = 50000000; static final float[] a = new float[size]; static final float[] b = new float[size]; static final float[] sum = new float[size]; public static void main( String[] args ) { System.out.println("test CPU"); CPU(); System.out.println("test GPU"); GPU(); System.out.println("test GPU2"); GPU1(); } static void GPU() { for (int i = 0; i < size; i++) { sum[i] = (float)(Math.cos(Math.sin(a[i])) + Math.sin(Math.cos(b[i]))); } Kernel kernel = new Kernel() { @Override public void run() { int gid = getGlobalId(); sum[gid] = (float)(Math.cos(Math.sin(a[gid])) + Math.sin(Math.cos(b[gid]))); } }; long t1 = System.currentTimeMillis(); kernel.execute(Range.create(size)); long t2 = System.currentTimeMillis(); System.out.println("Execution mode = "+kernel.getExecutionMode()); kernel.dispose(); System.out.println(t2-t1); t1 = 0; t2 = 0; } static void GPU1() { for (int i = 0; i < size; i++) { sum[i] = (float)(Math.cos(Math.sin(a[i])) + Math.sin(Math.cos(b[i]))); } Kernel kernel = new Kernel(){ @Override public void run() { int gid = getGlobalId(); sum[gid] = a[gid] + b[gid]; } }; long t1 = System.currentTimeMillis(); kernel.execute(Range.create(size)); long t2 = System.currentTimeMillis(); System.out.println("Execution mode = "+kernel.getExecutionMode()); kernel.dispose(); System.out.println(t2-t1); t1 = 0; t2 = 0; } static void CPU() { for (int i = 0; i < size; i++) { sum[i] = (float)(Math.cos(Math.sin(a[i])) + Math.sin(Math.cos(b[i]))); } long t1 = System.currentTimeMillis(); for(int i=0;i<size;i++) { sum[i]=a[i]+b[i]; } System.out.println("Execution mode = normal"); long t2 = System.currentTimeMillis(); System.out.println(t2-t1); t1 = 0; t2 = 0; }
c'est quoi ce mode d'éxecution en jtp et sur tout pour quoi le "Failed to load aparapi native library" ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 test CPU Execution mode = normal 105 test GPU Check your environment. Failed to load aparapi native library aparapi_x86_64 or possibly failed to locate opencl native library (opencl.dll/opencl.so). Ensure that both are in your PATH (windows) or in LD_LIBRARY_PATH (linux). Execution mode = JTP 5693 test GPU2 Execution mode = JTP 1907
et c'est quoi la diference entre GPU et GPU1?
je ne comprend absolument rien a opencl alors c'est quoi le lien entre opencl et opengl?
merci d'avence pour vos reponces qui sans doute serons trez utiles.
Partager