BANGC 写 Hello BangC! 帮帮西_2019-07-11 17:47:30 回复 6 查看 资源共享
BANGC 写 Hello BangC!

别的不说,直接上代码啦


以下是bangc萌新选手码的,可能有一些不够(you)美(bug)丽的地方,望小哥哥小姐姐指教~


Host: "main.cpp"

  1. #include <stdio.h>  

  2. #include <stdlib.h>  

  3. #include "cnrt.h"  

  4. #include "kernel.h"  

  5.   

  6. int main() {  

  7.   cnrtInit(0);  

  8.   cnrtDev_t dev;  

  9.   cnrtGetDeviceHandle(&dev, 0);  

  10.   cnrtSetCurrentDevice(dev);  

  11.   cnrtStream_t pStream;  

  12.   cnrtCreateStream(&pStream);  

  13.   cnrtDim3_t dim;  

  14.   dim.x = 1;  

  15.   dim.y = 1;  

  16.   dim.z = 1;  

  17.   

  18.   cnrtFunctionType_t c;  

  19.   c = CNRT_FUNC_TYPE_BLOCK;  

  20.   

  21.   cnrtKernelParamsBuffer_t params;  

  22.   cnrtGetKernelParamsBuffer(¶ms);  

  23.   

  24.   cnrtRet_t ret;  

  25.   ret = cnrtInvokeKernel((void *)&kernel, dim, params, c, pStream);  

  26.   if (ret != CNRT_RET_SUCCESS) {  

  27.     printf("cnrtInvokeKernel FAILED");  

  28.     exit(-1);  

  29.   }  

  30.   ret = cnrtSyncStream(pStream);  

  31.   if (ret != CNRT_RET_SUCCESS) {  

  32.     printf("cnrtSyncStream FAILED");  

  33.     exit(-1);  

  34.   }  

  35.   

  36.   if (CNRT_RET_SUCCESS != cnrtDestroyStream(pStream)) {  

  37.     printf("cnrtDestroyStream FAILED!\n");  

  38.     exit(-1);  

  39.   }  

  40.   if (CNRT_RET_SUCCESS != cnrtDestroyKernelParamsBuffer(params)) {  

  41.     printf("cnrtDestroyKernelParamsBuffer failed!\n");  

  42.     return -1;  

  43.   }  

  44.   cnrtDestroy();  

  45.   return 0;  

  46. }  


Device: "kernel.mlu"

  1. #include "mlu.h"  

  2.   

  3. __mlu_entry__ void kernel() {  

  4.     __bang_printf("

  5. \n");  

  6. }  


"kernel.h"

  1. #ifdef __cplusplus  

  2. extern "C" {  

  3. #endif  

  4.   void kernel();  

  5. #ifdef __cplusplus  

  6. }  

  7. #endif  


"Makefile"

  1. all:  

  2.     cncc -c kernel.mlu -o kernel.o  

  3.     g++ -c main.cpp -I/usr/local/neuware/include  

  4.     g++ kernel.o main.o -o main -L/usr/local/neuware/lib64 -lcnrt  


以上代码文件码好之后,命令行执行:

make

就完成啦!

官方微博 官方微信
版权所有 © 2019 寒武纪 Cambricon 备案/许可证号:京ICP备17003415
关闭