会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
moonzzz
博客园
首页
新随笔
联系
订阅
管理
2025年1月11日
OpenCL入门笔记
摘要: 1、概述 1.1、OpenCL标准 OpenCL(Open Computing Language)是一个开放标准的并行编程框架,它允许开发者在异构系统上利用各种计算设备(例如CPU、GPU、FPGA等)来加速任务,目前已被广泛应用于视频处理、医学成像、机器学习等领域。 OpenCL最初由苹果公司提出
阅读全文
posted @ 2025-01-11 11:39 MoonZZZ
阅读(2725)
评论(2)
推荐(3)
2023年11月4日
x86平台SIMD编程入门(5):提示与技巧
摘要: 1、提示与技巧 访问内存的成本非常高,一次缓存未命中可能会耗费100~300个周期。L3缓存加载需要40~50个周期,L2缓存大约需要10个周期,即使L1缓存的访问速度也明显慢于寄存器。所以要尽量保持数据结构对SIMD友好,优先选择std::vector、CAtlArray、eastl::vecto
阅读全文
posted @ 2023-11-04 17:15 MoonZZZ
阅读(1258)
评论(0)
推荐(0)
x86平台SIMD编程入门(4):整型指令
摘要: 1、算术指令 算术类型 函数示例 加 _mm_add_epi32、_mm256_sub_epi16 减 _mm_sub_epi32、_mm256_sub_epi16 乘 _mm_mul_epi32、_mm_mullo_epi32 除 无 水平加/减 _mm_hadd_epi16、_mm256_hsu
阅读全文
posted @ 2023-11-04 15:47 MoonZZZ
阅读(1526)
评论(0)
推荐(0)
x86平台SIMD编程入门(3):浮点指令
摘要: 1、算术指令 算术类型 函数示例 备注 加 _mm_add_sd、_mm256_add_ps 减 _mm_sub_sd、_mm256_sub_ps 乘 _mm_mul_sd、_mm256_mul_ps 除 _mm_div_sd、_mm256_div_ps 平方根 _mm_sqrt_sd、_mm256
阅读全文
posted @ 2023-11-04 13:09 MoonZZZ
阅读(1667)
评论(0)
推荐(0)
x86平台SIMD编程入门(2):通用指令
摘要: 1、重解释转换 虽然128位的XMM寄存器在硬件上只是256位YMM寄存器的下半部分,但在C++中它们是不同的类型。有一些intrinsic函数可以将它们重新解释为不同的类型,如下表所示,行代表源类型,列代表目标类型。 __m128 __m128d __m128i __m256 __m256d __
阅读全文
posted @ 2023-11-04 12:05 MoonZZZ
阅读(1836)
评论(0)
推荐(0)
x86平台SIMD编程入门(1):SIMD基础知识
摘要: 1、简介 SIMD(Single Instruction, Multiple Data)是一种并行计算技术,它通过向量寄存器存储多个数据元素,并使用单条指令同时对这些数据元素进行处理,从而提高了计算效率。SIMD已被广泛应用于需要大量数据并行计算的领域,包括图像处理、视频编码、信号处理、科学计算等。
阅读全文
posted @ 2023-11-04 10:50 MoonZZZ
阅读(5823)
评论(0)
推荐(4)
2023年9月5日
《C++并发编程实战》读书笔记(4):原子变量
摘要: ## 1、标准原子类型 标准原子类型的定义位于头文件``内。原子操作的关键用途是取代需要互斥的同步方式,但假设原子操作本身也在内部使用了互斥,就很可能无法达到期望的性能提升。有三种方法来判断一个原子类型是否属于无锁数据结构: - 所有标准原子类型(`std::atomic_flag`除外,因为它必须
阅读全文
posted @ 2023-09-05 21:54 MoonZZZ
阅读(499)
评论(0)
推荐(0)
2023年9月4日
《C++并发编程实战》读书笔记(3):并发操作的同步
摘要: ## 1、条件变量 当线程需要等待特定事件发生、或是某个条件成立时,可以使用条件变量`std::condition_variable`,它在标准库头文件``内声明。 ```c++ std::mutex mut; std::queue data_queue; std::condition_variab
阅读全文
posted @ 2023-09-04 21:05 MoonZZZ
阅读(170)
评论(0)
推荐(0)
2023年9月3日
《C++并发编程实战》读书笔记(2):线程间共享数据
摘要: ## 1、使用互斥量 在C++中,我们通过构造`std::mutex`的实例来创建互斥量,调用成员函数`lock()`对其加锁,调用`unlock()`解锁。但通常更推荐的做法是使用标准库提供的类模板`std::lock_guard`,它针对互斥量实现了RAII手法:在构造时给互斥量加锁,析构时解锁
阅读全文
posted @ 2023-09-03 12:24 MoonZZZ
阅读(161)
评论(0)
推荐(0)
2023年9月2日
《C++并发编程实战》读书笔记(1):线程管控
摘要: ## 1、线程的基本管控 包含头文件``后,通过构建`std::thread`对象启动线程,任何可调用类型都适用于`std::thread`。 ```c++ void do_some_work(); struct BackgroundTask { void operator()() const; }
阅读全文
posted @ 2023-09-02 10:43 MoonZZZ
阅读(218)
评论(0)
推荐(0)
下一页
公告