Проблема с графическим процессором NVIDIA для матричных операций

Я столкнулся с проблемой с моим простым ядром для сложного умножения матриц, вот оно:

__kernel void myGEMMcomplex(__global double2* A, __global double2* B,__global double2* C, int rowsB, int colsB, int rowsA)
{
    int globalRow = get_global_id(0); 
    int globalCol = get_global_id(1);

    Complex acc;
    acc.x = 0;
    acc.y = 0;

    for (int k=0; k< rowsB; k++) {
         acc += multiply(A[k*rowsA + globalRow],B[globalCol*rowsB + k]);
    }

    C[globalCol*rowsA + globalRow] = acc;
}

Я могу вычислять довольно большие матрицы с этим ядром (например, 7000x7000), когда я использую свой Intel HD 4000, однако, с моим NVIDIA GF 720M он может рассчитывать умножение только небольших матриц 1000x1000. С большими матрицами это вызывает исключение:

`Exception in thread "main"com.nativelibs4java.opencl.CLException$OutOfResources: OutOfResources (make sure to log all errors with environment variable CL_LOG_ERRORS=stdout)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at java.lang.Class.newInstance(Class.java:442)
at com.nativelibs4java.opencl.CLException.error(CLException.java:308)
at com.nativelibs4java.opencl.CLBuffer.read(CLBuffer.java:453)
at com.nativelibs4java.opencl.CLBuffer.read(CLBuffer.java:383)
at com.nativelibs4java.opencl.CLBuffer.read(CLBuffer.java:211)
at com.mycompany.mavenproject1.JavaCLTutorial1.main(JavaCLTutorial1.java:91)`

А также выдает предупреждение на экране моего компьютера: "Драйверы дисплея перестали отвечать и восстановились". Я использую встроенный графический процессор для своего дисплея при выполнении расчетов с GeForce, но я не заметил значительных преимуществ этого. Более того, я также разработал ядро ​​инверсии матриц, и хотя я могу вычислять инверсию матриц 2000x2000 и более при использовании Intel HD, мой графический процессор может вычислять инверсию только матриц 200x200....

Может быть, кто-то может объяснить, в чем проблема, почему мой графический процессор менее стабилен, чем встроенный Intel HD и есть ли способ решить эту проблему?

0 ответов

Другие вопросы по тегам