Introdução ao SYCL

menotti
80.6K views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Memória do dispositivo usando buffers e acessadores

Configurando a memória do dispositivo - Buffers

Descrição

Para manipular dados na memória do dispositivo, precisamos criar buffers SYCL.

O construtor de buffers para um ponteiro de dados brutos a serem gerenciados é o seguinte:

cl::sycl::buffer<typename T, int dimensions>(
    T* ptr, 
    cl::sycl::range<dimensions>(int range_size)
);

Tarefas

Crie buffers para os 2 vetores de entrada e também para o de saída.

Localização no código fonte:

// <<Setup device memory>>
Dica

// buffer for input 1
sycl::buffer<sycl::float4, 1> buf_a(&a, cl::sycl::range<1>{1});

Acessando a memória do dispositivo - Accessors

Descrição

O SYCL tem o conceito de acessadores que são usados para acessar o controle de solicitação sobre a memória do dispositivo a partir dos objetos buffer.

Os diferentes modos de acesso são encapsulados na seguinte classe enum:

enum class mode { 
  read,
  write, 
  read_write, 
  discard_write, 
  discard_read_write,
  atomic
};

localizada no namespace access.

Nesta fase, focaremos apenas os mais comuns: read, write e read_write.

Um acessador SYCL pode ser criado a partir de um buffer usando a seguinte construção:

// e.g., read access to buffer memory
auto sycl_acc = sycl_buf.get_access<cl::sycl::access::mode::read>(cgh)

onde cgh é uma instância do objeto manipulador do grupo de comandos SYCL cl::sycl::handler. É necessário que os acessadores sejam criados dentro do grupo de comandos para o qual serão usados.

Tarefas

Solicite acesso dos buffers para acessar os dados no dispositivo.

  • Acesso de leitura dos buffers de entrada
  • Acesso de gravação do buffer de saída

Localização no código fonte:

// <<Request device memory access>>
Dica

// read accessor for the memory in `buf_a`
auto a_acc = buf_a.get_access<sycl::access::mode::read>(cgh);

Vamos executar!

Olá mundo em SYCL
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content