Dell Precision 5820 Tower Notes

Notes for running Fedora 29 on the Dell Precision 5820 Tower workstation. The particular model has Intel Xeon W-2155, ie 10 cores at 3.3-4.5 GHz, 32GB RAM, 500GB NVMe drive, Nvidia P400 graphics cards with mDP outs.

BIOS Settings

Linux needs certain BIOS settings flipped:

  • Secure Boot Disabled
  • System Config -> SATA to AHCI (RAID might work but untested)
  • Misc Devices -> Enable SD Card, SD Card boot
  • Boot Sequence -> UEFI, UEFI boot path security off

Install

Used the netinstall ISO image written to a SD card, and then booted the computer off this device (Hold down the function 12 key at startup to get a boot menu.)

There is no getting around the video oddness when installing. Embrace the suck. This is the only tricky part of installing on this hardware (well, the SSD drive can be a bit problematic if not using a very current Fedora version, so don’t do that).

What worked:

Add

inst.text

to the linux boot line, which boots you into text mode (aka init 3). Then,
start the network and install the Nvidia drivers from RPMFusion.

ifup en01;
dnf install -y kmod-nvidia

This should add the nouveau modules to the blacklist on future boots, but to make sure this is how to do it on the linux boot line:

rd.driver.blacklist=nouveau modprobe.blacklist=nouveau

 

Dual Boot, Windows VM, etc.

Let’s be able to run windows 10, either via virtualization or natively.

To extract the windows key from the machine when using linux, try:

sudo cat /sys/firmware/acpi/tables/MSDM | tail -c 32 | xargs -0 echo

Then use that key to install windows 10 from the ISO, or use it in an existing KVM image.

To install natively, shrink your windows install away to a mere sliver so that most space can be used by a linux install via…

Just right click on “My Computer”, choose “Manage”, and you will get a popup window, choose “Disk Management” in the left navigation bar. And then, your hard disk condition will show as follow. Then you need to right click on the partition which you want to shrink, and choose “Shrink Volume”.

ARP Database Notes

Software configuration for commodity x86/86_64 linux art research platform.

Prerequisites

Assume Fedora 27. See base document for full software stack.

Database Setup 1: server mysql

Both the wiki and wordpress require a database. So, pick the MySQL database, which is packaged as mariadb on Fedora. Project page for MariaDB.

dnf install -y mariadb mariadb-server php-mysqlnd phpMyAdmin

Secure it (and set the root password on the database) with

mysql_secure_installation

And enable and start it via

systemctl enable mariadb.service
systemctl start mariadb.service

To use the web-ui to administer, go to

http://localhost/phpmyadmin/

Configuration file is: /etc/my.cnf
Log file is:/var/log/mariadb/mariadb.log
The site files are in prefix:/var/lib/mysql

Database Setup 2: per-user postgressql

For non-platform use, aka for individual users, pick the glom front-end for the postgres database. Some platform notes are here.

dnf install -y postgresql postgresql-server postgresql-libs postgresql-contrib phpPgAdmin

Initialize the database

postgresql-setup --initdb --unit postgresql

Then enable and start

systemctl enable postgresql
systemctl start postgresql

To use the web-ui to administer, go to

http://localhost:8080/phppgadmin

There is a graphical database called glom that is similar to FileMakerPro on the mac and Access on windows.

dnf install -y glom

IPFS Configuration and Optimization Notes

See background information and other details see IPFS Background.

IPFS Background

Background

Some info:
Stanford Seminar, IPFS and the Permanent Web, October 22, 2015.

Main problem points with current web: offline, distributed, permanence, security, speed, lack of richer communication protocols.

Merkle Web, Merkle Tree, Merkle Links: protocol to upgrade how the web works. Related to git’s merkledag. Instead of using a centralized address to locate, use a combination of data x hash function as the address, that way it can be shared.

A quick summary:

Taking a higher-level approach to network design, like Paul Baran and some of the earliest categorization of networks, as featured in 1964’s On Distributed Communications. See network designs for centralized, distributed, peer, isolated, etc.

There is also no ‘presence linking’ in the status quo, meaning that there isn’t a notion for a peer to announce itself in several transports, so that other peers can guarantee that it is always the same peer.

This is especially problematic when sharing media. Any file, any media: when shared on a centralized network, the total amount of data required to share is the size of the original media times multiplied by the number of shares (modulo caching, if be). Ten or 20x multiples are common.

The solution is a distributed web with content uniquely identified, so it can be properly served by multiple peers in a resilient manner. In addition, this works for disconnected, offline, and slow networks.

Instead, social platforms are throwing tons of capital to build walled gardens on centralized networks. Apps continue to dominate the mobile web.

Some hype:
TEDxSanFrancisco, The Next Internet Revolution, December, 2016.

There is documentation for the distributed web as a free gitbook, The Decentralized Web Primer.

Sources, Protocol Specifications

InterPlanetary File System wikipedia.

The IPFS Project, a hypermedia transport protocol project. Based on a network stack encoded in libp2p. See specs documentation here. The naming system is IPNS.

Online community is found here.

Part of Protocol Labs

Questions
what about other peer to peer networking libraries, namely libtorrent? libp2p design compare?

language bindings for libp2p are javascript, go, rust, python. What else is in development?

See Also

Dtube

Artistic Research Platform Notes

Software configuration for commodity x86/86_64 linux art research platform.

Prerequisites

Assume Fedora 27.

Background

The wide variety of web and print platforms for contemporary artistic research can be found at the survey.

Components

  1. Database
  2. Webserver
  3. Content Management System
  4. Wiki
  5. Etherpad
  6. IPFS

TensorFlow Configuration and Optimization Notes

Notes for installing TensorFlow on linux, with GPU enabled.

Background

TensorFlow is the second-generation ML framework from Google. (See this comparison of deep learning software.) The current state-of-the art image recognition models (inception-v3) use this framework.

Prequisites

Assuming Fedora 24 with Nvidia 1060 installed, running nvidia as opposed to nouveau drivers. See Fedora 24 Notes, and RPM Fusion’s installation page for installing the Nvidia drivers. In sum,

dnf install -y xorg-x11-drv-nvidia akmod-nvidia "kernel-devel-uname-r == $(uname -r)"
dnf install xorg-x11-drv-nvidia-cuda
dnf install vulkan

After, install some devel packages.

dnf install -y vulkan-devel

Download the Nvidia GPU CUDA Toolkit. The version used for this install is 8.0.61, and the network install for Fedora x86_64 was used.

This version of CUDA Toolkit is not C++11/C++14/C++17 aware. So, be aware! One way around this is to mod like below, and use -std=gnu++98.

117c117,118
 5
---
> /* bkoz use -std=c++98 if necessary */
> #if __GNUC__ > 6

Next, compile top-of-tree OpenCV (aka 3.2) with CUDA enabled. To do so, use the following configure list, mod for paths on system:

cmake -DVERBOSE=1 -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -std=gnu++98 -Wno-deprecated-gpu-targets" -D BUILD_EXAMPLES=1 -D BUILD_DOCS=1 -D WITH_OPENNI=1 -D WITH_CUDA=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_FFMPEG=1 -D WITH_EIGEN=1 -D ENABLE_FAST_MATH=1 -D ENABLE_SSE3=1 -D ENABLE_AVX=1 -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_PRECOMPILED_HEADERS=OFF  -D CMAKE_INSTALL_PREFIX=/home/bkoz/bin/H-opencv -D OPENCV_EXTRA_MODULES_PATH=/home/bkoz/src/opencv_contrib.git/modules /home/bkoz/src/opencv.git/

Admittedly, this abuse of CMAKE_CXX_FLAGS is not optimal. Maybe EXTRA_CXX_FLAGS?

Now, for Nvidia cuDNN. The version used for this install is 5.1

When that is done, use pip to install TensorFlow.

sudo pip install --upgrade pip;
sudo pip install tensorflow-gpu

This should output something like:

Collecting tensorflow-gpu
  Downloading tensorflow_gpu-0.12.1-cp27-cp27mu-manylinux1_x86_64.whl (89.7MB)
    100% |████████████████████████████████| 89.7MB 19kB/s 
Requirement already satisfied: mock>=2.0.0 in /usr/lib/python2.7/site-packages (from tensorflow-gpu)
Requirement already satisfied: six>=1.10.0 in /usr/lib/python2.7/site-packages (from tensorflow-gpu)
Requirement already satisfied: numpy>=1.11.0 in /usr/lib64/python2.7/site-packages (from tensorflow-gpu)
Collecting protobuf>=3.1.0 (from tensorflow-gpu)
  Downloading protobuf-3.2.0-cp27-cp27mu-manylinux1_x86_64.whl (5.6MB)
    100% |████████████████████████████████| 5.6MB 284kB/s 
Collecting wheel (from tensorflow-gpu)
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
    100% |████████████████████████████████| 71kB 3.3MB/s 
Requirement already satisfied: pbr>=0.11 in /usr/lib/python2.7/site-packages (from mock>=2.0.0->tensorflow-gpu)
Requirement already satisfied: funcsigs>=1 in /usr/lib/python2.7/site-packages (from mock>=2.0.0->tensorflow-gpu)
Requirement already satisfied: setuptools in /usr/lib/python2.7/site-packages (from protobuf>=3.1.0->tensorflow-gpu)
Installing collected packages: protobuf, wheel, tensorflow-gpu
Successfully installed protobuf-3.2.0 tensorflow-gpu-0.12.1 wheel-0.29.0

After this has completed, add in Keras.

Optimization

For Nvidia GPUs, take a look at this interesting post from Netflix. In sum, add

NVreg_CheckPCIConfigSpace=0

Fedora 25 Nvidia Notes

Step one: install Fedora 25.

Step two: turn off Wayland as the default. This is pretty simple, ie change /etc/gdm/custom.conf

WaylandEnable=false

When the GUI is started again, the following (assuming the current session is 2)

loginctl show-session 2 -p Type

Shows:

Type=x11

Then look at the RPM Fusion page for Nvidia.

Step three: Nvidia drivers are not working on Fedora 25. Instead, revert to Fedora 24 and proceed as above.