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)

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;
    }
resultat :
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
c'est quoi ce mode d'éxecution en jtp et sur tout pour quoi le "Failed to load aparapi native library" ?
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.