Android
模拟器 29.0.6(2019 年 5 月 1 日)
版本开始在Android Q测试版3
中引入了对于 Vulkan
的支持,因此已经可以在模拟器上调试 Vulkan
代码了。
pytorch 1.0.1在ubuntu 18.04(GeForce GTX 760)编译(CUDA-10.1)
目前 ubuntu 18.04
上使用 sudo apt-get install nvidia-cuda-toolkit
安装的是 9.1.85
版本的 nvidia cuda
, 尽管版本比较老,但是好在稳定性好,适用范围广。
当我们的项目需要使用指定版本的 pytorch
的时候,目前官方提供的编译好的 nvidia cuda
安装包并不兼容全部的硬件。这个在实际环境中是比较麻烦的。
目前来说,比较稳妥的办法是直接从源代码编译。
如果显卡是几年前的显卡(GeForce GTX 760 Compute Capability = 3.0 / GeForce GT 720M Lenveo Thinkpad T440 Compute Capability = 2.1),运行的时候会提示:
执行的时候会报错
硬件的计算能力查询 Recommended GPU for Developers
------------------------------------------------------------------------------------
安装最新版本的 cuda-10.1
,低版本的编译会出问题:
安装 cuDNN
去官网下载对应版本的 cuDNN
一共是三个安装包,逐个安装即可。
Lenveo T440 Compute Capability = 2.1 不支持 cuDNN
,因此没必要安装 , 其实连最新版本的 CUDA-10.1
也不能安装,原因在于 NVIDIA GT 720M
的驱动只支持到 390
版本,而 CUDA-10.1
需 418
以上的版本才能支持,具体表现在于系统启动后没有加载显卡驱动,dmesg
可以查看到如下信息:
------------------------------------------------------------------------------------
依旧是推荐在 Anaconda 上建立独立的编译环境,然后执行编译:
如果出现如下错误:
则需要调整代码 aten/src/ATen/native/sparse/cuda/SparseCUDABlas.cu
, 在其中的 cusparseGetErrorString
函数上增加 #if (!((CUSPARSE_VER_MAJOR >= 10) && (CUSPARSE_VER_MINOR >= 2)))
如下:
这样解决跟 CUDA-10.1
自带函数的冲突问题。
具体参考: https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/native/sparse/cuda/SparseCUDABlas.cu
源码安装的Pytorch,卸载需要执行:
Pytorch 代码下载非常缓慢,可以本站下载同步好的pytorch源代码。
参考链接
- pytorch 1.3 ubuntu 18.04 编译
- Pytorch 在 Ubuntu18.04 上的编译、安装、与问题
- Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换
- PyTorch no longer supports this GPU because it is too old.
- Cuda runtime error (48) : no kernel image is available for execution
- pytorch查看CUDA支持情况,只需要三行代码,另附Cuda runtime error (48) : no kernel image is available for execution处理办法
- CUDA计算能力的含义
- Recommended GPU for Developers
- undefined reference to 'cudaSetupArgument', 'cudaLaunch'
- NVIDIA driver problems on laptop (after botched CUDA installation attempt)
- WHAT'S A LEGACY DRIVER?
- nvidia geforce gt 720m could not find compatible graphics hardware.
- Replace deprecated CUDA APIs
- ../libATen.so.1: undefined reference to `cublasGemmStridedBatchedEx' #5631
- Error using __ldg in cuda kernel at compile time
- 源码编译pytorch 1.0 遇到的问题
Anaconda conda切换为国内源
- Windows下
1 添加清华源
命令行中直接使用以下命令
2 添加中科大源
- Linux下
将以上配置文件写在~/.condarc
中
切记
在修改完成之后,一定要重新启动一个新的Shell
, 否则设置不生效。
参考链接
PyTorch运行时提示'ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.'
最省事的情况是降级pytorch
版本到0.4
,强烈建议使用Anaconda
创建独立的Python
开发环境,然后在干净的环境中运行。
参考链接
ubuntu 18.04 "nvidia-340 导致 /usr/lib/x86_64-linux-gnu/libGL.so.1 转移到 /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib"
ubuntu 18.04 systemd-udevd进程CPU占用特别高,CUDA Toolkit 10.1 Update 2安装之后出现
最近在T440笔记本的ubuntu 18.04系统上安装最新的CUDA Toolkit 10.1 Update 2
之后,发现 systemd-udevd
进程CPU占用特别高,执行 sudo /lib/systemd/systemd-udevd -D
,会发现持续输出如下信息:
解决方法如下:
参考链接
macOS Catalina(10.15.1)无法安装使用CUDA了
在 macOS Catalina (10.15.1)
系统上,已经无法安装使用CUDA
了。
貌似 CUDA
只能支持到 macOS High Sierra (10.13)
。
原因在于 Apple
严格控制着显卡驱动的权限,导致即时nvidia
希望更新显卡驱动,也需要等待 Apple
的许可。
但是貌似 Apple
对显卡驱动进行了深度的定制,而这个驱动定制团队貌似已经终止了。这就造成没办法进行驱动的更新,简直是悲剧啊!
参考链接中各种说法很多,但是一致的见解是只有降级系统这一条路了, Docker
也是不行的,宿主机不支持,也是搞不定。
不过,貌似安装双系统可以规避这个问题!(可惜只能是低版本系统安装高版本系统!高版本系统安装低版本的时候会被拒绝)。 一个 macOS High Sierra (10.13)
,另一个安装更高的系统版本。参考: 在单独的 APFS 宗卷上安装 macOS
参考链接
- No NVIDIA Drivers for Mojave
- Apple's management doesn't want Nvidia support in macOS, and that's a bad sign for the Mac Pro
- Why Won’t Apple Support Nvidia Silicon With macOS Mojave?
- CUDA 10 and macOS 10.14
- When will the Nvidia Web Drivers be released for macOS Mojave 10.14
- NVIDIA Driver and NVIDIA CUDA driver for nVidia GeForce GT750M on MacBook mid 2014 with Mojave 10.14...
- 苹果macOS Mojave 10.14正式版不支持NVIDIA驱动和CUDA加速
- 在单独的 APFS 宗卷上安装 macOS
- How to dual-boot Mac: run two versions of macOS on a Mac
- When will the Nvidia Drivers be released for macOS 10.15 Catalina?
Android Studio 3.5.2最小化接入weex 0.28.0实践
目前在尝试使用weex,但是在搭建基础的最小化项目的时候,官方文档描述的相当佛系,导致搭建出来的项目没办法正常运行。
下面我们探讨一下,使用Android Studio 3.5.2
新建一个项目,实现最小化接入weex 0.28.0
实践过程。
官方文档要求在项目的build.gradle
中增加如下内容:
但是实际上,由于weex 0.28.0
的调整,以前版本自动引入的facebook
提供的JS
引擎js-android,现在被修改为需要手工引入,但是文档没有清晰的指出这个问题,导致运行的时候,会由于找不到libjsc.so
而导致WXSDKEngine
初始化失败。
官方提供了一个download_jsc.gradle
的脚本解决这个问题(这个脚本的功能仅仅是下载libjsc.so
),需要在项目的 build.gradle
的头部增加这个脚本文件的引用:
如果下载不成功,也可从本站下载
完成后的build.gradle
中完整内容如下:
接下来,就是具体的代码部分了,如下,需要自定义一个Application
类,在Application
的初始化部分初始化WXSDKEngine
,代码如下:
接下来,就是具体的Activity
内容展现代码部分了,代码如下:
需要注意的是WXSDKEngine
是异步初始化的,导致在首次调用的时候,可能会因为没有正常初始化而出现异常,因此需要等待初始化完成。
具体的例子项目在这里下载 Weex
鉴于开源项目经常性找不到文件,因此记录下来 http://dotwe.org/raw/dist/38e202c16bdfefbdb88a8754f975454c.bundle.wx 这个文件里面的内容:
参考链接
html数学公式显示库MathJax的使用
MathJax是一个开源的web数学公式渲染器,由JS编写而成。MathJax允许你在你的网页中包含公式,无论是使用LaTeX、MathML或者AsciiMath符号,这些公式都会被javascript处理为HTML、SVG或者MathML符号。
引入CDN
只需要在头部添加下面这句,就可以成功引入CDN
内联config说明
官方提供了一个能让我们内联一个配置选项的功能,要想让这个内联配置生效就得放在
CDN引入之前。如下
MathJax 2.x 跟 MathJax 3.x 的配置信息是不同的,这部分的配置转换可以通过MathJax-demos-web中的v2 to v3 Configuration Converter。
上面的配置信息,转换后的结果如下:
其中MathJax.Hub.Config()里的配置选项是重点,本例表示用来识别行内公式,$来识别行间公式。
书写公式
对应的公式在html文件中写法如下
显示效果
WordPress上实现上述功能,最简单的方式是安装 Simple Mathjax 插件即可。
注意,目前(2022/03/16)的 MathJax 3.x 还不支持多语言,不支持公式自动换行(automatic line breaking)。
参考链接
Compatibility Between SPIR-V Image Formats And Vulkan Formats
SPIR-V Image Format | Compatible Vulkan Format |
---|---|
Rgba32f |
VK_FORMAT_R32G32B32A32_SFLOAT |
Rgba16f |
VK_FORMAT_R16G16B16A16_SFLOAT |
R32f |
VK_FORMAT_R32_SFLOAT |
Rgba8 |
VK_FORMAT_R8G8B8A8_UNORM |
Rgba8Snorm |
VK_FORMAT_R8G8B8A8_SNORM |
Rg32f |
VK_FORMAT_R32G32_SFLOAT |
Rg16f |
VK_FORMAT_R16G16_SFLOAT |
R11fG11fB10f |
VK_FORMAT_B10G11R11_UFLOAT_PACK32 |
R16f |
VK_FORMAT_R16_SFLOAT |
Rgba16 |
VK_FORMAT_R16G16B16A16_UNORM |
Rgb10A2 |
VK_FORMAT_A2B10G10R10_UNORM_PACK32 |
Rg16 |
VK_FORMAT_R16G16_UNORM |
Rg8 |
VK_FORMAT_R8G8_UNORM |
R16 |
VK_FORMAT_R16_UNORM |
R8 |
VK_FORMAT_R8_UNORM |
Rgba16Snorm |
VK_FORMAT_R16G16B16A16_SNORM |
Rg16Snorm |
VK_FORMAT_R16G16_SNORM |
Rg8Snorm |
VK_FORMAT_R8G8_SNORM |
R16Snorm |
VK_FORMAT_R16_SNORM |
R8Snorm |
VK_FORMAT_R8_SNORM |
Rgba32i |
VK_FORMAT_R32G32B32A32_SINT |
Rgba16i |
VK_FORMAT_R16G16B16A16_SINT |
Rgba8i |
VK_FORMAT_R8G8B8A8_SINT |
R32i |
VK_FORMAT_R32_SINT |
Rg32i |
VK_FORMAT_R32G32_SINT |
Rg16i |
VK_FORMAT_R16G16_SINT |
Rg8i |
VK_FORMAT_R8G8_SINT |
R16i |
VK_FORMAT_R16_SINT |
R8i |
VK_FORMAT_R8_SINT |
Rgba32ui |
VK_FORMAT_R32G32B32A32_UINT |
Rgba16ui |
VK_FORMAT_R16G16B16A16_UINT |
Rgba8ui |
VK_FORMAT_R8G8B8A8_UINT |
R32ui |
VK_FORMAT_R32_UINT |
Rgb10a2ui |
VK_FORMAT_A2B10G10R10_UINT_PACK32 |
Rg32ui |
VK_FORMAT_R32G32_UINT |
Rg16ui |
VK_FORMAT_R16G16_UINT |
Rg8ui |
VK_FORMAT_R8G8_UINT |
R16ui |
VK_FORMAT_R16_UINT |
R8ui |
VK_FORMAT_R8_UINT |
参考链接
Compatibility Between SPIR-V Image Formats And Vulkan Formats