How to check WSL 2 build version? - windows-subsystem-for-linux

The wsl --update gives us a way to update it to get new features and fixes as usual in other software.
But is there any way to check the current build version of it to know whether I need to update it or not?
Note: Here I don't mean the distinction between the older WSL and WSL 2 but the current build version of WSL 2.

You can check the version of your currently installed WSL2 with a following command in CMD/Powershell:
wsl --version
It should looks like this:
C:\Users\user>wsl --version
WSL version: 1.0.3.0
Kernel version: 5.15.79.1
WSLg version: 1.0.47
MSRDC version: 1.2.3575
Direct3D version: 1.606.4
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.19045.2486

Related

WSLG on Windows Insider Preview build - Unable to load gui apps

Getting can not open display error in wslg on windows Insider build.
If you are installing Ubuntu or other distro from Windows Store then they comes with wsl version 1. wslg is only compatible with WSL 2.
you can list the distros using :
wsl --list -v
then choose distro you want to use and fire below command:
wsl --set-version your_distro_name_with_version_goes_here 2
for example:
wsl --set-version Ubuntu-20.04 2
after that restart wsl using
wsl --shutdown
Check screen shots for refeence.
Source : https://github.com/microsoft/wslg

Install Tensorflow-GPU on WSL2

Has anyone successfully installed Tensorflow-GPU on WSL2 with NVIDIA GPUs? I have Ubuntu 18.04 on WSL2, but am struggling to get NVIDIA drivers installed. Any help would be appreciated as I'm lost.
So I have just got this running.
The steps you need to follow are here. To summarise them:
sign up for windows insider program and get the development builds of windows so that you have the latest version
Install wsl 2
Install Ubuntu from the windows store
Install the wsl 2 cuda driver on windows
Install cuda toolkit
Install cudnn (you can download the linux version from windows and then copy the file to linux)
If you are getting memory errors like 'cannot allocate memory' then you might need to increase the amount of memory wsl can get
Then install tensorflow-gpu
pray it works
bugs I hit along the way:
If when you open ubuntu for the first time you get an error you need to enable virutalisation in the bios
If you cannot run the ./Blackscholes example in the installation instructions you might not have the right build of windows! You must have the right version
if you are getting 'cannot allocate memory' errors when running tf you need to give wsl more ram. It only access half your ram by default
create a .wslconfig file under your user directory in windows with the amount of memory you want. Mine looks like:
[wsl2]
memory=16GB
Edit after running some code
This is much slower then when I was running on windows directly. I went from 1 minute per epoch to 5 minutes. I'm just going to dualboot.
These are the steps I had to follow for Ubuntu 20.04. I am no longer on dev channel, beta channel works fine for this use case and is much more stable.
Install WSL2
Install Ubuntu 20.04 from Windows Store
Install Nvidia Drivers for Windows from: https://developer.nvidia.com/cuda/wsl/download
Install nvcc inside of WSL with:
sudo apt install nvidia-cuda-toolkit
Check that it is there with:
nvcc --version
For my use case, I do data science and already had anaconda installed. I created an environment with:
conda create --name tensorflow
conda install tensorflow-gpu
Then just test it with this little python program with the environment activated:
import tensorflow as tf
tf.config.list_physical_devices('GPU')
sys_details = tf.sysconfig.get_build_info()
cuda = sys_details["cuda_version"]
cudnn = sys_details["cudnn_version"]
print(cuda, cudnn)
For reasons I do not understand, my machine was unable to find the GPU without installing the nvcc and actually gave an error message saying it could not find nvcc.
Online tutorials I had found which had you downloading CUDA and CUDNN separately but I thinkNVCC includes CUDNN since it is . . . there somehow.
I can confirm I am able to get this working without the need for Docker on WSL2 thanks to the following article:
https://qiita.com/Navier/items/cf551908bae707db4258
Be sure to update to driver version 460.15, not 455.41 as listed in the CUDA documentation.
Note, this does not work with the card in TCC mode (only WDDM). Also, be sure to place your files on the Linux file system (i.e. not on a mount drive, like /mnt/c/). Performance is significantly faster on the Linux file system (this has to do with the difference in implementation of WSL 1 vs. WSL 2; see 1, 2, and 3).
NOTE: See also Is the class generator (inheriting Sequence) thread safe in Keras/Tensorflow?
I just want to point out that using anaconda to install cudatoolkit and cudnn does not seem to work in wsl.
Maybe there is some problem with paths that make TF look for the needed files only in the system paths instead of the conda enviroments.

Can I install Tensorflow 1.15 with GPU support on Ubuntu 20.04.1 LTS?

I am building a Deep Learning rig with a GeForce RTX 2060.
I am wanting to use baselines-stable which isn't tensorflow 2.0 compatible yet.
According to here and here, tensorflow-gpu-1.15 is only listed as compatible with CUDA 10.0, not CUDA 10.1.
Attempting to download CUDA from Nvidia, the option for Ubuntu 20.04 is not available for CUDA 10.0.
Searching the apt-cache does not result in CUDA 10.0 either.
$ sudo apt-cache policy nvidia-cuda-toolkit
[sudo] password for lansford:
nvidia-cuda-toolkit:
Installed: (none)
Candidate: 10.1.243-3
Version table:
10.1.243-3 500
500 http://us.archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages
I would highly prefer not to have to reinstall the OS with an older version of Ubuntu. However experimenting with reinforcement learning was the motive for purchasing this PC.
I see some possible clues that it might be possible to build tensorflow-gpu-1.15 from source with cuda 10.1 support. I also saw a random comment that tensorflow-gpu-1.15 will just-work with tf 1.15, but I am not wanting to make a miss-step installing things until I have a signal that is the direction to go. Uninstalling things isn't always straightforward.
Should I install CUDA 10.1 and cross my fingers 1.15 will like it.
Should I download the install for CUDA 10.0 for a the older Ubuntu version and see if it will install anyway
Should I attempt to compile tensorflow from source against CUDA 10.1 (heh heh heh)
Should I install and older version of Ubuntu and hope I don't go obsolete too quickly.
Given the situation is there a way to run tensorflow 1.15 with gpu support on Ubuntu 20.04.1?
As this also bothered me I found a working solution that I think is more versatile than using docker containers.
The main idea is from here (not to claim credit from others).
To make a working solution for Ubuntu 20.04 and TensorFlow 1.15 one needs:
Cuda 10.0 (to work with tf 1.15).
I have some trouble finding this version because it's not officially available for Ubuntu 20.04. I resolved to the Ubuntu 18.04 version though which works fine.
Archive toolkits here.
Final toolkit for Ubuntu here (as it's obvious not 20.04 version is available).
I chose runfile as method which resulted into 1 main runfile and 1 patch runfile being available:
cuda_10.0.130_410.48_linux.run
cuda_10.0.130.1_linux.run
The toolkit can be safely installed using the instructions provided with no risk since each version allocates a different folder in the system (typically this would be /usr/local/cuda-10.0/).
The corresponding cudnn for cuda 10.0
I had this one from a previous installation but its shouldn't be hard to download it also. The version I used is cudnn-10.0-linux-x64-v7.6.5.32.tgz.
Cudnn basically just copies files in the right places (do not actually install anything that is). So, an extraction of the compressed file and copy to the folder would suffice:
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64
$ sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*
Upto this point although installed the system is unaware of the presence of cuda 10.0. So, all call to it will fail as if non existent. We should update the relevant system environment for cuda 10.0. One way (there are others) system-wide is to create (in not existent) a /etc/profile.d/cuda.sh which will contain the update to the LD_LIBRARY_PATH variable. It should contain something like:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda-11.3/lib64:/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
This command would normally do the work:
$ sudo sh -c ‘echo export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda-11.3/lib64:/usr/local/cuda-10.0/lib64:\$LD_LIBRARY_PATH > /etc/profile.d/cuda.sh’
This requires a restart though to be evaluated I think. Anyway, this way the system will search for the relevant so files in:
a) /usr/local/cuda/lib64 (the default symbolic link) and it will fail
b) to the virtually same as the latter /usr/local/cuda-11.3/lib64 and also fail BUT it will search also
c) /usr/local/cuda-10.0/lib64 which will be successful.
The supported versions of python for cuda 10.0 ends with 3.7 so an older version should be installed. This means obligatory a virtual environment (since messing with system python is never not a good idea).
One can install python 3.7 for example using this repository which contains old (and new versions of python):
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get install python3.7
This just installs python3.7 to the system it does not make it default. The default is the previous one.
Create a virtual environment and add the desired python as the default interpreter. For me this works:
virtualenv -p python3.7 ~/tensorflow_1-15
which creates a new venv with Python 3.7 in it.
Now populate with all required modules and you are set to go.
I went ahead and went with the docker approach. The Tensorflow documentation seems to be pushing in that direction anyway. Using docker only the Nvidia driver needs to be installed. You do need to have nvidia support installed in docker for it to work.
This contains the CUDA environment with the Tensorflow version so I can work with 1.15 and with the latest 2.x versions of Tensorflow on the same computer which require different CUDA versions.
It doesn't install anything besides docker stuff to get messy on the computer and difficult to pull back out.
I can still install Tensorflow natively on the computer at some point in the future when the libraries become availabe without compiling from source.
Here is the command which launches jupyter and mounts the current directory from my computer to /tf/bob which shows up in jupyter.
docker run -it --mount type=bind,source="$(pwd)",target=/tf/bob -u $(id -u):$(id -g) -p 8888:8888 tensorflow/tensorflow:1.15.2-gpu-py3-jupyter

Android Studio 'tools.jar' file is not present in classpath

I downloaded the current version of Android Studio (latest as of 4th July 2013)
I also downloaded the JDK version 7u25.
However, it displays error after startup: Please ensure JAVA_HOME points to JDK rather than JRE.
I don't know how to solve this problem, which won't let me run the IDE. I would appreciate any help.
Check if java JDK is installed correctly
dpkg --list | grep -i jdk
if not install JDK
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get install oracle-jdk7-installer
After the installation you have enable the jdk
update-alternatives --display java
Check if Ubuntu uses Java JDK 7
java -version
If all went right the answer should be something like this:
java version “1.7.0_25″
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) Server VM (build 23.3-b01, mixed mode)
Check what compiler is used
javac -version
It should show something like this
javac 1.7.0_25
Add JAVA_HOME to environment variable
Edit /etc/environment and add JAVA_HOME=/usr/lib/jvm/java-7-oracle to the end of the file
sudo nano /etc/environment
Append to the end of the file
JAVA_HOME=/usr/lib/jvm/java-7-oracle
Log in and out (or reboot) for the changes to take effect.
If you want to remove oracle JDK
sudo apt-get remove oracle-jdk7-installer
read this:
http://arwankhoiruddin.blogspot.co.il/2014/01/android-studio-in-ubuntu-problem.html
in short:
type at the terminal
$ sudo update-alternatives --config java
now you need to choose
usr/lib/jvm/java-7-openjdk/jre/bin/java
by pressing #3
I have Ubuntu 14.04 and OpenJDK and for me a fresh install worked.
just did
sudo apt-get install openjdk-7-jdk
or,
sudo apt-get install --reinstall openjdk-7-jdk if it is already installed and giving error,
and everything was fine.
On ubuntu I have tried all the methods that are described here but none worked.
What I did in the end was to:
download JDK from oracle and extract the archive
edit android-studio/bin/studio.sh and add at the top
export JAVA_HOME=/path/to/jdk
save the file and cd android-studio/bin and launch Android Studio: ./studio.sh
On Fedora (and other RedHat derivatives, e.g. RHEL 7 and CentOS 7), it was the missing openjdk-devel package that was the issue for me. It's an easy fix and nothing to do with the JAVA_HOME path or the JRE.
sudo yum install java-1.7.0-openjdk-devel.x86_64
If you are using Windows, the installation can be confusing for many users...
The installer lets you specify an installation path, but this is only if you have the JRE option selected to install.
The actual JDK installs automatically to...
C:\Program Files\Java\jdkX.XX on 64-bit
C:\Program Files (x86)\Java\jdkX.XX on 32-bit
So you need to make sure you set the JAVA_HOME variable in environment variables set to this JDK path, not the JRE path that appears in the installer.
In windows Create new environment as STUDIO_JDK which refers to your jdk C:\Program Files\Java\jdk1.7.0
This answer may be very specific to a Windows 7 32 bit system:
Even after setting the JAVA_HOME variables, I had problems. After installing the JAVA again from the website, http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
BUT THIS TIME I TRIED "Windows x64 54 MB jdk-8u51-windows-x64-demos.zip" which seems to be for 64 bit even though my system is 32 bit and the ANDROID STUDIO started working for me. My environment settings are following (under System variables and not under user variables):
JAVA_HOME-C:\Program Files (x86)\Java\jre1.8.0_51
JDK_HOME-C:\Program Files (x86)\Java\jdk1.8.0_51
I had the same problem on Linux Mint 17.2 and it was very simple:
In the package manager I found that openjdk-7-jre was installed but not the JDK. All I had to do was to install openjdk-7-jdk.
As I'm new to Linux it took me some time to figure this out though because I assumed by the name of the path /usr/lib/jvm/java-7-openjdk-amd64 that it was already the JDK but it was just the JRE.
On Linux Mint 17 (or Ubuntu 14.04):
sudo apt-get install openjdk-7-jdk
Then change the JAVA_HOME env variable.
export JAVA_HOME=JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
Downloading the latest Android Studio resolve this issue / OSX /MAC

Install Mono on Centos 5.5 using YUM

How do I install the Mono 2.6.7 runtime on CentOS 5.5 using YUM?
I know how to build Mono from the source. However, according to the page Getting Started With Mono Tools it is possible to install the binaries directly. I'd prefer to install the binaries to avoid having to install all the development pre-requisites on a server with little disk space.
Am I supposed to add a new repository description to YUM? I tried doing that, but I must have done it wrong, because "yum list mono-core" still says the old version (1.2.4-2.el5.centos).
And, why are the .rpm's called "mono-addon-" on the release server? It's a bit confusing. It sounds like the .rpm's are an add-on to Mono. I guess they mean they are an "add-on" to the server(?).
I figured it out.
Create a new repository configuration file
cd /etc/yum.repos.d
vi mono.repo
Add the following lines to the file
[Mono]
name=Mono Stack (RHEL_5)
type=rpm-md
baseurl=http://ftp.novell.com/pub/mono/download-stable/RHEL_5/
gpgcheck=1
gpgkey=http://ftp.novell.com/pub/mono/download-stable/RHEL_5/repodata/repomd.xml.key
enabled=1
Update the YUM cache to be on the safe side
yum clean all
Install the Mono server stack
yum install monotools-addon-server
The installed binaries will end up in "/opt/novell/mono/bin".
You should issue the following command to set up your shell environment so that it finds Mono, mcs and the other Mono tools
source /opt/novell/mono/bin/mono-addon-environment.sh
Verify the version
mono --version
Mono JIT compiler version 2.6.7 (tarball Mon Jul 19 18:28:58 UTC 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
GC: Included Boehm (with typed GC and Parallel Mark)
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
If you want the Mono environment to be permanent you can issue the following command.
cp /opt/novell/mono/bin/mono-addon-environment.sh /etc/profile.d
Happy Mono'ing!!!
In addition to octonion's post, if, like me, you want to use Apache mod_mono, you need to ensure you install the correct version of mod_mono by running the following, and it will get the right one:
yum install mod_mono-addon
Don't just issue yum install mod_mono. It may install mod_mono 1.2 version from the CentOS extras repository and not what you're actually after.
As a reference, I was getting the following error in /var/log/httpd/error_log when running the incorrect mod_mono version:
Root directory: /
mod_mono and xsp have different versions. Expected '9', got 6
System.InvalidOperationException: mod_mono and xsp have different versions. Expected '9', got 6
It is a silly, but easy mistake to make if you new to this like me.