Highly extensible software like Emacs, Vim, and Neovim tend to grow their own package managers. A software developer, for example, might want to install editor plugins that hook into a particular programming language's linter or language server. The programmer's text editor is therefore extended to support managing additional software to extend the text editor. If this loop continues for too long, the programmer's editor becomes more delicate and complex. The remedy for this problem is to manage software using dedicated tools apart
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using MPI | |
using CUDA | |
MPI.Init() | |
comm = MPI.COMM_WORLD | |
rank = MPI.Comm_rank(comm) | |
size = MPI.Comm_size(comm) | |
dst = mod(rank+1, size) | |
src = mod(rank-1, size) | |
println("rank=$rank, size=$size, dst=$dst, src=$src") | |
N = 4 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using MPI | |
using CUDA | |
MPI.Init() | |
comm = MPI.COMM_WORLD | |
rank = MPI.Comm_rank(comm) | |
# select device | |
comm_l = MPI.Comm_split_type(comm, MPI.COMM_TYPE_SHARED, rank) | |
rank_l = MPI.Comm_rank(comm_l) | |
gpu_id = CUDA.device!(rank_l) | |
# select device |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using MPI | |
using AMDGPU | |
MPI.Init() | |
comm = MPI.COMM_WORLD | |
rank = MPI.Comm_rank(comm) | |
# select device | |
comm_l = MPI.Comm_split_type(comm, MPI.COMM_TYPE_SHARED, rank) | |
rank_l = MPI.Comm_rank(comm_l) | |
device = AMDGPU.device_id!(rank_l+1) | |
gpu_id = AMDGPU.device_id(AMDGPU.device()) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using MPI | |
using AMDGPU | |
MPI.Init() | |
comm = MPI.COMM_WORLD | |
rank = MPI.Comm_rank(comm) | |
size = MPI.Comm_size(comm) | |
dst = mod(rank+1, size) | |
src = mod(rank-1, size) | |
println("rank=$rank, size=$size, dst=$dst, src=$src") | |
N = 4 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# cqlsh_intro.cql | |
# | |
# Copyright (C) 2017 Jeff Carpenter | |
# Execute the commands in this file for a short guided tour of the CQL Shell (cqlsh) | |
# | |
# For more description, see Cassandra, The Definitive Guide 2nd Ed., Chapter 3: Installing | |
# http://shop.oreilly.com/product/0636920043041.do | |
# |
This guide provides instructions for an Arch Linux installation featuring full-disk encryption via LVM on LUKS and an encrypted boot partition (GRUB) for UEFI systems.
Following the main installation are further instructions to harden against Evil Maid attacks via UEFI Secure Boot custom key enrollment and self-signed kernel and bootloader.
You will find most of this information pulled from the Arch Wiki and other resources linked thereof.
Note: The system was installed on an NVMe SSD, substitute /dev/nvme0nX
with /dev/sdX
or your device as needed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## SUMMARY ## | |
# Let `a` be the nested array and `aref` the multidim array we want to recreate: | |
julia> flatten(x::Array{<:Array,1})= Iterators.flatten(x)|> collect|> flatten | |
flatten (generic function with 1 method) | |
julia> flatten(x::Array{<:Number,1})= x | |
flatten (generic function with 2 methods) | |
julia> reshape(flatten(a), (4,4,3)) == aref |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# OBJECTIVE: Install Arch Linux with encrypted root and swap filesystems with an ENCRYPTED BOOT and boot from UEFI. We will | |
also decrypt and mount our entire encrypted system using a single LUKS passphrase entry. | |
# Note: This method supports both dedicated Arch installs and those who wish to install Arch on a multi-OS-UEFI booting system. | |
# External USB HDD/SSD Installers Notes: Encrypted Arch installs can be booted and run from an external USB HDD or SSD, but | |
# only when the installation is correctly set up. There are several necessary changes to my standard procedure you'll want | |
# to make during the install process. Read my External USB HDD/SSD Installation section below before proceeding. |
NewerOlder