¿Es posible definir mis propias funciones en código OpenCL, para que los núcleos puedan llamarlas? Sí, ¿dónde puedo ver un ejemplo simple?Funciones en línea definidas por el usuario OpenCL
Respuesta
Sobre la base de los ejemplos de código here que acaba de escribir funciones como:
inline int add(int a,int b)
{
return a+b;
}
(Ej miro el archivo .cl en el dXTC o ejemplos ordenar bitónica..)
no lo hago saber si esa es una extensión de nvidia solamente, pero la documentación de OpenCL habla de "funciones auxiliares" y kernels.
Extraño, la especificación OpenCL no dice nada sobre el dispositivo – dmessf
Sí. Me pregunto si he olvidado mi memoria. O si Apple lo agregó como una extensión. Entonces, si me modificaron, modifíquenme hasta que se pruebe :-) – sigfpe
O ... si confundo con el código CUDA. He estado jugando con ambos. – sigfpe
función que se utiliza para crear el programa es ...
cl_program clCreateProgramWithSource (
cl_context context,
cl_uint count,
const char **strings,
const size_t *lengths,
cl_int *errcode_ret)
Puede colocar funciones dentro de las cadenas parámetro de este tipo,
float AddVector(float a, float b)
{
return a + b;
}
kernel void VectorAdd(
global read_only float* a,
global read_only float* b,
global write_only float* c)
{
int index = get_global_id(0);
//c[index] = a[index] + b[index];
c[index] = AddVector(a[index], b[index]);
}
Ahora usted tiene uno definido por el usuario función "AddVector" y una función del núcleo "VectorAdd"
Busqué en Google un poco, y seguí volviendo a esta pregunta :-P
Al final, lo que hice fue usar macros, dado que la línea de entrada dependería de la implementación de todos modos, y las macros no parecen tener una gran desventaja en el contexto de los programas de c99 OpenCL. por ejemplo:
#define getFilterBoardOffset(filter, inputPlane) \
((filter * gInputPlanes + inputPlane) * gFilterSizeSquared)
#define getResultBoardOffset(n, filter) \
((n * gNumFilters + filter) * gOutputBoardSizeSquared)
en lugar de:
inline float getFilterBoardOffset(float filter, int inputPlane) {
return (filter * gInputPlanes + inputPlane) * gFilterSizeSquared;
}
inline float getResultBoardOffset(float n, int filter) {
return (n * gNumFilters + filter) * gOutputBoardSizeSquared;
}
- 1. Depuración PostgreSQL Funciones definidas por el usuario
- 2. Fórmulas en funciones definidas por el usuario en R
- 3. Crear/Usar funciones definidas por el usuario en System.Data.SQLite?
- 4. Lista de funciones globales definidas por el usuario en JavaScript?
- 5. Funciones agregadas definidas por el usuario en Oracle PIVOT cláusula
- 6. Funciones definidas por el usuario de SQLITE en Lisp
- 7. ¿Cómo sobrecargar las funciones definidas por el usuario en Matlab?
- 8. Error al manejar funciones definidas por el usuario
- 9. Las funciones agregadas más útiles definidas por el usuario
- 10. Conversiones definidas por el usuario en C++
- 11. Creando conversiones definidas por el usuario
- 12. ¿Cuándo se evalúan las funciones definidas por el usuario en una consulta en Oracle?
- 13. Funciones agregadas definidas por el usuario con columnas de entrada múltiples en PostgreSQL
- 14. ¿Cómo usar las funciones SQL definidas por el usuario en .NET?
- 15. Funciones definidas por el usuario en Excel y problemas de velocidad
- 16. cómo cargar automáticamente las funciones definidas por el usuario en mathematica
- 17. ¿Dónde ubicar las funciones definidas por el usuario en Angular JS?
- 18. ¿Cómo obligo a Mathematica a incluir funciones definidas por el usuario en Simplify y FullSimplify?
- 19. mysql muestra la lista de funciones definidas por el usuario en phpmyadmin
- 20. Pregunta simple sobre el uso de funciones externas() y definidas por el usuario?
- 21. dónde poner las clases definidas por el usuario en Rails
- 22. Cómo escribir excepciones definidas por el usuario en C#?
- 23. Haskell: mostrar/obtener una lista de todas las funciones definidas por el usuario
- 24. ¿Cómo distinguir las funciones definidas por el usuario/biblioteca de un archivo compilado?
- 25. Número indefinido de argumentos para las funciones definidas por el usuario de SQL?
- 26. doctest funciones definidas localmente
- 27. Funciones definidas por el usuario: ¿son una mala práctica de codificación?
- 28. llamar a funciones definidas por el usuario con la opción Crear Tabla
- 29. Cómo conectar las funciones de bash definidas por el usuario con la tubería
- 30. Clasificación mediante comparador- Orden descendente (clases definidas por el usuario)
pregunta Viejo ... cualquier otra cosa que necesita de una respuesta? –
Parece que el título y la pregunta son diferentes? Título solicita específicamente 'en línea', mientras que la pregunta solo pregunta si podemos definir nuestras funciones ... –