.. _megdnn:

======
MegDNN
======

MegDNN 鏄� MegEngine 鐨勫簳灞傝绠楀紩鎿庯紝浣嶄簬 :src:`dnn` 鐩綍銆�
瀹冩彁渚涗簡涓� dense tensor 鐩稿叧鐨勮绠楀師璇紝姣斿 Convolution, Pooling, MatrixMul, Transpose 绛夈€�
瀹冩槸璺ㄥ钩鍙扮殑璁$畻搴擄紝鏀寔 x86 (with SSE4.2), arm (with NEON), CUDA (Kepler/Maxwell/Pascal)锛� OpenCL(mali/adreno/powervr/cuda/intel, etc), Hexagon 绛夈€�

.. _megdnn-organize:

MegDNN 鏂囦欢缁撴瀯
---------------

.. code-block:: shell

   dnn
   鈹溾攢鈹€ atlas-stub
   鈹溾攢鈹€ cuda-stub 
   鈹溾攢鈹€ include
   鈹偮犅� 鈹溾攢鈹€ megdnn 
   鈹�   鈹�   鈹溾攢鈹€ config
   鈹�   鈹�   鈹溾攢鈹€ dtype # 瀹氫箟鏁版嵁绫诲瀷
   鈹�   鈹�   鈹溾攢鈹€ internal  # 浠呬緵 MegDNN 鍐呴儴瀹炵幇浣跨敤鐨勫ご鏂囦欢
   鈹�   鈹�   鈹�   鈹溾攢鈹€ defs.h  # 瀹氫箟浜嗕笌 TensorND 鐨勭淮鏁帮紙ndim锛夌浉鍏崇殑瀹�
   鈹�   鈹�   鈹�   鈹溾攢鈹€ opr_header_epilogue.h  # 瀹氫箟 MegDNN operator 闇€瑕佺殑瀹�
   鈹�   鈹�   鈹�   鈹溾攢鈹€ opr_header_prologue.h  # 灏� opr_header_prologue.h 涓殑瀹� undef 鎺�
   鈹�   鈹�   鈹�   鈹溾攢鈹€ visibility_epilogue.h  # 瀹氫箟浜嗕笌 visibility 鐩稿叧鐨勫畯
   鈹�   鈹�   鈹�   鈹斺攢鈹€ visibility_prologue.h  # 灏� visibility_prologue.h 涓畾涔夌殑瀹� undef 鎺�
   鈹�   鈹�   鈹溾攢鈹€ oprs  # 瀹氫箟浜� MegDNN 鐨勬墍鏈� operator
   鈹�   鈹�   鈹溾攢鈹€ thin  # 鐩歌緝浜� std 鐨勪竴浜涚畝鍖栧疄鐜�
   鈹�   鈹�   鈹溾攢鈹€ arch.h  # 瀹氫箟浜嗕竴浜涘钩鍙颁笌缂栬瘧鍣ㄧ浉鍏崇殑瀹�
   鈹�   鈹�   鈹溾攢鈹€ basic_types.h  # 瀹氫箟浜嗕竴浜� MegDNN 鍩虹绫诲瀷锛屽 ErrorHandler/TensorShape/TensorLayout/TensorND/Workspace 绛�
   鈹�   鈹�   鈹溾攢鈹€ common.h
   鈹�   鈹�   鈹溾攢鈹€ cuda.h  # 瀹氫箟浜嗕竴浜� CUDA 鐗规湁鐨� API
   鈹�   鈹�   鈹溾攢鈹€ dtype.h
   鈹�   鈹�   鈹溾攢鈹€ handle.h 
   鈹�   鈹�   鈹溾攢鈹€ opr_param_defs.h  # 瀹氫箟浜嗕竴浜涚粨鏋勪綋锛岃〃绀� operator 鐨� param 锛堢敱 scripts/gen_param_defs.py 鑷姩鐢熸垚锛�
   鈹�   鈹�   鈹溾攢鈹€ opr_result_defs.h  # 瀹氫箟浜嗕竴浜涚粨鏋勪綋锛岃〃绀� operator 鐨� result 锛堢敱 scripts/gen_param_defs.py 鑷姩鐢熸垚锛�
   鈹�   鈹�   鈹溾攢鈹€ oprs.h  # 鍖呭惈浜� oprs 鏂囦欢澶逛笅鐨勬墍鏈夊ご鏂囦欢
   鈹�   鈹�   鈹溾攢鈹€ tensor_format.h 
   鈹�   鈹�   鈹溾攢鈹€ tensor_iter.h # 瀹氫箟浜� TensorIter 绫伙紝鏂逛究鏋氫妇 TensorND 鍐呯殑鎵€鏈夊厓绱犮€� 
   鈹�   鈹�   鈹斺攢鈹€ version.h  # 瀹氫箟浜� MegDNN 鐨� version
   鈹偮犅� 鈹溾攢鈹€ hip_header.h 
   鈹偮犅� 鈹溾攢鈹€ megcore_*.h  # MegCore 鏄竴涓法骞冲彴绾跨▼绠$悊搴擄紝灏� CUDA "device" 鍜� "stream" 鐨勬蹇典笌 CPU NUMA锛堝皻鏈疄鐜帮級鍜岀嚎绋嬬殑姒傚康鎶借薄鍑烘潵銆�
   鈹偮犅� 鈹斺攢鈹€ megdnn.h # MegDNN 鐨勪富澶存枃浠讹紝MegDNN 鐨勭敤鎴峰簲浣跨敤姝ゅご鏂囦欢銆� 
   鈹溾攢鈹€ scripts 
   鈹溾攢鈹€ src 
   鈹偮犅� 鈹溾攢鈹€ aarch64
   鈹偮犅� 鈹溾攢鈹€ arm_common
   鈹偮犅� 鈹溾攢鈹€ armv7
   鈹偮犅� 鈹溾攢鈹€ atlas
   鈹偮犅� 鈹溾攢鈹€ cambricon
   鈹偮犅� 鈹溾攢鈹€ common # 瀹氫箟浜嗗悇涓钩鍙扮殑鍏叡浠g爜锛屾瘮濡傚悇涓� operator 鐨� deduce_layout, OperatorBase, Handle 鐨勬柟娉曞畾涔夈€�
   鈹偮犅� 鈹溾攢鈹€ cuda
   鈹偮犅� 鈹溾攢鈹€ fallback
   鈹偮犅� 鈹溾攢鈹€ naive
   鈹偮犅� 鈹溾攢鈹€ rocm
   鈹偮犅� 鈹溾攢鈹€ x86
   鈹偮犅� 鈹斺攢鈹€ CMakeLists.txt
   鈹溾攢鈹€ test
   鈹斺攢鈹€ CMakeLists.txt