在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c
在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c
- 1. Installing the extension (在 Visual Studio Code 中安装插件)
- 1.1. Extensions for Visual Studio Code
- 1.2. C/C++
- 1.2.1. Pre-requisites
- 1.3. Makefile Tools
- 2. Configuring your project (配置项目)
- 2.1. `/home/yongqiang/llm_work/llama2.c/`
- 2.2. 创建工作区设置文件 `.vscode/settings.json`
- 2.3. Makefile: Project Outline
- 3. Debugging and running targets (调试并运行目标)
- 3.1. 配置 `.vscode/settings.json` 文件中 `binaryArgs` 的运行参数
- References
1. Installing the extension (在 Visual Studio Code 中安装插件)
1.1. Extensions for Visual Studio Code
https://marketplace.visualstudio.com/vscode

1.2. C/C++
C/C++ for Visual Studio Code
The C/C++ extension adds language support for C/C++ to Visual Studio Code, including editing (IntelliSense) and debugging features.

1.2.1. Pre-requisites
C++ is a compiled language meaning your program’s source code must be translated (compiled) before it can be run on your computer. VS Code is first and foremost an editor, and relies on command-line tools to do much of the development workflow. The C/C++ extension does not include a C++ compiler or debugger. You will need to install these tools or use those already installed on your computer.
- C++ compiler pre-installed
- C++ debugger pre-installed
Here is a list of compilers and architectures per platform officially supported by the extension.
| Platform | Compilers | Architectures |
|---|---|---|
| Windows | MSVC, Clang, GCC | x64, x86, arm64, arm |
| Linux | Clang, GCC | x64, x86, arm64, arm |
| macOS | Clang, GCC | x64, x86, arm64 |
1.3. Makefile Tools
VS Code Makefile Tools
This extension provides IntelliSense configurations to the VS Code C/C++ Extension for Makefile projects. It also provides convenient commands to build, debug, and run your targets.

2. Configuring your project (配置项目)
2.1. /home/yongqiang/llm_work/llama2.c/
Help -> Welcome -> Open Folder

2.2. 创建工作区设置文件 .vscode/settings.json
Command Palette (Ctrl + Shift + P)

Preferences: Open Workspace Settings (JSON)

/home/yongqiang/llm_work/llama2.c/.vscode/settings.json
2.3. Makefile: Project Outline
Configuration: [Default]
Hover over Configuration and select the pencil icon to choose a configuration for your project.
将鼠标悬停在 Configuration 上并选择铅笔图标来为你的项目选择配置。


Build target: [rundebug]
Choose a Build target by selecting the pencil icon that appears on hover.
通过选择悬停时出现的铅笔图标来选择构建目标。

Launch target: [run]

Launch target: [runq]

Makefile: [/home/yongqiang/llm_work/llama2.c/Makefile]
在 VS Code 中使用快捷键 Ctrl + Shift + P,输入并选择 Makefile: Configure。

The extension will activate when it finds a Makefile in your ${workspaceFolder}.


.vscode/settings.json
{"makefile.launchConfigurations": [{"cwd": "/home/yongqiang/llm_work/llama2.c","binaryPath": "/home/yongqiang/llm_work/llama2.c/run","binaryArgs": []},{"cwd": "/home/yongqiang/llm_work/llama2.c","binaryPath": "/home/yongqiang/llm_work/llama2.c/runq","binaryArgs": []}]
}

3. Debugging and running targets (调试并运行目标)

After setting the Build target, click the Build icon.
Makefile: Build the current target

Once the Launch target is set, select the Debug icon to start a debugging session.
Makefile: Debug the selected binary target

To run the program without debugging, select the Run in Terminal button.
Makefile: Run the selected binary target in the terminal

If you need to pass additional arguments to your targets, update the makefile.launchConfigurations by adding the binaryArgs property to the configuration.
(base) yongqiang@yongqiang:~/llm_work/llama2.c$ "/home/yongqiang/llm_work/llama2.c/run"
Usage: run <checkpoint> [options]
Example: run model.bin -n 256 -i "Once upon a time"
Options:-t <float> temperature in [0,inf], default 1.0-p <float> p value in top-p (nucleus) sampling in [0,1] default 0.9-s <int> random seed, default time(NULL)-n <int> number of steps to run for, default 256. 0 = max_seq_len-i <string> input prompt-z <string> optional path to custom tokenizer-m <string> mode: generate|chat, default: generate-y <string> (optional) system prompt in chat mode
(base) yongqiang@yongqiang:~/llm_work/llama2.c$
3.1. 配置 .vscode/settings.json 文件中 binaryArgs 的运行参数
If you need to pass additional arguments to your targets, update the makefile.launchConfigurations by adding the binaryArgs property to the configuration.
./run stories15M.bin -n 256 -i "Once upon a time"
/home/yongqiang/llm_work/llama2.c/.vscode/settings.json
{"makefile.launchConfigurations": [{"cwd": "/home/yongqiang/llm_work/llama2.c","binaryPath": "/home/yongqiang/llm_work/llama2.c/run","binaryArgs": ["stories15M.bin", "-n", "256", "-i", "\"Once upon a time\""]},{"cwd": "/home/yongqiang/llm_work/llama2.c","binaryPath": "/home/yongqiang/llm_work/llama2.c/runq","binaryArgs": []}]
}

(base) yongqiang@yongqiang:~/llm_work/llama2.c$ "/home/yongqiang/llm_work/llama2.c/run" stories15M.bin -n 256 -i "Once upon a time"
Once upon a time, there was a cute little cat named Fluffy. Fluffy loved to climb trees. One sunny day, Fluffy saw a big tree and wanted to climb it.
Fluffy started to climb the tree. It was not easy, but Fluffy did not give up. Fluffy used its muscles to help get to the top. When Fluffy got to the top, it was so much fun!
Fluffy was very happy. Fluffy learned that when you try and do big things, you can do anything. And that is how Fluffy's love for climbing trees made her very happy.
achieved tok/s: 25.695931
(base) yongqiang@yongqiang:~/llm_work/llama2.c$
References
[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/
[2] Makefile support in Visual Studio Code!, https://devblogs.microsoft.com/cppblog/now-announcing-makefile-support-in-visual-studio-code/
相关文章:
在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c
在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c 1. Installing the extension (在 Visual Studio Code 中安装插件)1.1. Extensions for Visual Studio Code1.2. C/C1.2.1. Pre-requisites 1.3. Makefile Tools 2. Configuring your project (配置项目)2.1.…...
python中math模块常用函数
文章目录 math模块简介各种三角函数反三角函数取整函数欧几里得距离绝对值最大公约数开根号幂阶乘函数 math模块简介 math模块是python标准库的一部分,提供了对于浮点数相关的数学运算,下面是常用的一些function 各种三角函数反三角函数 math.cos、ma…...
优化 Vue 3 开发体验:配置 Vite 使用 WebStorm 作为 Vue DevTools 的默认编辑器
优化 Vue 3 开发体验:配置 Vite 使用 WebStorm 替代 VS Code 作为 Vue DevTools 的默认编辑器 在 Vue 3 项目开发中,合理配置开发工具可以大大提升我们的工作效率。本文将介绍如何配置 Vite,使其在使用 Vue DevTools 时将默认编辑器从 VS Co…...
【C语言练习(9)—有一个正整数,求是几位数然后逆序打印】
C语言练习(9) 文章目录 C语言练习(9)前言题目题目解析结果总结 前言 主要到整数的取余(%)和整数的取商(/),判断语句if…else if …else的使用 题目 给一个不多于3位的正整数,要求:一、求它是几位数&…...
热敏打印机的控制
首次接触热敏打印机,本来没有特别之处,花了大概十天时间完成一款猫学王热敏打印机,给到客户体验后,客户反馈说打字看起来不明显,打印照片有条纹,所以引起了我对于他的关注,几点不足之处需要优化…...
【closerAI ComfyUI】电商赋能,AI模特套图生产,各种姿势自定义,高度保持人物服饰场景一致性,摆拍街拍专用
closerAIGCcloserAI,一个深入探索前沿人工智能与AIGC领域的资讯平台,我们旨在让AIGC渗入我们的工作与生活中,让我们一起探索AIGC的无限可能性!aigc.douyoubuy.cn 【closerAI ComfyUI】电商赋能,AI模特套图生产,各种姿势自定义,高度保持人物服饰场景一致性,摆拍街拍专用…...
ARM学习(36)静态扫描规则学习以及工具使用
笔者来学习了解一下静态扫描以及其规则,并且亲身是实践一下对arm 架构的代码进行扫描。 1、静态扫描认识 静态扫描:对代码源文件按照一定的规则进行扫描,来发现一些潜在的问题或者风险,因为不涉及代码运行,所以其一般只是发现一些规范或则一些质量问题,当然这些可能存在潜…...
使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群
文章目录 使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群Redis 主从架构简介Redis Sentinel 简介配置文件1. 主节点配置 (redis-master.conf)2. 从节点配置 (redis-slave1.conf 和 redis-slave2.conf)redis-slave1.confredis-slave2.conf3. Sentinel 配置 (sentin…...
警惕!手动调整服务器时间可能引发的系统灾难
警惕!手动调整服务器时间可能引发的系统灾难 1. 鉴权机制1.1 基于时间戳的签名验证1.2 基于会话的认证机制(JWT、TOTP) 2. 雪花算法生成 ID 的影响2.1 时间戳回拨导致 ID 冲突2.2 ID 顺序被打乱 3. 日志记录与审计3.1 日志顺序错误3.2 审计日…...
MySQL追梦旅途之性能优化
1、索引优化 索引可以显著加速查询操作,但过多或不适当的索引也会带来负面影响(如增加写入开销)。因此,选择合适的索引至关重要。 创建索引: 为经常用于WHERE子句、JOIN条件和ORDER BY排序的列创建索引。 CREATE I…...
【机器学习】【无监督学习——聚类】从零开始掌握聚类分析:探索数据背后的隐藏模式与应用实例
从零开始掌握聚类分析:探索数据背后的隐藏模式与应用实例 基本概念聚类分类聚类算法的评价指标(1)内部指标轮廓系数(Silhouette Coefficient)DB指数(Davies-Bouldin Index)Dunn指数 (…...
基于深度Q网络(Deep Q-Network,DQN)的机器人路径规划,可以自定义地图,MATLAB代码
深度Q网络(Deep Q-Network,DQN)是一种结合了深度学习和Q学习的强化学习算法,由DeepMind在2015年提出。 1. 算法介绍 DQN算法通过使用深度神经网络来近似Q值函数,解决了传统Q-learning在处理具有大量状态和动作的复杂…...
Python-从文件中读取数据-Sat-Sun
10.1 文件读取数据可以整个文件读取,也可以逐行读取。 首先在保存有.py文件的文件夹里创建一个pi_digist.txt文件,文件内容是 3.14 9265 3589执行程序 file_reader.py with open(pi_digist.txt) as file_object: #接受文件名参数,在程序所…...
测试工程师的职业规划
测试人员在管理上的发展 基层测试管理者:测试组长 工作内容:安排小组工作,提升小组成员测试能力,负责重要的测试工作。 负责对象:版本,项目 中层测试管理者:测试经理 负责对象࿱…...
使用 Puppeteer 快速上手 Node.js 爬虫
使用 Puppeteer 库通过自动化浏览器来访问百度图片搜索,并在搜索结果中下载图片。代码分为两部分: 自动化浏览器任务:使用 Puppeteer 浏览百度图片搜索并获取图片 URL。图片下载:检查图片 URL 类型(base64 或 URL&…...
浏览器的跨域问题与解决方案
浏览器的跨域问题与解决方案 浏览器的跨域问题源于同源策略(Same-Origin Policy)这一安全机制。同源策略要求两个页面具有相同的协议、域名和端口号,才能相互访问资源和数据。这一机制旨在防止恶意网站执行跨站脚本攻击,从而保护…...
MyBatis一二级缓存的区别?
大家好,我是锋哥。今天分享关于【MyBatis一二级缓存的区别?】面试题。希望对大家有帮助; MyBatis一二级缓存的区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MyBatis 的缓存机制分为 一级缓存 和 二级缓存&…...
[2024-12 CISCN 长城杯] Crypto
fffffhash 【也可以看这题,一样的:https://github.com/DownUnderCTF/Challenges_2023_Public/blob/main/crypto/fnv/solve/solution_joseph_LLL.sage】 题目描述: import os from Crypto.Util.number import * def giaogiao(hex_string):b…...
pytorch bilstm crf的教程,注意 这里不支持批处理,要支持批处理 用torchcrf这个。
### Bi-LSTM Conditional Random Field ### pytorch tutorials https://pytorch.org/tutorials/beginner/nlp/advanced_tutorial.html ### 模型主要结构:  pytorch bilstm crf的教程,注意 这里不支持批处理 Python version…...
Python毕业设计选题:基于django+vue的疫情数据可视化分析系统
开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 员工管理 疫情信息管理 检测预约管理 检测结果…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
