46 printf(
"GPU LDGM in progress .... \n");
71 cuda_check_error(
"error_vec");
73 cuda_check_error(
"sync_vec");
95 cuda_check_error(
"cudaFreeHost");
103 cuda_check_error(
"cudaHostAlloc");
141 cuda_check_error(
"memcpy OUTBUF");
167 char *received = received_data;
176 std::map <int, int> merged_intervals;
177 std::map<int, int>::iterator map_it;
179 if ( valid_data.size() != 0 )
181 for ( map_it = valid_data.begin(); map_it != valid_data.end(); )
183 int start = map_it->first;
184 int length = map_it->second;
186 length += map_it->second;
187 merged_intervals.insert ( std::pair<int, int> (
start, length) );
197 cuda_check_error(
"error_vec");
203 cuda_check_error(
"sync_vec");
212 if ( merged_intervals.size() != 0
218 int node_offset = i * p_size;
220 map_it = merged_intervals.begin();
223 while ( (map_it->first <= node_offset) && map_it != merged_intervals.end() )
228 if ( found ) map_it--;
230 if ( found && (map_it->first + map_it->second) >=
231 (node_offset + p_size) )
240 memset(received + (i * p_size), 0x0, p_size);
292 cuda_check_error(
"SYNC_VEC");
298 cuda_check_error(
"ERROR_VEC");
302 cuda_check_error(
"ERROR_VEC");
322 gpu_decode_upgrade(received,
PCM,
SYNC_VEC,
ERROR_VEC, not_done, frame_size,
error_vec,
sync_vec,
param_m,
param_k, w_f, buf_size, p_size);
326 int my_frame_size = 0;
327 memcpy(&my_frame_size, received + 8, 4);
329 memcpy(&crc_origin, received + 4, 4);
335 if (crc_origin != crc)
std::map< char *, size_t > bufferSizes
char * decode_frame(char *received_data, int buf_size, int *frame_size, std::map< int, int > valid_data)
void encode(char *data_ptr, char *parity_ptr)
void free_out_buf(char *buf)
std::queue< char * > freeBuffers
void * alloc_buf(int size)
static const int HEADER_SIZE
unsigned short max_row_weight
unsigned short packet_size
unsigned int get_packet_size() const
This class implements timer utils.
double elapsed_time_ms() const
uint32_t crc32buf(const char *buf, size_t len)
#define cudaHostAllocDefault
#define cudaMemcpyHostToDevice
#define cudaGetErrorString
void gpu_encode_upgrade(char *source_data, int *OUTBUF, int *PCM, int param_k, int param_m, int w_f, int packet_size, int buf_size)
void gpu_decode_upgrade(char *data, int *PCM, int *SYNC_VEC, int *ERROR_VEC, int not_done, int *frame_size, int *error_vec, int *sync_vec, int M, int K, int w_f, int buf_size, int packet_size)