PIPS
terapix.c File Reference
#include <stdlib.h>
+ Include dependency graph for terapix.c:

Go to the source code of this file.

Functions

void P4A_copy_from_accel (size_t element_size, int *host_address, int *accel_address)
 A small implementation of the runtime used by the code generated by the kernel_load_store and isolate_statement. More...
 
void P4A_copy_to_accel (size_t element_size, int *host_address, int *accel_address)
 
void P4A_copy_from_accel_1d (size_t element_size, size_t d1_size, size_t d1_block_size, size_t d1_offset, int *host_address, int *accel_address)
 To copy parts of 1D arrays. More...
 
void P4A_copy_to_accel_1d (size_t element_size, size_t d1_size, size_t d1_block_size, size_t d1_offset, int *host_address, int *accel_address)
 
void P4A_copy_from_accel_2d (size_t element_size, size_t d1_size, size_t d2_size, size_t d1_block_size, size_t d2_block_size, size_t d1_offset, size_t d2_offset, int host_address[d2_size], int accel_address[d1_block_size][d2_block_size])
 To copy parts of 2D arrays. More...
 
void P4A_copy_to_accel_2d (size_t element_size, size_t d1_size, size_t d2_size, size_t d1_block_size, size_t d2_block_size, size_t d1_offset, size_t d2_offset, int host_address[d2_size], int accel_address[d1_block_size][d2_block_size])
 
void P4A_copy_to_accel_3d (size_t element_size, size_t d1_size, size_t d2_size, size_t d3_size, size_t d1_block_size, size_t d2_block_size, size_t d3_block_size, size_t d1_offset, size_t d2_offset, size_t d3_offset, int host_address[d3_size], int accel_address[d1_block_size][d2_block_size][d3_block_size])
 
void P4A_accel_malloc (void **ptr, size_t n)
 Allocate memory on the accelerator. More...
 
void P4A_accel_free (void *ptr)
 Deallocate memory on the accelerator. More...
 

Function Documentation

◆ P4A_accel_free()

void P4A_accel_free ( void *  ptr)

Deallocate memory on the accelerator.

Definition at line 98 of file terapix.c.

98  {
99  free(ptr);
100 }
void free(void *)

References free().

+ Here is the call graph for this function:

◆ P4A_accel_malloc()

void P4A_accel_malloc ( void **  ptr,
size_t  n 
)

Allocate memory on the accelerator.

Definition at line 92 of file terapix.c.

92  {
93  if(n) *ptr=malloc(n);
94  else *ptr=NULL;
95 }
void * malloc(YYSIZE_T)

References malloc().

+ Here is the call graph for this function:

◆ P4A_copy_from_accel()

void P4A_copy_from_accel ( size_t  element_size,
int host_address,
int accel_address 
)

A small implementation of the runtime used by the code generated by the kernel_load_store and isolate_statement.

To copy scalars

Definition at line 9 of file terapix.c.

11  {
12  host_address[0] = accel_address[0];
13 }

◆ P4A_copy_from_accel_1d()

void P4A_copy_from_accel_1d ( size_t  element_size,
size_t  d1_size,
size_t  d1_block_size,
size_t  d1_offset,
int host_address,
int accel_address 
)

To copy parts of 1D arrays.

Definition at line 24 of file terapix.c.

29  {
30  size_t i;
31  for(i = 0; i < d1_block_size; i++)
32  host_address[i+d1_offset] = accel_address[i];
33 }

◆ P4A_copy_from_accel_2d()

void P4A_copy_from_accel_2d ( size_t  element_size,
size_t  d1_size,
size_t  d2_size,
size_t  d1_block_size,
size_t  d2_block_size,
size_t  d1_offset,
size_t  d2_offset,
int  host_address[d2_size],
int  accel_address[d1_block_size][d2_block_size] 
)

To copy parts of 2D arrays.

Definition at line 50 of file terapix.c.

55  {
56  size_t i, j;
57  for(i = 0; i < d1_block_size; i++)
58  for(j = 0; j < d2_block_size; j++)
59  host_address[d2_offset+(i+d1_offset)*d2_size+j] =
60  accel_address[i][j];
61 }

◆ P4A_copy_to_accel()

void P4A_copy_to_accel ( size_t  element_size,
int host_address,
int accel_address 
)

Definition at line 16 of file terapix.c.

18  {
19  for(size_t i = 0; i < element_size; i++)
20  accel_address[i] = host_address[i];
21 }

◆ P4A_copy_to_accel_1d()

void P4A_copy_to_accel_1d ( size_t  element_size,
size_t  d1_size,
size_t  d1_block_size,
size_t  d1_offset,
int host_address,
int accel_address 
)

Definition at line 36 of file terapix.c.

41  {
42  size_t i;
43  for(i = 0; i < d1_block_size; i++)
44  accel_address[i] = host_address[i+d1_offset];
45 }

◆ P4A_copy_to_accel_2d()

void P4A_copy_to_accel_2d ( size_t  element_size,
size_t  d1_size,
size_t  d2_size,
size_t  d1_block_size,
size_t  d2_block_size,
size_t  d1_offset,
size_t  d2_offset,
int  host_address[d2_size],
int  accel_address[d1_block_size][d2_block_size] 
)

Definition at line 64 of file terapix.c.

69  {
70  size_t i, j;
71  for(i = 0; i < d1_block_size; i++)
72  for(j = 0; j < d2_block_size; j++)
73  accel_address[i][j] =
74  host_address[d2_offset+(i + d1_offset)*d2_size+j];
75 }

◆ P4A_copy_to_accel_3d()

void P4A_copy_to_accel_3d ( size_t  element_size,
size_t  d1_size,
size_t  d2_size,
size_t  d3_size,
size_t  d1_block_size,
size_t  d2_block_size,
size_t  d3_block_size,
size_t  d1_offset,
size_t  d2_offset,
size_t  d3_offset,
int  host_address[d3_size],
int  accel_address[d1_block_size][d2_block_size][d3_block_size] 
)

Definition at line 77 of file terapix.c.

82  {
83  size_t i, j,k;
84  for(i = 0; i < d1_block_size; i++)
85  for(j = 0; j < d2_block_size; j++)
86  for(k = 0; k < d3_block_size; k++)
87  accel_address[i][j][k] =
88  host_address[d3_offset+( (i + d1_offset)*d2_size + j + d2_offset)*d3_size+j];
89 }