Estoy intentando modificar un programa GPL escrito en C. Mi objetivo es reemplazar un método con una implementación CUDA, lo que significa que necesito compilar con nvcc en lugar de gcc. Necesito ayuda para construir el proyecto, no para implementarlo (no necesita saber nada sobre CUDA C para ayudar, no creo).Construyendo el programa GPL C con el módulo CUDA
Esta es la primera vez que intento cambiar un proyecto C de complejidad moderada que implica una .configure y Makefile. Honestamente, esta es la primera vez que hago cualquier cosa en C en mucho tiempo, incluyendo cualquier cosa relacionada con gcc o g ++, así que estoy bastante perdido.
No estoy muy interesado en aprender a configurar y Makefiles: esto es más un experimento. Me gustaría ver si la implementación del proyecto va bien antes de dedicar tiempo a crear un script de compilación adecuado. (No está dispuesto a aprender si es necesario, solo intenta dar una idea del alcance).
Dicho esto, ¿cuáles son mis opciones para construir este proyecto? Tengo una gran cantidad de preguntas ...
He intentado añadir "CC = NVCC" al archivo configure.in después AC_PROG_CC. Esto pareció funcionar: salió de la ejecución de configure y make mostró nvcc como el compilador. Sin embargo, make no compiló el archivo fuente con el kernel CUDA, sin reconocer la sintaxis específica de CUDA. No sé por qué, esperaba que esto solo funcionara.
¿Es posible compilar un archivo fuente con nvcc, y luego incluirlo en el paso de vinculación en el proceso de creación para el programa principal? ¿Si es así, cómo? (Esta pregunta podría no tener sentido - estoy realmente oxidado al respecto)
¿Cuál es la forma correcta de hacerlo?
¿Hay alguna manera rápida y sucia que podría utilizar para realizar pruebas?
¿Existe alguna herramienta secreta que todos utilicen para configurar y comprender estos archivos de configuración y Makefiles? Esto es incluso peor que los scripts Ant de Apache que estoy acostumbrado (Sí, estoy fuera de mi reino)
Lo que quizás se haya perdido es extensiones de archivo. nvcc utiliza extensiones de archivos para determinar qué contiene el código del dispositivo y qué no; cualquier código de dispositivo que contenga archivos debe tener una extensión '.cu' para compilarse correctamente. – talonmies
Simplemente curioso, ¿qué estás haciendo en la función CUDA? – arrayfire
Buen punto acerca de los archivos .cu. Voy a tratar de cambiar el nombre de algunos de los archivos de origen. – emulcahy