Documentation: Multiple GPUs
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- documentation
Línea de trabajo
Empieza revisando el ejemplo de Python proporcionado y los ejemplos de documentación existentes del repositorio para determinar dónde debe ubicarse un ejemplo de múltiples GPU. Verifica que el ejemplo sea correcto y reproducible, y después añádelo en la ubicación adecuada de la documentación; se considera completado cuando el ejemplo explica la configuración de múltiples GPU y funciona como se describe.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I think it would be great to have an example for using multiple GPUs.
Here is what I tried. If thats the right way to do it, then you may add it as an example.
It seems to scale fine (tested up to 7 GPUs) and nvidia-smi reports 96% util.
import time
import numpy as np
import arrayfire as af
import argparse
af.set_backend('cuda')
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('gpus', type=int)
parser.add_argument('-runs', type=int, default=100)
args = parser.parse_args()
GPUS = args.gpus
N = 5000
runs = args.runs
# The simple task we want to solve:
# we have a huge list of vectors X and want to calculate the distance between all of them
# this will result in a huge distance matrix M
# the resulting matrix should be multiplied by a vector alpha
X = np.random.rand(100, N)
Alpha = np.random.rand(N,1)
#copy data once:
xGPU = []
alphaGPU = []
for i in range(GPUS):
af.set_device(i)
x = af.to_array(X)
xGPU.append(x)
alpha = af.to_array(Alpha)
alphaGPU.append(alpha)
sub = lambda a,b: a - b
print("init finished")
for _ in range(runs):
startTime = time.time()
splitSize = int(np.ceil(N / GPUS))
#print("Temp data will ocupy at least {:.2f} MB on the gpu.".format((X.shape[0] * splitSize * X.shape[1]) *8 /1024/1024))
result = []
for i in range(GPUS):
af.set_device(i)
x = xGPU[i]
alpha = alphaGPU[i]
start = i*splitSize
end = min((i+1)*splitSize, N)
diff = af.broadcast(sub, af.tile(x[:,start:end],1,1,x.shape[1]), af.moddims(x,x.shape[0],1,x.shape[1]))
diff = af.sqrt(af.sum(af.pow(diff,2),0) )
r = af.matmul(af.moddims(diff, diff.shape[1], diff.shape[2]), alpha)
result.append(r)
total = 0
for i in range(GPUS):
af.set_device(i)
total += af.sum(result[i])
print("Took {} sec".format(time.time() - startTime ))
- Lenguaje dominante
- Python
- Estrellas
- 422
- Forks
- 63
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de arrayfire/arrayfire-python
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
arrayfire/arrayfire-python#271 ·
-
Unwrap phase function Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
arrayfire/arrayfire-python#270 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
arrayfire/arrayfire-python#269 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
arrayfire/arrayfire-python#268 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
arrayfire/arrayfire-python#267 · 1 comentario · 1 reacción ·
Todos los issues de arrayfire/arrayfire-python
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
learningequality/ricecooker#747 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
run-llama/llama_index#23199 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
KhronosGroup/glTF-Blender-IO#2769 ·