彭于斌
彭于斌
IMO no need for macro name boilerplate, simply use pragma once would relax our fried brain :rfol: 无法顺畅的大口呼吸,是活着的最好证明 ---Original--- From: "Markus ***@***.***> Date: Wed, Dec 14, 2022 21:21 PM To:...
Hi, MPM nodes is only available in the CUDA version. Which can be downloaded from zenustech.com. 无法顺畅的大口呼吸,是活着的最好证明 ---Original--- From: ***@***.***> Date: Tue, Apr 25, 2023 20:25 PM To: ***@***.***>; Cc:...
Are you using windows or linux system? If you use linux system would you mind build zeno from scratch? 无法顺畅的大口呼吸,是活着的最好证明 ---Original--- From: ***@***.***> Date: Wed, Apr 26, 2023 20:19 PM...
我不知道vdb要怎么保持sharp 无法顺畅的大口呼吸,是活着的最好证明 ---原始邮件--- 发件人: ***@***.***> 发送时间: 2023年1月14日(周六) 晚上11:29 收件人: ***@***.***>; 抄送: ***@***.***>; 主题: Re: [zenustech/zeno] [keep sharp] VDB转成mesh得时候无法保持尖锐特征 (Issue #833) 为啥没人回复我? — Reply to this email directly, view it on...
1. GPU(特别是消费级显卡)就是对double支持很差的,正常的。正常图形学应用都是float数据,aipig甚至巴不得用half。(这就是为什么他们搞科学计算的都不爱用GPU集群,因为科研仿真需要double精度) 3. 你这里的主要瓶颈是这个双精度浮点除法,把 `a / b` 改成 `a + b` 后加速比直接从 2.23 提升到 2.99 了。 4. `i / width` 这个整数除法的开销也很大,你试图用一维的blockdim和griddim在运行东西,然后用除法和模运算来模拟出row和col,这是不正确的。应该利用blockDim.x和blockDim.y,避免低效的除法。 1和2的问题是可能是你算法需要,改了你的结果就不对了。3这个问题我给你改下。 ```cuda __global__ void GPU_Cal(TYPE *input, TYPE *output, int...
```cpp __m128i r = _mm_loadu_si128((__m128i *)&imageData[i]); __m128i g = _mm_loadu_si128((__m128i *)&imageData[i + 4]); __m128i b = _mm_loadu_si128((__m128i *)&imageData[i + 8]); ``` 这是错的。这样读取所需的内存排布是RRRRGGGGBBB,而你实际的内存排布是RGBRGBRGBRGB,需要进行3x4转置后才能保证r寄存器里四个分量分别是四个像素的R分量。
而且,你这个是uint8_t的数据,但你却用epi32把数据当作int32_t进行转换,这是错误的。如果有的话,应该用epu8的函数。但是并没有cvtepu8_ps,并且转换成浮点后再做乘法也并不高效,正确的做法是直接把epu8扩张成epu16然后作为定点数计算。
RGB和YUV互转是很常见的需求,已经有很多人做过了,请看:https://blog.csdn.net/just_sort/article/details/99545096 所以小彭老师这里稍微偷个懒,只是解读一下他的代码: ```cpp void RGBToYUVSSE_1(unsigned char *RGB, unsigned char *Y, unsigned char *U, unsigned char *V, int Width, int Height, int Stride) { const int Shift = 13; const int...
你这样一个个分别取出rgb分量是不行的,不会提升任何效率,还不如正常写标量代码 无法顺畅的大口呼吸,是活着的最好证明 ---原始邮件--- 发件人: ***@***.***> 发送时间: 2023年10月28日(周六) 中午12:28 收件人: ***@***.***>; 抄送: ***@***.******@***.***>; 主题: Re: [parallel101/simdtutor] 请教小彭老师,我要怎么用SSE优化这个程序呢 (Issue #7) 感谢小彭老师的解答,我在等待您的回复时,修改了代码,把RGB像素连续存储在一起,就是这样 __m128i rgb[4]; // 创建数组存4组RGB像素 for (int j = 0; j <...
这是一个`resize_uninitialize`经典的需求,很可惜标准库没有提供这样的一个API。 # 方案1:通过魔改allocator的construct方法 ```cpp #include #include #include template struct NoinitAllocator { std::allocator m_base; using value_type = T; NoinitAllocator() = default; template decltype(auto) allocate(Args &&...args) { // 分配与释放功能保持不变,我们只需要劫持构造功能的逻辑 return m_base.allocate(std::forward(args)...); }...