- 博客(694)
- 资源 (28)
- 收藏
- 关注
原创 scons user 3.1.2
SCons 是一款下一代软件构建工具,或者称为 make 工具,即一种用于构建软件(或其他文件)并在底层输入文件发生更改时使已构建的软件保持最新状态的软件实用程序。SCons 最显著的特点是其配置文件实际上是用 Python 编程语言编写的脚本。这与大多数其他构建工具形成鲜明对比,后者通常会发明一种新语言来配置构建过程。当然,学习 SCons 仍然需要一定的过程,因为您必须知道调用哪些函数才能正确设置构建过程,但对于任何看过 Python 脚本的人来说,所使用的底层语法应该是熟悉的。
2025-05-14 19:56:05
477
原创 MacOS 上构建 gem5
MacOS 中只存在 python3,但是scons 只认 python,不在 系统中创建 软连接,一个是因为比较难操作;另一个是尽量不要更改系统。
2025-05-12 14:00:10
346
原创 第三章:内存一致性的动机与顺序一致性 A Primer on Memory Consistency and Cache Coherence - 2nd Edition
上一小节中的示例说明了共享内存行为很微妙,这凸显了精确定义以下两点的重要性:(a) 程序员可以期望的行为;(b) 系统实现者可以使用的优化。内存一致性模型消除了这些问题的歧义。内存一致性模型,或更简单地说,内存模型,是对使用共享内存执行的多线程程序的允许行为的规范。对于使用特定输入数据执行的多线程程序,它指定了动态加载操作可能返回的值。与单线程执行不同,多线程执行通常允许多种正确的行为。
2025-05-09 01:53:08
868
原创 全文 AMD GPGPU 通信问题 - Understanding Data Movement in AMD Multi-GPU Systems with Infinity Fabric
现代 GPU 系统在不断发展,以满足科学和机器学习领域中计算密集型应用的需求。然而,硬件性能与实际应用中可实现的性能之间通常存在差距。这项工作旨在更深入地了解 AMD GPU 和 CPU 上的 Infinity Fabric 互连技术。我们提出了一种测试和评估方法,用于描述多 GPU 系统上数据传输的性能,重点研究 AMD MI250X GPU 上的不同通信方式,包括点对点通信和集合通信,以及 GPU 之间和主机 CPU 的内存分配策略。
2025-05-05 01:47:31
1009
原创 学习方法讨论——正论科举精神的内核
世界不存在绝对的善,也不存在绝对的恶,可以尝试举例;再者,物极必反,当对一个事情的批判一面倒的否定之时,可能需要开始思考它正面的部分。
2025-05-04 18:33:11
858
3
原创 第二章:一致性基础 A Primer on Memory Consistency and Cache Coherence - 2nd Edition
我们偏好的一致性定义是从实现的角度来定义它的 —— 指定了关于不同核心对内存位置的访问权限以及核心之间传递的数据值的硬件强制不变量。还存在另一类从程序员的角度来定义一致性的定义,类似于内存一致性模型如何指定从体系结构上可见的加载和存储操作的顺序。一种类似一致性的指定一致性的方法与顺序一致性的定义相关。顺序一致性(SC)是我们将在第 3 章深入讨论的一种内存一致性模型,它规定系统必须以一种尊重每个线程的程序顺序的全序方式来执行所有线程对所有内存位置的加载和存储操作。
2025-05-03 20:33:05
1009
原创 第一章:A Primer on Memory Consistency and Cache Coherence - 2nd Edition
这本入门读物的第二版与近十年前(2011 年)出版的第一版有所不同,主要是新增了两章内容,并且做了一些小的改动。新增的第 10 章讨论了非 CPU 加速器方面的前沿研究成果,主要是通用图形处理器(GPU),这类加速器通常将一致性和缓存一致性结合起来实现。新增的第 11 章介绍了自这本入门读物第一版发行以来在一致性和缓存一致性方面取得重大进展的形式化研究工作和工具。其他改动相对较小,包括以下内容:第 2 章扩展了缓存一致性的定义,纳入了与第 10 章中类似 GPU 的解决方案;
2025-05-02 21:19:03
997
原创 build gem5 gpu full system disk and linux kernel
【代码】build gem5 gpu full system disk and linux kernel。
2025-04-26 01:57:21
160
原创 apt 源证书验证不过 Certificate verification failed: The certificate is NOT trusted. The certificate issuer
ubuntu 22.04 apt 源切到国内时,执行 apt-get update 报错:Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown. Could not handshake: Error in the certificate verification.先切回原先的 apt 源,更新证书:再切到国内的 apt 源
2025-04-25 11:59:56
160
原创 cmake 语法大纲
缓存变量,$CACHE{var} ${var}include 命令来引用 模块文件。环境变量,$ENV{var}cmake 预制模块;普通变量,${var}cmake 程序由命令调用构成;
2025-04-18 19:15:00
134
原创 第5章,将 Toy IR 程序部分地下降到更低层的 dialect 以便优化
转换目标 dialect转换的模式部分地降低部分下降的注意事项完成 Toy 示例利用 Affine dialect 的优化到了当前这个阶段,我们热切期待生成实际的代码,看到我们的 Toy 编程语言变得生动,我们将使用 LLVM 生成代码,但是,如果这里仅仅展示 LLVM builder interface并不会非常令人兴奋。取而代之的是,我们将会通过在同一个函数中共存混合的 dialect,以便展示怎么去逐步地让程序下降。
2025-04-11 16:01:00
776
原创 全文 - MLIR Toy Tutorial Chapter 4: 使用 interfaces 开启 通用变换
通过 dialects,MLIR 允许表示很多不同的抽象层级;前几章我们定义的 Toy dialect 就是一个例子。虽然不同的 dialects,可以表示不同的抽象,但是,它们之间通常存在我们会用到的一组共享的编译器变换和分析。这里会出现的问题是这样的,幼稚地为每一个 dialect 实现每一个变换,将导致大量的重复代码,因为他们内部的算法一般是相似的,甚至是一样的。我们会给编译器变换提供一种能力,去透明地 hook 进像 Toy 这样的 dialect,以便获得他们需要的信息。
2025-04-10 12:12:07
837
1
原创 全文 - MLIR Toy Tutorial Chapter 3 :高层次上语言特定的分析和变换
创建一种贴近输入语言的语义表示的方言,可以在 MLIR 中分析、变换和优化,这些过程中需要用到高级语言的信息,而且通常是在语言的 AST 上执行的这些过程。例如,为了执行template 实例化,在clang 程序中有一个相当厚实的机制。我们将编译器变换分为两大类:局部的和全局的。在本章中,我们聚焦怎么利用Toy Dialect 和它的高层次语义来执行局部模式匹配变换,这在 LLVM 中是比较难实现的。为此,我们使用了 MLIR的 Generic DAG Rewriter。
2025-04-02 10:11:44
317
原创 全文 MLIR TOY -- Chapter2: 发出基本的 MLIR——把AST变成SSA的 MLIR Dialect IR
其他的编译器,像 LLVM,是提供一个固定的预定义类型和指令(通常是底层的像 RISC的指令)。对于一个给定的语言,在发出 LLVM IR之前,执行任何的语言特定的类型检查和分析,或者变换等,是由编译器前端来决定的。例如Clang 将会使用它的 AST 做静态分析 和 变换,例如 通过对 AST 的克隆和重写完成C++ 模版实例化。最后,一个比 C/C++ 还高的层级上且带有构造特性的语言,从它们的 AST 到生成 LLVM IR 可能需要做一个非常重要的下降。
2025-03-31 09:56:56
977
原创 全文 - MLIR Toy Tutorial Chapter 1: Toy Language and AST
本教程,将会借助一个玩具语言来讲解,这个语言我们称其为 Toy。Toy 是一个基于张量的语言,它允许你定义函数,执行一些数学计算,并且打印结果。做这样的设定,是因为我们希望让教程保持简明;codegen 部分将会限制张量的维度小于等于2,而且Toy中的数据类型都是 64bit 浮点型的,也就是C语言中的double类型。于是,所有的值都隐式定义为double精度的,而且,所有的值都是不变的常量,也就是说,每一个操作的返回值都会是新分配的变量,再就是,重新分配变量是自动化管理的。
2025-03-24 18:53:12
250
原创 全文 - MLIR: A Compiler Infrastructure for the End of Moore’s Law
本文介绍了MLIR,一种构建可重用和可扩展编译器基础设施的新方法。MLIR旨在解决软件碎片化问题,改善异构硬件的编译,显著降低构建领域特定编译器的成本,并帮助连接现有编译器。MLIR促进了在不同抽象层次以及跨应用领域、硬件目标和执行环境的代码生成器、翻译器和优化器的设计和实现。本文的贡献包括:(1) 讨论MLIR作为一个研究工件,旨在扩展和演化,并识别其在设计、语义、优化规范、系统和工程方面的挑战和机遇。
2025-03-21 17:01:30
999
原创 git 仓库迁移 git clone --mirror git push --mirror
使用 git clone --mirror 可以整体搬移或复制一个 Git 仓库,包括所有的分支、标签和远程配置。
2025-03-20 19:23:25
489
原创 cmake 如何检测 CUDA 环境
这样就把具体的 nvcc的路径赋值为 变量 CMAKE_CUDA_COMPILER 的值,然后,这个result.cmake 会被 include进 check_language 脚本,于是 赋值后的CMAKE_CUDA_COMPILER就成为 check_languange 脚本中的一个携带了 nvcc 信息的目录。来找到变量 CMAKE_CUDA_COMPILER 的值,例如是 /usr/local/cuda/bin/nvcc。其中,cmProjectCommand 是一个cpp函数,
2025-03-19 14:48:12
198
原创 全文 MLIR -- Scaling Compiler Infrastructure for DomainSpecific Computation
这项工作介绍了MLIR,这是一种构建可重用和可扩展编译器基础设施的新方法。MLIR解决软件碎片化、针对异构硬件的编译,显著降低了构建领域特定编译器的成本,并将现有编译器连接在一起。MLIR促进了在不同抽象层次和跨多个应用领域、多个硬件目标和多个执行环境时,代码生成器、翻译器和优化器的设计和实现。本文的贡献包括:(1) 讨论 MLIR 作为一个研究工作,旨在扩展和演化,同时识别这种新颖的 “设计、语义、优化规范、系统和工程” 所带来的挑战和机遇。
2025-03-13 14:11:23
827
原创 MLIR 实践1,搭建环境
文件名 hello_world.mlir, 内容如下,MLIR 的 Hello World!内容为见下图,可以使用lli来运行,
2025-03-10 17:28:18
378
原创 build gcc
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2 wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz git clone --mirror https://github.com/gcc-mirror/gcc.gi
2025-03-04 14:46:06
474
原创 cuda-12.4.0 devel docker 中源码安装 OpenAI triton
下载docker image: 创建容器: 2,安装 git vim python3 wget 3, 源码安装 cmake4, 安装 pybind11 安装中:
2025-02-28 17:25:50
507
原创 关于 CUPTI samples 中 的 pc_sample case
从分析中可以看出,内核执行中存在多种停滞原因,主要包括指令获取、内存依赖性和常量内存依赖性。这些停滞可能会影响内核的整体性能。为了优化性能,可以考虑以下几点:1. 优化内存访问模式: 减少内存依赖性和常量内存依赖性。2. 提高指令缓存命中率: 通过优化代码结构和指令流来减少指令获取停滞。3. 减少数据依赖性: 通过重构代码以减少执行依赖性。通过这些优化措施,可以提高 CUDA 内核的执行效率,减少停滞时间。
2025-02-27 11:49:54
361
原创 矩阵乘积态简介
矩阵乘积态(Matrix Product State, MPS)是一种用于表示量子多体系统的强大工具,特别是在一维系统中。MPS 是一种张量网络状态,它通过将全局量子态分解为一系列局部张量的乘积来有效地表示量子态。注释:量子态表示,在量子力学中,一个系统的量子态可以用一个态矢量来表示。在多体系统中,这个态矢量的维度随着粒子数的增加而指数增长。MPS 提供了一种紧凑的表示方法,通过将全局态分解为一系列低维张量的乘积来避免指数增长。
2025-02-24 12:42:43
492
原创 估算张量网络收缩的成本和高效收缩 Estimating the Cost of and Efficiently Contracting a Tensor Network
估算张量网络收缩的成本和高效收缩Thomas E. Baker—2015年8月17日您的计算机每秒只能执行一定数量的操作。编写一个使用最少步骤来获得答案的程序意味着使用更少的计算机时间。可以完成更多的计算。您的导师会喜欢这一点(您可能也会喜欢)!提供一个算法,其操作数从到的缩放差异可能意味着可以在更短的时间内研究更大的系统。某些系统可能根本无法通过的缩放关系进行访问。这可能意味着几分钟的计算时间与数小时甚至数天的差异。在本文中,我们将讨论如何估算张量网络收缩的成本以及执行此操作的最佳算法。
2025-02-21 20:09:18
501
原创 全文,Design of a High-Performance GEMM-like Tensor-Tensor Multiplication
我们提出了一种“类GEMM张量-张量乘法”(GETT),这是一种用于密集张量收缩的新方法,其设计类似于高性能的通用矩阵-矩阵乘法(GEMM)。GETT 背后的关键见解是识别出三个参与张量收缩的索引集,使我们能够系统地将任意张量收缩简化为围绕高度优化的“宏内核”的循环。这个宏内核在指定的缓存层级中操作准备好了(“打包”)的子张量。与之前的张量收缩方法相比,GETT 展示了理想的特性,如单位步长内存访问、缓存感知以及完全向量化,而不需要辅助内存。我们将GETT与所谓的转置-转置-GEMM-转置和循环-GEMM
2025-02-18 17:40:55
540
原创 全文翻,Towards an Efficient Use of the BLAS Library for Multilinear Tensor Contractions
基本线性代数子程序的主要动机是通过标准化实现模块化、效率和可移植性 [10]。随着具有分层内存的架构的出现,BLAS 扩展了其 2 和 3 级,提高了粒度级别,以便通过摊销昂贵的数据移动来高效使用内存层次结构,计算更多的浮点运算。相对于处理器的全部潜力,BLAS 1、2 和 3 级例程的效率分别约为 5%、20% 和 90% 以上。人们普遍接受,对于足够大的操作数,这些值几乎是完美的。此外,BLAS 1 和 2 内核的可扩展性相当有限,而 BLAS 3 的可扩展性通常接近完美。
2025-02-12 16:53:11
849
原创 全文翻,Tensor Contractions with Extended BLAS Kernels on CPU and GPU
张量是多维数组,可以被视为矩阵的推广,以允许数据的多模态性。传统的计算一般张量收缩的方法依赖于张量的矩阵化,即数据的逻辑的或显式的重组,以便可以通过一系列基本线性代数子程序(BLAS)库的调用来执行计算。Tucker 分解是机器学习中的一个重要张量应用,其中我们的策略相对于现有库的优势是显而易见的。在本文中,受到机器学习和深度学习领域最近兴趣增加的激励,我们提出并研究了基于库的免通信的方法来执行张量收缩。,都先执行显式数据转置以计算几乎所有的张量收缩,并且数据重组的成本通常主导了实际计算的成本。
2025-02-11 14:43:48
579
原创 ubuntu 22.04 安装 cuda sdk 11.8
ubuntu 22.04 安装 cuda sdk 11.8linux kernel 版本太高的问题主要思路是先安装 nv 显卡驱动,这会同时安装 kmd driver然后安装 cuda sdk 11.x 时不安装 kernel driver。
2025-02-08 12:41:06
307
原创 ubuntu 22.04 cuda12.x 上 cutensor 1.6.2 版本环境搭建
ubuntu 22.04 cuda12.x 运行 cutensor 1.6.2 sample1.6.2 是比较久的cutensor 版本,但是nv对新的cuda 平台做了继续支持,故可以在cuda sdk 12上使用cutensor 1.6.2。
2025-02-08 12:38:44
400
ACPI spec 4.0 and 3.0
2024-08-24
bash-shell matrix-computations llvm-cook loader-linker sparse-ma
2024-01-23
Linux kernel 高并发开发
2024-01-14
mpi学习教程等-都志辉-配合下文https环境搭建
2023-12-29
代数多重网格理论资料 AMG AMGX原理
2023-09-28
opencl 学习资源pdf and source code
2023-05-22
常用数值算法集C语言与 Numerical Methods Using Matlab 4th Ed Mathews
2023-04-12
比利时的 鲁汶大学 计算机系教授 Philip Dutré 的全局光照教程,和他与合作者在 2002年 SIGGRAPH ppt
2022-09-17
LLVM IR MLIR: Scaling Compiler Infrastructure for Domain Specifi
2022-05-06
SSA_LLVMCookBook_DirectMethodSparseLinearSystem
2022-05-05
llvm_cookb_LLVM_IR骨架语法领进门资料.7z
2021-04-25
带几何解释的线性代数讲义
2020-12-02
英中双语版_flex与bison_pdf.7z
2020-11-03
FIRRTL_spec_2020Oct_EditionPDF.7z
2020-10-19
chisel官方教程20201010版本.7z
2020-10-11
Digital Design With Chisel_20201010edition.7z
2020-10-11
Downloads.zip
2020-07-21
bootia32.efi
2018-04-07
python27_d.lib python27_d.dll python27_d.pdb
2017-09-13
tbb2017_20170226oss_win.zip
2017-03-22
NS基础与安装---NS2 是一款开放源代码的网络仿真软件
2008-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人