Социальная Сеть

Сообщение Важная

Недавние Посты



Случайная сообщение

Перевод

Italiano flagArabo flagCinese (Semplificato) flagOlandese flagInglese flagFrancese flagTedesco flagGiapponese flagCoreano flagPolacco flagPortoghese flagRusso flagSpagnolo flagTurco flag

Календарь

Август: 2009
L М М G В S D
«Июль Сентября »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Архив

Категории

PyOpenCL и PyCuda, OpenCL и CUDA доступ из Python

Опубликовано: 28 августа 2009 года. Последнее редактирование: 28 августа 2009 года.

PyOpenCL вам доступ к API для параллельных вычислений OpenCL от Python.
Документация PyOpenCL доступна на этой странице. Это можно скачать с этой страницы.
Ниже приведен пример использования PyOpenCL

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
  cl импорт pyopencl в п
 импорт NumPy
 as la импорт NumPy. linalg в

 . rand ( 50000 ) . astype ( numpy. float32 ) = NumPy. случайным образом. рандов (50000). astype (NumPy. float32)
 . rand ( 50000 ) . astype ( numpy. float32 ) б = NumPy. случайным образом. рандов (50000). astype (NumPy. float32)

 cl. device_type . ALL ) CTX = кл. create_context_from_type (кл. device_type. ВСЕ)
 ctx ) Очередь = кл. CommandQueue (CTX)

 MF = кл. mem_flags
 a_buf = кл. create_host_buffer (
         | mf. COPY_HOST_PTR , a ) CTX, MF READ_ONLY |.. MF COPY_HOST_PTR,)
 b_buf = кл. create_host_buffer (
         | mf. COPY_HOST_PTR , b ) CTX, MF READ_ONLY |.. MF COPY_HOST_PTR, б)
 ctx , mf. WRITE_ONLY , b. nbytes ) dest_buf = кл. create_buffer (CTX, MF. WRITE_ONLY, б.-байт)

 ctx , """ PRG = кл. create_program_with_source (CTX, "" " 
      __kernel недействительными сумма (__ глобальный строительства поплавок *, 
      Подружился строительства поплавок * B, C Подружился плавать *) 
      { 
        INT GID = get_global_id (0); 
        С [GID] = [GID] + Ь [GID]; 
      } 
      . build ( ) "" "). Построить ()

 queue , a. shape , a_buf , b_buf , dest_buf ) PRG. сумма (очереди,. форма, a_buf, b_buf, dest_buf)

 a ) a_plus_b = NumPy. empty_like ()
 dest_buf , a_plus_b ) . wait ( ) кл. enqueue_read_buffer (очереди, dest_buf, a_plus_b). ждать ()

 a_plus_b - ( a+b ) ) печать нормой. (a_plus_b - (+ Ь)) 

PyCuda вам доступ к API для CUDA Python. Документация доступна на этом странице вы можете скачать с этой страницы.
Ниже приведен пример использования PyCuda

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
  импорт PyCuda. AutoInit
 as drv импорт PyCuda. Водитель, как ДРВ
 импорт NumPy

 import SourceModule от PyCuda. компилятора SourceModule импорта
 """ мод = SourceModule ("" " 
  __global__ multiply_them недействительными (поплавок * приемник, плавать *, поплавок * б) 
  { 
    строительства Int я = threadIdx.x; 
    Назначение [я] = A [I] * B [я]; 
  } 
  "" ")

 "multiply_them" ) multiply_them = мод. get_function ("multiply_them")

 . randn ( 400 ) . astype ( numpy. float32 ) = NumPy. случайным образом. randn (400). astype (NumPy. float32)
 . randn ( 400 ) . astype ( numpy. float32 ) б = NumPy. случайным образом. randn (400). astype (NumPy. float32)

 a ) приемник = NumPy. zeros_like ()
 multiply_them (
         , drv. In ( a ) , drv. In ( b ) , ДРВ. Из (приемник), ДРВ. В (), ДРВ. В (б),
         400 , 1 , 1 ) ) блок = (400, 1, 1))

 печать приемник-б * 

Опубликовано в категории: Программирование , Python .
Ключевые слова: , .
Комментарии


Оставьте ответ


:alien::angel::angry::blink::blush::cheerful::cool::cwy::devil::dizzy::ermm::face::getlost::biggrin::happy::heart::kissing::lol::ninja::pinch::pouty::sad::shocked::sick::sideways::silly::sleeping::smile::tongue::unsure::w00t::wassat::whistle::wink::wub: