diff --git a/yolov8/CMakeLists.txt b/yolov8/CMakeLists.txt
new file mode 100644
index 0000000..a96687c
--- /dev/null
+++ b/yolov8/CMakeLists.txt
@@ -0,0 +1,50 @@
+cmake_minimum_required(VERSION 3.10)
+
+project(yolov8)
+
+add_definitions(-std=c++11)
+add_definitions(-DAPI_EXPORTS)
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_BUILD_TYPE Debug)
+
+set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)
+enable_language(CUDA)
+
+include_directories(${PROJECT_SOURCE_DIR}/include)
+include_directories(${PROJECT_SOURCE_DIR}/plugin)
+
+# include and link dirs of cuda and tensorrt, you need adapt them if yours are different
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
+ message("embed_platform on")
+ include_directories(/usr/local/cuda/targets/aarch64-linux/include)
+ link_directories(/usr/local/cuda/targets/aarch64-linux/lib)
+else()
+ message("embed_platform off")
+ # cuda
+ include_directories(/usr/local/cuda/include)
+ link_directories(/usr/local/cuda/lib64)
+
+ # tensorrt
+ include_directories(/home/lindsay/TensorRT-8.4.1.5/include)
+ link_directories(/home/lindsay/TensorRT-8.4.1.5/lib)
+# include_directories(/home/lindsay/TensorRT-7.2.3.4/include)
+# link_directories(/home/lindsay/TensorRT-7.2.3.4/lib)
+
+
+endif()
+
+add_library(myplugins SHARED ${PROJECT_SOURCE_DIR}/plugin/yololayer.cu)
+target_link_libraries(myplugins nvinfer cudart)
+
+find_package(OpenCV)
+include_directories(${OpenCV_INCLUDE_DIRS})
+
+
+file(GLOB_RECURSE SRCS ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/src/*.cu)
+add_executable(yolov8 ${PROJECT_SOURCE_DIR}/main.cpp ${SRCS})
+
+target_link_libraries(yolov8 nvinfer)
+target_link_libraries(yolov8 cudart)
+target_link_libraries(yolov8 myplugins)
+target_link_libraries(yolov8 ${OpenCV_LIBS})
+
diff --git a/yolov8/README.md b/yolov8/README.md
new file mode 100644
index 0000000..b69a46a
--- /dev/null
+++ b/yolov8/README.md
@@ -0,0 +1,85 @@
+# yolov8
+
+The Pytorch implementation is [ultralytics/yolov8](https://github.com/ultralytics/ultralytics/tree/main/ultralytics).
+
+The tensorrt code is derived from [xiaocao-tian/yolov8_tensorrt](https://github.com/xiaocao-tian/yolov8_tensorrt)
+
+## Contributors
+
+
+
+
+
+## Requirements
+
+- TensorRT 8.0+
+- OpenCV 3.4.0+
+
+## Different versions of yolov8
+
+Currently, we support yolov8
+
+- For yolov8 , download .pt from [https://github.com/ultralytics/assets/releases](https://github.com/ultralytics/assets/releases), then follow how-to-run in current page.
+
+## Config
+
+- Choose the model n/s/m/l/x from command line arguments.
+- Check more configs in [include/config.h](./include/config.h)
+
+## How to Run, yolov8-tiny as example
+
+1. generate .wts from pytorch with .pt, or download .wts from model zoo
+
+```
+// download https://github.com/ultralytics/assets/releases/yolov8n.pt
+cp {tensorrtx}/yolov8/gen_wts.py {ultralytics}/ultralytics
+cd {ultralytics}/ultralytics
+python gen_wts.py
+// a file 'yolov8.wts' will be generated.
+```
+
+2. build tensorrtx/yolov8 and run
+
+```
+cd {tensorrtx}/yolov8/
+// update kNumClass in config.h if your model is trained on custom dataset
+mkdir build
+cd build
+cp {ultralytics}/ultralytics/yolov8.wts {tensorrtx}/yolov8/build
+cmake ..
+make
+sudo ./yolov8 -s [.wts] [.engine] [n/s/m/l/x] // serialize model to plan file
+sudo ./yolov8 -d [.engine] [image folder] // deserialize and run inference, the images in [image folder] will be processed.
+// For example yolov8
+sudo ./yolov8 -s yolov8n.wts yolov8.engine n
+sudo ./yolov8 -d yolov8n.engine ../images
+```
+
+3. check the images generated, as follows. _zidane.jpg and _bus.jpg
+
+4. optional, load and run the tensorrt model in python
+
+```
+// install python-tensorrt, pycuda, etc.
+// ensure the yolov8n.engine and libmyplugins.so have been built
+python yolov8_trt.py
+```
+
+# INT8 Quantization
+
+1. Prepare calibration images, you can randomly select 1000s images from your train set. For coco, you can also download my calibration images `coco_calib` from [GoogleDrive](https://drive.google.com/drive/folders/1s7jE9DtOngZMzJC1uL307J2MiaGwdRSI?usp=sharing) or [BaiduPan](https://pan.baidu.com/s/1GOm_-JobpyLMAqZWCDUhKg) pwd: a9wh
+
+2. unzip it in yolov8/build
+
+3. set the macro `USE_INT8` in config.h and make
+
+4. serialize the model and test
+
+
+
+
+
+## More Information
+
+See the readme in [home page.](https://github.com/wang-xinyu/tensorrtx)
+
diff --git a/yolov8/gen_wts.py b/yolov8/gen_wts.py
new file mode 100644
index 0000000..308870c
--- /dev/null
+++ b/yolov8/gen_wts.py
@@ -0,0 +1,30 @@
+import sys
+import argparse
+import os
+import struct
+import torch
+
+pt_file = "./weights/yolov8s.pt"
+wts_file = "./weights/yolov8s.wts"
+
+# Initialize
+device = 'cpu'
+
+# Load model
+model = torch.load(pt_file, map_location=device)['model'].float() # load to FP32
+
+anchor_grid = model.model[-1].anchors * model.model[-1].stride[..., None, None]
+
+delattr(model.model[-1], 'anchors')
+
+model.to(device).eval()
+
+with open(wts_file, 'w') as f:
+ f.write('{}\n'.format(len(model.state_dict().keys())))
+ for k, v in model.state_dict().items():
+ vr = v.reshape(-1).cpu().numpy()
+ f.write('{} {} '.format(k, len(vr)))
+ for vv in vr:
+ f.write(' ')
+ f.write(struct.pack('>f', float(vv)).hex())
+ f.write('\n')
diff --git a/yolov8/images b/yolov8/images
new file mode 100644
index 0000000..02cc755
--- /dev/null
+++ b/yolov8/images
@@ -0,0 +1 @@
+../yolov3-spp/samples
\ No newline at end of file
diff --git a/yolov8/include/block.h b/yolov8/include/block.h
new file mode 100644
index 0000000..e3acdb5
--- /dev/null
+++ b/yolov8/include/block.h
@@ -0,0 +1,21 @@
+#pragma once
+#include