Actualmente tengo un ciclo For paralelo similar a esto:manera más fácil de utilizar la GPU para el ciclo For paralelo
int testValues[16]={5,2,2,10,4,4,2,100,5,2,4,3,29,4,1,52};
parallel_for (1, 100, 1, [&](int i){
int var4;
int values[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
/* ...nested for loops */
for (var4=0; var4<16; var4++) {
if (values[var4] != testValues[var4]) break;
}
/* ...end nested loops */
}
He optimizado tanto como pueda hasta el punto que la única cosa más que puedo hacer es agregar más recursos.
Estoy interesado en utilizar la GPU para ayudar a procesar la tarea en paralelo. He leído que tareas paralelas embarazosas como esta pueden hacer uso de una GPU moderna con bastante eficacia.
Usando cualquier idioma, ¿cuál es la forma más fácil de usar la GPU para un bucle paralelo simple como este?
No sé nada sobre las arquitecturas GPU o el código nativo de la GPU.
Si su tarea es una tarea de computación numérica de algún tipo, o si puede volver a convertirla en un problema matemático basado en la matriz, entonces podría usar MATLAB. Los nuevos MATLAB son compatibles tanto con parallel-for ('parfor' de Parallel Computing Toolbox) como con Matriz Matriz en Nvidia CUDA GPUs. Ambas son relativamente indoloras, requiriendo solo cambios modestos al código MATLAB existente. –
Puede ser útil obtener más información sobre lo que intenta hacer aquí.Recuerde que la transferencia de datos desde la CPU a la GPU genera una sobrecarga significativa, por lo que el cálculo de la GPU solo aumenta el rendimiento si realiza un gran trabajo computacional por unidad de datos de entrada. Calcular el cuadrado de cada número en un vector no es un buen uso de GPGPU (casi ningún trabajo por unidad de datos); El cálculo de la FFT de un vector es un buen uso (mucho trabajo con pocos datos). –
Tengo varios bucles for anidados, en el ciclo más interno estoy usando los índices de bucle para calcular 16 valores y compararlos con la matriz testValues []. No debería haber ningún acceso significativo a la memoria. También estoy usando una tarjeta AMD/ATI (6850). – Flash