FPGA direct p2p communication

- 1 min

cfg 파일 [connectivity] 정리

  1. –connectivity.nk <kernel_name>:#:<cu_name1>,<cu_name2>, … CU의 이름지정은 optional이다. 자동으로 커널네임에 _1,_2,_3을 붙여서 지정된다.

C++ file access 정리 (fstream, ifstream, ofstream, )

open

open 를 통해 fstream에 대한 파일을 지정할 수 있다.

ifstream, ofstream

초기화와 함께 정의되며 open와 같이 바이너리 모드로 열고 닫을 수 있다.

ifstream fin(<text_name>, ios_base::in | ios_base::binary )

C file access (fopen /open)

fopen은 File pointer를 사용하고 fwrite시 파일이 없으면 생성해준다. open은 바이너리만 지원하고 int 리턴값을 통해 파일 테이블에 접근한다. 파일이 없을때 에러를 출력한다.

size_t fread(void* buf, size_t size, size_t count, FILE *stream)

fread/fwrite에 대해 잘못 사용하는 경우가 많아서 작성한다. size에는 데이터 형의 크기, count에는 읽어들일 개수를 적어야한다. 그냥 size에 모든 값을 적는 예시가 많던데 이는 잘못된 예시이다.

pread/pwrite

pread/pwrite는 read(), write()함수와 lseek()함수의 결합으로 offset 이동 후 read/write를 수행한다.

errno

이런 파일 입출력 관련 함수들은 에러 메세지를 따로 출력하지 않고

perror("<함수이름>")

이런 형식으로 에러를 출력해야 원인을 알 수 있다.

OpenCL API to interact with OpenCL buffers

OpenCL buffer에서는 두가지 옵션을 제공한다.

  1. Read and write buffers using clEnqueueReadBuffer and clEnqueueWriteBuffer
  2. Map and unmap using clEnqueueMapBuffer and clEnqueueUnmapMemObject in C.

1번의 read/write의 경우 data가 to/from OpenCL buffer 이동하는 것을 의미하고 보통 linux system memory와 CMEM memory(OpenCL buffer)간 통신을 의미한다. 여기서 CMEM은 physicallay continuous block에 대한 API를 의미한다.

comments powered by Disqus