<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>FlyAndNotDown Blog</title>
        <link>https://www.flyandnotdown.com/</link>
        <description>离开世界前，一切都是过程</description>
        <lastBuildDate>Sun, 24 May 2026 03:37:05 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>All rights reserved 2026, Kindem</copyright>
        <item>
            <title><![CDATA[UE5.6 后 Shader 调试方法的变化]]></title>
            <link>https://www.flyandnotdown.com/post/2578fb78-2f78-8059-9454-f82cc4bf6e7d</link>
            <guid>https://www.flyandnotdown.com/post/2578fb78-2f78-8059-9454-f82cc4bf6e7d</guid>
            <pubDate>Sat, 23 Aug 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[感觉 Embbed Debug 模式挺好的，不知道 UE 为什么要改。]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2578fb782f7880599454f82cc4bf6e7d"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-2638fb782f7880239439d85b02ee3839">&lt;ins/&gt;</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-2bc8fb782f7880ce9712c490666aa5a6" data-id="2bc8fb782f7880ce9712c490666aa5a6"><span><div id="2bc8fb782f7880ce9712c490666aa5a6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2bc8fb782f7880ce9712c490666aa5a6" title="5.6 前 Shader 调试方法"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5.6 前 Shader 调试方法</span></span></h2><div class="notion-text notion-block-2578fb782f788064b068df682ea92fda">在 UE5.6 之前，我通常直接在我想要调试的 Shader 对应的 C++ 类里直接添加下面四个 Compiler Flags：</div><div class="notion-blank notion-block-2578fb782f78806b983acaea7a75ae41"> </div><div class="notion-text notion-block-2578fb782f788088a793e3ea985b4c8e">之后重新编译 Shaders 即可，最重要的是 CFLAG_GenerateSymbols，这一项，它会生成 Shader 符号并将其嵌入到 Shader 二进制里，这样 RenderDoc 或 PIX 之类的工具就能直接调试对应 Shader。</div><div class="notion-blank notion-block-2bc8fb782f7880138a4febf7a486fb6a"> </div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-2578fb782f78809e9859d9ca2a8c58e1" data-id="2578fb782f78809e9859d9ca2a8c58e1"><span><div id="2578fb782f78809e9859d9ca2a8c58e1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2578fb782f78809e9859d9ca2a8c58e1" title="5.6 后 Shader 调试方法"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5.6 后 Shader 调试方法</span></span></h2><div class="notion-text notion-block-2578fb782f788013a40ecfb9482e51fa">升级到 5.6 之后发现不能这么做，罪魁祸首是这笔提交 <a class="notion-link" href="https://github.com/EpicGames/UnrealEngine/commit/2b8334930fdb8b4db2ce75b4837504eb307fa737" target="_blank" rel="noopener noreferrer">D3D Symbols Improvements</a>，简单来说就是 CFLAG_GenerateSymbols 生成的符号不会再内嵌到二进制内，从而导致 RenderDoc 和 PIX 无法直接识别符号，而需要手动加载。</div><div class="notion-blank notion-block-2578fb782f78805f8490f84d46073269"> </div><div class="notion-text notion-block-2578fb782f7880c9af73d5d06cc084fd">解决方法是在 BaseEngine.ini 中修改 [ShaderCompiler] 一段，确保启用下面三个控制台变量：</div><div class="notion-blank notion-block-2578fb782f7880b99b20e56f0c1b4845"> </div><div class="notion-text notion-block-2578fb782f7880fdbad4f3309cecfe2b">前面的 ModifyCompilationEnvironment 里不再需要加 CFLAG_GenerateSymbols，只保留另外三个即可，重启编辑器并重新编译 Shaders，可以看到 Project/Saved/ShaderSymbols/PCD3D_SM6 路径下生成了 pdb 符号。</div><div class="notion-blank notion-block-2578fb782f7880ce8074e7c33312bbf4"> </div><div class="notion-text notion-block-2578fb782f78802a845dd36c86bc404a">之后，我们需要在 RenderDoc 和 PIX 里面分别设置 Shader 符号搜索路径：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2578fb782f788027a48ad1fc90fad6a7"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:576px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A897520be-ae2f-4929-bc25-342243a42d04%3Aimage.png?table=block&amp;id=2578fb78-2f78-8027-a48a-d1fc90fad6a7&amp;t=2578fb78-2f78-8027-a48a-d1fc90fad6a7" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2578fb782f7880c198e3dc636274e65b"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A489312ca-ad1a-4d94-9ada-b7e28f380b49%3Aimage.png?table=block&amp;id=2578fb78-2f78-80c1-98e3-dc636274e65b&amp;t=2578fb78-2f78-80c1-98e3-dc636274e65b" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-2578fb782f7880edb2dce140b185cb4c">这样在抓帧之后就能成功调试了。</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-2bc8fb782f788043b99af64cd8203a54" data-id="2bc8fb782f788043b99af64cd8203a54"><span><div id="2bc8fb782f788043b99af64cd8203a54" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2bc8fb782f788043b99af64cd8203a54" title="5.6 后单个 Shader 调试方法"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5.6 后单个 Shader 调试方法</span></span></h2><div class="notion-text notion-block-2bc8fb782f78808d8bf8c1156ee46310">前面说的方法是对所有 Shader 都生成 pdb，这样会大幅减缓打开 RenderDoc 或 PIX 的时间，我们可以对上面的方法稍微做下修改，只生成我们需要调试的 Shader 的 pdb，首先在 BaseEngine.ini 中进行修改，只打开一项：</div><div class="notion-blank notion-block-2bc8fb782f78803d8aace136b1d5a59e"> </div><div class="notion-text notion-block-2bc8fb782f7880da94f7c9abaea297f7">然后找到我们需要调试的 Shader 对应的 cpp 代码中的 ModifyCompilationEnvironment() 函数，在其中添加：</div><div class="notion-blank notion-block-2bc8fb782f78806fb989f0cf830f65d3"> </div><div class="notion-text notion-block-2bc8fb782f7880c2a556fd5d3a8105f6">这样就只会生成对应 Shader 的 pdb，路径跟前面一样，我们把 RenderDoc 和 PIX 的 pdb 搜索路径设置正确即可调试。</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AMD ROCm 6.4.4 纯血 Windows 预览版尝鲜]]></title>
            <link>https://www.flyandnotdown.com/post/2868fb78-2f78-8058-914e-ed63604bf20e</link>
            <guid>https://www.flyandnotdown.com/post/2868fb78-2f78-8058-914e-ed63604bf20e</guid>
            <pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[终于来了，激动，赶紧装上 torch 试试！]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2868fb782f788058914eed63604bf20e"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-2868fb782f7880099112fa9ac4a32a66">&lt;ins/&gt;</div><div class="notion-text notion-block-2868fb782f788018bc69eb705241a75e">AMD 终于兑现了他们的诺言，ROCm 上 Windows 了，目前已经开发了一个 torch 的预览仓库，在这里：</div><div class="notion-row"><a class="notion-bookmark notion-block-2868fb782f7880528d59c0c6d544c381" href="https://repo.radeon.com/rocm/windows/rocm-rel-6.4.4/" target="_blank" rel="noopener noreferrer"><div><div class="notion-bookmark-title">PyTorch on Windows Preview Repository</div><div class="notion-bookmark-description">For information on available Radeon Software for Linux releases,
please refer to

Linux® Drivers for AMD Radeon™ and Radeon PRO™ Graphics.</div><div class="notion-bookmark-link"><div class="notion-bookmark-link-text">https://repo.radeon.com/rocm/windows/rocm-rel-6.4.4/</div></div></div></a></div><div class="notion-blank notion-block-2868fb782f7880a2a53cfc43505c2539"> </div><div class="notion-text notion-block-2868fb782f7880afbd55f4cfa0a51925">要注意的是对应的 CPython 版本是 3.12，所以我们要安装一个 3.12 版本的 Python，之后下载上面仓库里的三个 whl：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2868fb782f788059ba82c1643e231d68"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A936c6227-ea0a-426c-9991-b26b481ade4e%3Aimage.png?table=block&amp;id=2868fb78-2f78-8059-ba82-c1643e231d68&amp;t=2868fb78-2f78-8059-ba82-c1643e231d68" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2868fb782f788034be96c845fa6bb831"><div style="position:relative;display:flex;justify-content:center;align-self:start;width:480px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A0aade622-08ac-44d7-9abf-b25850f84e68%3Aimage.png?table=block&amp;id=2868fb78-2f78-8034-be96-c845fa6bb831&amp;t=2868fb78-2f78-8034-be96-c845fa6bb831" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2868fb782f788006b304ef667e8dae99"><div style="position:relative;display:flex;justify-content:center;align-self:start;width:480px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A6ecccb01-6aea-481b-8757-52f9f46c5ac3%3Affdfee82-b835-451e-ad33-285554a60c81.png?table=block&amp;id=2868fb78-2f78-8006-b304-ef667e8dae99&amp;t=2868fb78-2f78-8006-b304-ef667e8dae99" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2868fb782f78806cb01bef98d269a3a9"><div style="position:relative;display:flex;justify-content:center;align-self:start;width:480px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A79d08da7-67a9-4cfa-a839-c0631bc32309%3A1b752eae-ba4d-455b-a1b7-495c6dbbb36e.png?table=block&amp;id=2868fb78-2f78-806c-b01b-ef98d269a3a9&amp;t=2868fb78-2f78-806c-b01b-ef98d269a3a9" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-2868fb782f78801a919de1f43b168283"> </div><div class="notion-text notion-block-2868fb782f7880448c26f700b67f4eaa">之后直接本地使用 pip 安装即可：</div><div class="notion-blank notion-block-2868fb782f7880a2a2d2f5d9025f4678"> </div><div class="notion-text notion-block-2868fb782f7880f4b5c8df1e8423be9e">然后我们测试一下 import torch 和设备信息：</div><div class="notion-blank notion-block-2868fb782f7880729c48f2c19e0f3922"> </div><div class="notion-text notion-block-2868fb782f788032a202fdae50cc058d">下面是我的结果，我的显卡是 RX 9070XT：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2868fb782f7880d2b262d9d1ca356f1b"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3Ab234fa88-2b32-4de8-9533-9bb2ccb599b2%3Aimage.png?table=block&amp;id=2868fb78-2f78-80d2-b262-d9d1ca356f1b&amp;t=2868fb78-2f78-80d2-b262-d9d1ca356f1b" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-2868fb782f7880fc944df3c3d0820f76"> </div><div class="notion-text notion-block-2868fb782f7880d6a606e621ab7528b9">成功，就这么简单，终于不用在 WSL 上大搞特搞了，后面抽空测试下 Stable Diffusion 看看性能怎么样，理论上应该要比 DirectML 或者 Zluda 都要好吧。</div><div class="notion-blank notion-block-2868fb782f788012a7dbfad8a4f7d93e"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GitHub 幽灵通知的处理方法]]></title>
            <link>https://www.flyandnotdown.com/post/2798fb78-2f78-80b3-85a2-c326a2aff58c</link>
            <guid>https://www.flyandnotdown.com/post/2798fb78-2f78-80b3-85a2-c326a2aff58c</guid>
            <pubDate>Sat, 27 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[广告哥已经占领 GitHub 了，用小蓝点逼疯每一个 GitHub 用户。]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2798fb782f7880b385a2c326a2aff58c"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-2868fb782f7880f1a49fe09e6c9c4bc2">&lt;ins/&gt;</div><div class="notion-text notion-block-2798fb782f7880188e2ee58bd40aa43b">最近遇到一个很恶心的问题，就是 GitHub 会有类似于这种的通知，明明已经点击已读了，但是小蓝点和 Inbox 还是在：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2798fb782f7880f7abbddc4b3cc47c54"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A44af8c5c-eb8d-4a6c-8d4f-f9ca2095f5d5%3Aimage.png?table=block&amp;id=2798fb78-2f78-80f7-abbd-dc4b3cc47c54&amp;t=2798fb78-2f78-80f7-abbd-dc4b3cc47c54" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-2798fb782f78801e99caf1a33facda72"> </div><div class="notion-text notion-block-2798fb782f78800981d3ed952e9ab955">这个问题已经很多年了貌似原因是某些用户的仓库里通过提及你给你发广告，然后仓库被 GitHub 封禁后，仓库没了，但是通知还是在，参考这个帖子：</div><div class="notion-row"><a class="notion-bookmark notion-block-2798fb782f788090ae5fee4f48baeba1" href="https://github.com/orgs/community/discussions/6874" target="_blank" rel="noopener noreferrer"><div><div class="notion-bookmark-title">Bug: ghost notifications · community · Discussion #6874</div><div class="notion-bookmark-description">See the screenshot. I must have 5 notifications I cannot see, as the bell has the blue dot, and the pagination shows I&amp;#39;m viewing notifications &amp;quot;1-0 of 5&amp;quot;. Note I&amp;#39;ve tried clearing...</div><div class="notion-bookmark-link"><div class="notion-bookmark-link-icon"><img src="https://www.notion.so/image/https%3A%2F%2Fgithub.com%2Ffluidicon.png?table=block&amp;id=2798fb78-2f78-8090-ae5f-ee4f48baeba1&amp;t=2798fb78-2f78-8090-ae5f-ee4f48baeba1" alt="Bug: ghost notifications · community · Discussion #6874" loading="lazy" decoding="async"/></div><div class="notion-bookmark-link-text">https://github.com/orgs/community/discussions/6874</div></div></div><div class="notion-bookmark-image"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fopengraph.githubassets.com%2F4a0c8ca12547f7898d05cecd0076dfcf5b60cde91df51e27f9d79ea2ad5f18ab%2Forgs%2Fcommunity%2Fdiscussions%2F6874?table=block&amp;id=2798fb78-2f78-8090-ae5f-ee4f48baeba1&amp;t=2798fb78-2f78-8090-ae5f-ee4f48baeba1" alt="Bug: ghost notifications · community · Discussion #6874" loading="lazy" decoding="async"/></div></a></div><div class="notion-blank notion-block-2798fb782f78809ab8b8d1cede3a7900"> </div><div class="notion-text notion-block-2798fb782f78807094bdecd9c9b49281">这个问题没办法通过 WebUI 来解决，只能使用 GitHub 的 WebAPI，因为我安装了 <a class="notion-link" href="https://github.com/cli/cli" target="_blank" rel="noopener noreferrer">GitHub CLI</a>，最后的解决方法是输入一下下面的命令来清理通知：</div><div class="notion-blank notion-block-2798fb782f7880629a3ee6e0501010b6"> </div><div class="notion-text notion-block-2798fb782f78806bb3dfdef0fe6840ad">还有一种方式是用 curl 直接调用 GitHub 的 WebAPI：</div><div class="notion-blank notion-block-2798fb782f78800a89b9f53a75e55736"> </div><div class="notion-text notion-block-2798fb782f788012b30fd5944b81cee4">$TOKEN 可以参考帖子里的方法获取。</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AMD 9070xt 显卡使用 WSL 搭建 ROCm+PyTorch 环境（2025.5 尝鲜）]]></title>
            <link>https://www.flyandnotdown.com/post/1ea8fb78-2f78-8070-a472-fcda0e4d74b9</link>
            <guid>https://www.flyandnotdown.com/post/1ea8fb78-2f78-8070-a472-fcda0e4d74b9</guid>
            <pubDate>Sun, 04 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[没苦硬吃系列之 A 卡玩 AI …..]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-1ea8fb782f788070a472fcda0e4d74b9"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-2098fb782f7880489e6edf3c1f72b5a6">&lt;ins/&gt;</div><div class="notion-text notion-block-1ea8fb782f78806b897dc4de8fbe748c">最近换显卡了，在 50 系的持续耍猴下我选择买了 9070xt 这张游戏神卡，于是准备折腾下 PyTorch 环境看看到底能不能用。本文发布的时候，官方版本的 ROCm（6.4） 实际上还是不支持 9070xt 的，需要加点特技才能跑起来，下面是我自己折腾出来的一些经验。</div><div class="notion-blank notion-block-1ed8fb782f7880c0978df1d54e4f1a06"> </div><div class="notion-text notion-block-1ed8fb782f7880968ba3f5db47869ac4">值的一提的是，在现在这个时间点（2025.5.4），即使你按照我的方法把 ROCm+PyTorch 装上了，性能也是十分垃圾的，据网上说甚至还不如 2070，我估计是现在 ROCm 官方还没对 RNDA4 架构做深度优化的原因。</div><div class="notion-blank notion-block-1eb8fb782f7880b58a7fdd6e52a436ea"> </div><div class="notion-text notion-block-1eb8fb782f7880bdbdd7ccb399e59947">关于 ROCm 暂时不支持 9000 系列 A 卡（RNDA4）的 Issue 在这里，后续官方应该会更新到无痛支持并且大幅提升性能：</div><div class="notion-row"><a class="notion-bookmark notion-block-1eb8fb782f7880ffb7f4d37eaab2da7d" href="https://github.com/ROCm/ROCm/issues/4443" target="_blank" rel="noopener noreferrer"><div><div class="notion-bookmark-title">github.com</div><div class="notion-bookmark-link"><div class="notion-bookmark-link-text">https://github.com/ROCm/ROCm/issues/4443</div></div></div></a></div><div class="notion-blank notion-block-1eb8fb782f7880f4af9bd27303e76331"> </div><div class="notion-text notion-block-1eb8fb782f7880a4bbebf0e9a11acaf0">下面进入正题。</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-1ea8fb782f7880828b9cdf51fde8b855" data-id="1ea8fb782f7880828b9cdf51fde8b855"><span><div id="1ea8fb782f7880828b9cdf51fde8b855" class="notion-header-anchor"></div><a class="notion-hash-link" href="#1ea8fb782f7880828b9cdf51fde8b855" title="安装 WSL"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">安装 WSL</span></span></h2><div class="notion-text notion-block-1ea8fb782f788040a11dfa544bc84035">ROCm 目前只能在 linux 上使用，想要在 Windows 下使用 ROCm 就只能选择 WSL。我们首先在系统设置中把 WSL 可选功能打开并重新启动：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-1ed8fb782f7880f6bdf6c062bfbc1a30"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3Abdabfd51-f5c4-43a2-aaad-5fa3ea13a117%3Aimage.png?table=block&amp;id=1ed8fb78-2f78-80f6-bdf6-c062bfbc1a30&amp;t=1ed8fb78-2f78-80f6-bdf6-c062bfbc1a30" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-1ea8fb782f7880f18c4ac915585efbef"> </div><div class="notion-text notion-block-1ea8fb782f788035a325d16b98305802">自行启用魔法后安装 WSL 管理器本体：</div><div class="notion-blank notion-block-1ea8fb782f7880328d13ddb9b73df0d6"> </div><div class="notion-text notion-block-1ea8fb782f788038b73fd301ccc84e03">列出可选发行版：</div><div class="notion-blank notion-block-1ea8fb782f7880798be5d2fbca05d76c"> </div><div class="notion-text notion-block-1ea8fb782f7880b0a5cdf31738fe423e">选择想要的发行版并安装，我使用的是 Ubuntu-24.04：</div><div class="notion-blank notion-block-1eb8fb782f7880d0a872c5b4d92b6163"> </div><div class="notion-text notion-block-1eb8fb782f78806a9c2ef706ff4e6ebd">使用这个指令安装太慢的话也可以在 Microsoft Store 搜索然后下载：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-1ed8fb782f788032a221f62bba93f73e"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A2cfc732d-a652-4c85-b982-5d5ddb19f4c8%3Aimage.png?table=block&amp;id=1ed8fb78-2f78-8032-a221-f62bba93f73e&amp;t=1ed8fb78-2f78-8032-a221-f62bba93f73e" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-1ea8fb782f7880208c3bed60b067c55f"> </div><div class="notion-text notion-block-1ea8fb782f7880a188f0e0544a052ccf">完成安装后在 Windows 开始菜单搜索 WSL Settings，进入后把网络模式改成桥接，这样就可以共享 Windows 的魔法了：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-1ed8fb782f7880a9a5b0fc722f702ab8"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A4d4dd22d-55d3-4eaa-a1a3-18f484aa5e3d%3Aimage.png?table=block&amp;id=1ed8fb78-2f78-80a9-a5b0-fc722f702ab8&amp;t=1ed8fb78-2f78-80a9-a5b0-fc722f702ab8" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-1ea8fb782f788087b276f708a59cd569"> </div><div class="notion-text notion-block-1ea8fb782f78809cb8eefc35660a3ed1">修改之后需要彻底重启 WSL 生效：</div><div class="notion-blank notion-block-1eb8fb782f78808a92c5cdf92d96bc95"> </div><div class="notion-text notion-block-1ea8fb782f7880edace8e4679e2c13bd">之后使用 Windows Terminal 进入 WSL 就可以了：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-1ed8fb782f788098a00dd75a93c0f1a7"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A0bd1f743-993c-46e0-8c64-e1245fe5c93f%3Aimage.png?table=block&amp;id=1ed8fb78-2f78-8098-a00d-d75a93c0f1a7&amp;t=1ed8fb78-2f78-8098-a00d-d75a93c0f1a7" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-1ea8fb782f78808bac4efcd7e75911cf"> </div><div class="notion-text notion-block-1ea8fb782f7880a79c65d181ce8144ee">后续的所有软件安装都在 WSL 中进行。</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-1ea8fb782f7880cca42ff967f367e74e" data-id="1ea8fb782f7880cca42ff967f367e74e"><span><div id="1ea8fb782f7880cca42ff967f367e74e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#1ea8fb782f7880cca42ff967f367e74e" title="安装 ROCm"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">安装 ROCm</span></span></h2><div class="notion-text notion-block-1ea8fb782f788046b31de00336656f4f">最新版本的安装教程在这里，指令按照这里的自行进行更新，本文以 6.4 为例：</div><div class="notion-row"><a class="notion-bookmark notion-block-1ea8fb782f7880a0816bcdd119d996c8" href="https://rocmdocs.amd.com/projects/install-on-linux/en/latest/install/install-methods/amdgpu-installer/amdgpu-installer-ubuntu.html" target="_blank" rel="noopener noreferrer"><div><div class="notion-bookmark-title">Ubuntu AMDGPU installer installation — ROCm installation (Linux)</div><div class="notion-bookmark-description">Ubuntu AMDGPU installer installation</div><div class="notion-bookmark-link"><div class="notion-bookmark-link-icon"><img src="https://www.notion.so/image/https%3A%2F%2Fwww.amd.com%2Fcontent%2Fdam%2Fcode%2Fimages%2Ffavicon%2Ffavicon.ico?table=block&amp;id=1ea8fb78-2f78-80a0-816b-cdd119d996c8&amp;t=1ea8fb78-2f78-80a0-816b-cdd119d996c8" alt="Ubuntu AMDGPU installer installation — ROCm installation (Linux)" loading="lazy" decoding="async"/></div><div class="notion-bookmark-link-text">https://rocmdocs.amd.com/projects/install-on-linux/en/latest/install/install-methods/amdgpu-installer/amdgpu-installer-ubuntu.html</div></div></div></a></div><div class="notion-blank notion-block-1ea8fb782f7880d08acce9ce5504a241"> </div><div class="notion-text notion-block-1ea8fb782f788025b35dd01ae652c010">选择自己对应的 Ubuntu 版本找到 amdgpu-install 安装指令并安装，例如我这里是：</div><div class="notion-blank notion-block-1ea8fb782f7880a09551c2b34456f7b3"> </div><div class="notion-text notion-block-1ea8fb782f7880e2ae7dcfcadfa5dc40">接着使用 amdgpu-install 安装 rocm：</div><div class="notion-blank notion-block-1ea8fb782f7880ec8b86e4c1b434518c"> </div><div class="notion-text notion-block-1ea8fb782f78805b8a2ad4114688bc86">之后重启 WSL（Windows 下 wsl —-shutdown）。完成之后如果使用 rocminfo 确认信息时候有 Agent 输出就可以了：</div><div class="notion-blank notion-block-1ea8fb782f78805d9712d9b4a3d604b1"> </div><div class="notion-text notion-block-1ea8fb782f78809cb7dac08cb2c373ad">例如我的输出机器上显示有两个 Agent，分别是 CPU R9 9950x 和 GPU 9070xt，请确认你的显卡显示在 Agent 信息中。</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-1ea8fb782f7880e4ade7da75e7b3902c" data-id="1ea8fb782f7880e4ade7da75e7b3902c"><span><div id="1ea8fb782f7880e4ade7da75e7b3902c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#1ea8fb782f7880e4ade7da75e7b3902c" title="安装 PyTorch"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">安装 PyTorch</span></span></h2><div class="notion-text notion-block-1ea8fb782f7880f4b094d3306c1904e9">PyTorch 需要使用 AMD Repo 上版本，安装文档在这里：</div><div class="notion-row"><a class="notion-bookmark notion-block-1ea8fb782f7880c99775e81691ebe668" href="https://rocm.docs.amd.com/projects/radeon/en/docs-6.2/docs/install/native_linux/install-pytorch.html" target="_blank" rel="noopener noreferrer"><div><div class="notion-bookmark-title">Install PyTorch for ROCm — Use ROCm on Radeon GPUs</div><div class="notion-bookmark-description">Refer to this section for the recommended PyTorch via PIP installation method, as well as Docker-based installation.</div><div class="notion-bookmark-link"><div class="notion-bookmark-link-icon"><img src="https://www.notion.so/image/https%3A%2F%2Fwww.amd.com%2Fthemes%2Fcustom%2Famd%2Ffavicon.ico?table=block&amp;id=1ea8fb78-2f78-80c9-9775-e81691ebe668&amp;t=1ea8fb78-2f78-80c9-9775-e81691ebe668" alt="Install PyTorch for ROCm — Use ROCm on Radeon GPUs" loading="lazy" decoding="async"/></div><div class="notion-bookmark-link-text">https://rocm.docs.amd.com/projects/radeon/en/docs-6.2/docs/install/native_linux/install-pytorch.html</div></div></div></a></div><div class="notion-blank notion-block-1ea8fb782f7880439f67d1622f912fb2"> </div><div class="notion-text notion-block-1ea8fb782f7880cfb60ef4b9620d4269">这里我用的 ROCm 版本是 6.4，Python 版本是 3.12，可以根据文档里的链接自己去 <a class="notion-link" href="https://repo.radeon.com/rocm/manylinux" target="_blank" rel="noopener noreferrer">AMD Repo</a> 里面找 whl 文件，我这里最后的安装指令是：</div><div class="notion-blank notion-block-1ea8fb782f7880d18676db008ccd41fd"> </div><div class="notion-text notion-block-1ea8fb782f78801d92dfe41ff34337e8">完成安装之后我们需要替换 torch 中的 WSL 兼容层（这一步很重要，你按照 ROCm 官方的文档装可能就会因为这一步导致最后 PyTorch cuda.is_available 返回 False），libhsa-runtime64.so 的版本可能有所不同，需要自行修改下命令行，我这里的是：</div><div class="notion-blank notion-block-1eb8fb782f788007bb90f95393c8308b"> </div><div class="notion-text notion-block-1eb8fb782f7880caa152fa682a0fa46c">最后使用下面指令检查 torch 是否成功安装以及识别显卡：</div><div class="notion-blank notion-block-1eb8fb782f78808fb609c1c4adeb1314"> </div><div class="notion-text notion-block-1eb8fb782f78805bbdb4c934632d0287">这里我的输出：</div><div class="notion-blank notion-block-1eb8fb782f7880b29211ca831625fe5f"> </div><div class="notion-text notion-block-1eb8fb782f7880faa4faf72898b26496">输出这样就确认完成了，amdsmi 那个 warning 可以忽略，不影响正常使用，看网上说是因为使用 WSL 导致的。到这里为止，PyTorch 的环境就算折腾完成了。后续正常使用就行了，搞整各种 AI 应用都行，不过看 Reddit 上人家测的 Stable Diffusion 性能真的很糟糕，甚至都不如老点的 A 卡，这个点只能说是尝鲜，后面还是等 ROCm 出了官方 RDNA4 架构支持再按官方文档弄比较靠谱。</div><div class="notion-blank notion-block-1eb8fb782f78807f8ffbd61124a20dae"> </div><div class="notion-blank notion-block-1ec8fb782f788079a21ff226b3e089e9"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[UE Slate 组件阻塞 LevelViewport 更新的解决方法]]></title>
            <link>https://www.flyandnotdown.com/post/2638fb78-2f78-8073-9b32-d64f8bce076f</link>
            <guid>https://www.flyandnotdown.com/post/2638fb78-2f78-8073-9b32-d64f8bce076f</guid>
            <pubDate>Sat, 06 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[UE 又一个 Slate 开发的小坑。]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2638fb782f7880739b32d64f8bce076f"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-2638fb782f7880a0b53dc88d8120d349">&lt;ins/&gt;</div><div class="notion-text notion-block-2638fb782f7880a1820fc817023d2f8b">一般情况下 Slate 组件更新会阻塞 LevelViewport 更新，会导致一些高响应组件（例如 SpinBox 的滑动）修改的值无法在 LevelViewport 中得到实时预览。</div><div class="notion-blank notion-block-2638fb782f78809581f8effaeb94f7e6"> </div><div class="notion-text notion-block-2638fb782f7880f781ddcd7b547ea096">这个问题使用下面代码可以解决，注意调用这个函数之后还需要在一个合适的时机改回去，以提高编辑器性能：</div><div class="notion-blank notion-block-2638fb782f78808f990ecb1da2d72386"> </div><div class="notion-text notion-block-2638fb782f7880d086f3e540ae8c221d">例如 SpinBox 可以这样写，在开始滑动时允许 LevelViewport 同步更新，滑动结束后再取消：</div><div class="notion-blank notion-block-2638fb782f78805db9dcf523363fb9d1"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[UE5 Android Vulkan 启用 Validation Layers]]></title>
            <link>https://www.flyandnotdown.com/post/2578fb78-2f78-805d-9ff2-cbc521d4b692</link>
            <guid>https://www.flyandnotdown.com/post/2578fb78-2f78-805d-9ff2-cbc521d4b692</guid>
            <pubDate>Sat, 23 Aug 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[记录一下 UE5 中如何启用 Vulkan Validation Layers。]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2578fb782f78805d9ff2cbc521d4b692"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-2578fb782f788010820ec02b8f61c16b">&lt;ins/&gt;</div><div class="notion-text notion-block-2578fb782f78808886b2cc1a58de2f4c">前提，需要 Development 或 Debug 版本，确保 VULKAN_HAS_DEBUGGING_ENABLED 宏启用。</div><div class="notion-blank notion-block-2578fb782f7880388b48cbf5acc05d9d"> </div><div class="notion-text notion-block-2578fb782f7880189689ded9b814e29d">首先在打包设置中添加如下设置：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2578fb782f788038b0f6d2dff0acc11b"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A725e1ade-0c86-42c9-8a58-81d469202a12%3Aimage.png?table=block&amp;id=2578fb78-2f78-8038-b0f6-d2dff0acc11b&amp;t=2578fb78-2f78-8038-b0f6-d2dff0acc11b" alt="notion image" loading="lazy" decoding="async"/></div></figure><ul class="notion-list notion-list-disc notion-block-2578fb782f788042a728f1085bb86893"><li>Debug Vulkan Layer Directory: /path/to/Engine/Binaries/ThirdParty/Vulkan/Android/arm64-v8a，确保这个路径下包含 libVkLayer_khronos_validation.so</li></ul><ul class="notion-list notion-list-disc notion-block-2578fb782f788028a669eb55ffaef44e"><li>Debug Vulkan Device Layers: VK_LAYER_KHRONOS_validation</li></ul><ul class="notion-list notion-list-disc notion-block-2578fb782f788045ba9de097fd7f9227"><li>Debug Vulkan Instance Layers: VK_LAYER_KHRONOS_validation</li></ul><div class="notion-blank notion-block-2578fb782f7880928fa9d482b56560ee"> </div><div class="notion-text notion-block-2578fb782f78802ab911d265c2e00d4e">接着需要修改 r.Vulkan.EnableValidation 为 1 以上，我这里是直接修改代码了，也可以用别的方法：参考如下定义：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2578fb782f7880449c98c7038107b505"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A0f4f6a1e-02c6-4574-8ca5-2da8fda8a8bd%3Aimage.png?table=block&amp;id=2578fb78-2f78-8044-9c98-c7038107b505&amp;t=2578fb78-2f78-8044-9c98-c7038107b505" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-2578fb782f7880d89cd9ca8e1be67eae"> </div><div class="notion-text notion-block-2578fb782f7880f3989df3c21ffaf2aa">重新打包安装后即可，确认 logcat 输出中有如下字样则说明启用成功了：</div><div class="notion-blank notion-block-2578fb782f788038b001c84dc358cd47"> </div><div class="notion-text notion-block-2578fb782f788060b72fc063737992c6">之后输出的 Validation Layers 报错会以类似的形式展示：</div><div class="notion-blank notion-block-2578fb782f78805fa522c2451c9fb4a9"> </div></main></div>]]></content:encoded>
        </item>
    </channel>
</rss>