Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas

Nvidia función cudaMemcpy() no funciona

Ayer empecé un pequeño tutorial sobre CUDA (en versión pdf aquí), un lenguaje usado en C para programar sobre tarjetas gráficas Nvidia y aprovechar la enorme capacidad de cómputo de sus múltiplos núcleos.

El caso es que una de las instrucciones básicas es la función cudaMemcpy(), que se usa para mover contenido de la memoria del ordenador (Host) a la memoria de la GPU (Device) y viceversa para poder pasar variables entre ambos dispositivos... y si la instrucción no funciona, el compilador no avisa.


Para compilar un archivo con código CUDA debemos usar el compilador nvcc, que yo había instalado (ingenuo de mi) con el paquete "nvidia-cuda-toolkit". 
El código a ejecutar consistía en una simple prueba para ver que el intercambio de variables entre la CPU y la GPU estaban funcionando, así que en el código en C definía dos variables con valores 2 y 7 y la GPU sumaba las dos variables.

La salida del programa debía ser algo tan simple como:
2 + 7 = 9
así que ver una única línea de salida de 2 + 7 = 1 no resultaba muy esperanzador.

Tras un par de pruebas, vi que la instrucción para copiar variables entre las dos memorias no estaba funcionando, por lo que ni los valores 2 y 7 llegaban a la GPU, ni cualquiera que fuera el valor que esta calculaba regresaba al código principal.

¿Y la solución? Fácil, la versión de Cuda instalada en mi Ubuntu 14.04 era la 5.5, cuando debería haber sido la 6.5. Así que ha tocado desinstalar primero el paquete, aproveché para cambiar el driver de la gráfica, y ahora tengo la versión 6.5 de Cuda y la cosa funciona :)

Para instalar CUDA he seguido estas dos fuentes:

Así que si alguno tenéis un problema parecido, comprobad que la versión de CUDA instalada es la correcta, y la instaláis siguiendo los pasos definidos por NVIDIA.

¡A programar!
votar
Pese a que no suelo descargar mucho de Youtube, ni vídeos ni canciones, recientemente me he visto con la necesidad de descargar muchos vídeos de Youtube, más bien el audio de dichos vídeos, y para hacerlo he acabado optando por un sencillo script bash para Linux que con pocas líneas me ha sacado del apuro.

El script es tan sencillo que he decidido compartirlo en el blog para que algún lector desesperado en busca de un descargador de vídeos de Youtube pueda usarlo y disfrutarlo como yo.

Estos son los requisitos para ejecutar el script:
- Tener Linux (¡muerte a Windows!)
- Instalar youtube-dl con un comando tan sencillo como el siguiente:
sudo apt-get install youtube-dl
Ahora voy a explicar un poco en que consiste este script mass Youtube downloader, para que podáis modificarlo si lo necesitáis.

#!/bin/sh

while read inputline
do
  youtube_url="$(echo $inputline)"
  youtube-dl -x --audio-format mp3 $youtube_url
done < videos.txt

Como véis el script es súper sencillo así que no hay mucho que explicar.
Lo primero y más importante es como especificar que vídeos hay que descargar. El objetivo es descargar muchos videos a la vez, así que la solución es crear un archivo de texto de nombre videos.txt que tenga en cada línea la URL de un vídeo. Así de fácil.

El script tal y como lo he escrito lo que hace es solo descargar el audio de los vídeos en formato mp3, si queréis descargar el archivo de vídeo cambiad esta línea:
youtube-dl -x --audio-format mp3 $youtube_url
por esta otra:
youtube-dl $youtube_url
¿Y si queréis vídeo y audio conservando ambos archivos? Pues dejad la línea así:
youtube-dl -x --audio-format mp3 -k $youtube_url

Para ejecutar el script copiad y pegad el código en un archivo llamado youtube_download.sh y copiad el fichero de texto con las URLs de los vídeos en el mismo directorio.
Después abrid la consola y tras haber dado permisos de ejecución al archivo youtube_download.sh ejecutad el siguiente comando:

./youtube_downloader.sh

Esto es todo, espero que os sea útil esta especie de bulk Youtube downloader, a mi me ha sido de gran utilidad.
votar
Aprender a programar de forma autodidáctica puede ser un poco tedioso si no se escoge la forma correcta de hacerlo, ya sea aprendiendo lenguajes sin tener antes una pequeña base de programación o leyendo enormes libros mal estructurados destinados a gente con mucho más nivel.

Para todos aquellos que desean aprender a programar de forma interactiva siguiendo cursos paso a paso hoy quiero recomendaros una web que a mi me ha parecido realmente útil. 
Se trata de Codeacademy.com, que como su nombre indica es una especie de "Academia para programar" porque en ella encontraremos decenas de cursos de programación gratis.

Hay multitud de cursos para lenguajes diversos, centrándose sobre todo en aquellos lenguajes para el desarrollo web y aquellos con más popularidad ultimamente, como pueden ser Javascript, Html o Python.

El sistema de aprendizaje es muy sencillo y efectivo, cada curso está estructurado en secciones que constan de diversos ejercicios acompañados de una pequeña lección. Lo interesante es que estas lecciones son muy muy cortas, suelen ser una pequeña descripción de un concepto y un ejemplo, y acto seguido ya tenemos que pasar a programar nosotros mismos un pequeño ejercicio que se nos pide.


Por ejemplo, un ejercicio puede ser "Los bucles while en Pyton" en el que nos dirían que un bucle while es una estructura iterativa que permite ejecutar un trozo de código repetidas veces hasta que se deje de cumplir una condición y acto seguido ya nos pedirían programar un sencillo bucle, para que de verdad podamos aprender y entender como funciona el bucle y como implementarlo.

La web consta además de un sistema de puntos y recompensas para que a la vez que aprendamos podamos ganar diferentes medallas, como al de haber completado 50 ejercicios o la de haber completado todos los cursos de HTML.

Os animo a todos los que queráis aprender a programar fácil a que probéis codeacademy.com, estoy seguro que os será de gran ayuda.
votar