In the "thesis reboot" post, I brought back from the dead the dusty implementation of my master thesis. Seeing that it was still (almost) working, a week off work was planned to prepare its adaptation to the almighty OpenCL. This post summarizes what this week was all about.
Everything starts with this article: Getting Started with Debugging with Intel® Parallel Studio XE 2016[1]. unfortunately, the article is quite old now ("Last updated on August 25, 2015") and not really up-to-date anymore.
A multi-core CPU or multiple CPUs (in a multi-socket machine) constitute a single OpenCL device. Separate cores are compute units.
Work-group [is a ] a collection of related work-items that execute on …
Playing with Intel OpenCL SDK and Etherneum mining
About the hardware
The Intel 6th-generation Core i7-6770HQ [1] is a neat little beast. Here are lspci[LSPCI], cpuinfo[CPUINFO], and clinfo[CLINFO] from an Intel NUC6i7KYK with Ubuntu server 16.04.
The long silicon die on the left is the 4-core CPU and the 72-execution-unit GPU. The smaller silicon die on the right is the 128MB eDRAM [3] L4 cache shared by …
Just discovered that Intel provides a special version of GDB for debugging OpenCL kernels on their GPU [1]. What a great move!
Knowing Intel, I was already imagining that they would have a fully proprietary solution like the Intel debugger[2]. Fortunately, they deprecated it in 2013 in …
How many OpenCL compute unit has an Intel integrated graphic processor?akaHow many divergent threads can be run in parallel?
On the quest to finding the OpenCL-compatible device having the largest amount of compute units (CU), it seems that around 30 CU, latest nVIDIA achitectures tend to feature a …
Convert a Super Nintendo gamepad to an USB keyboard.
Ever wondered if you could type using a gamepad? On one side, a standard keyboard with its 100+ keys gives you direct access to most characters, but is not very confortable to use since you have to move your hands. On …
FROM debian:jessie-slim
RUN apt-get update && \
apt-get install -y firefox-esr && \
apt-get clean
RUN groupadd --gid 1000 user && \
useradd --uid 1000 --gid 1000 --create-home user
USER user
CMD /usr/bin/firefox-esr
Is it possible to use a JIRA server on a Scaleway C1 instance (bare metal ARM)?It is!
Introduction
Did you know that you can buy an official license for a stand-alone JIRA server for only 10$? Even better, Atlasian actually donates the money to charity. Of course, this license …
How to record your screen into an animated gif with precise position and size?
I would like to create an animated gif with a size of 800x600px. The canva should contain a web browser in the top half, and a command-line terminal in the bottom half.
Official presentation of the "Intel JTAG debugger" is [1].
The standard Intel debug port is the 60-pin XDP (eXtended Debug Port). It extends JTAG with additional signals. This port also has a lower pin count variant: the 31-pin XDP-SSA (Second Side Attach …
I don't want a fully fledged Eclipse project or depend on heavy Eclipse for anything.~
I don't know if you have the same feeling, but it doesn't look like a good idea to depend on one heavy tool for anything in your electronic project. Having easy-to-understand scripts for building or …
Buying a cheap analog multimeter at Conrad [1]... and having to repair it right out of the box!
The discret wire connecting the battery to the voltmeter line was broken. Fortunately, this analog multimeter is so simple that you can reverse engineer it easily and find the issue.
Simple example code to read the serial port under GNU/Linux
This code is expected to do something similar to
cat /dev/ttyUSB0
/* Reading from serial line * written by vjp * on 2015.03.12 */#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<sys …
The FLRe automated test environment is meant to verify the validity of the FPGA dynamic reconfiguration code for all CLB (configurable logic block) of the Spartan-6 LX9 silicon die.
The FLRe client is compiled on the Raspberry Pi and sends requests over UART to the demo board, which processes the …
All the footprints are ready. The boot mode (BOOT0 and BOOT1) will be set via a SMD DIP switch. The different power supplies will be accessible throught 1.27mm-pitch THT pin headers.
Board layout
Now finally starts the fun of tidying everything of the board.
Above: the STM32F40x in its LQFP64 package cannot be used because it lacks FSMC support (unbound silicium pads, see [1] rev.4 p. 59). The LQFP144 poackage has full FSMC support, while the LGFP100 package has limited support: data lines only, and no address lines. Since the address lines will …
Above: Custom footprint for the SelectMAP 20-bit bus interface between the microcontroller board and the FPGA board. The bus is insipired from the configuration architecture as found in [UG380] (v.2.5, p.146). The 16 first pads are the 16-bit parallel data bus, and the 4 last pads are …
The PCB matches the size of the metal cover of the enclosure with a surprising accuracy, and the result looks quite professional.
About the PCB itself, most of the footprints are homemade, and one notices immediatly …
Because of the required update of the glibc[1], I had to reboot the Raspberry Pi running this webserver. Just before it restarted for the first time, I quickly got the uptime of the server:
I decided to go for a stacked two-PCB design with a front panel also made as a PCB. The Hammond 1455 enclosure is available in 80x50x20mm (approx.) dimensions. If no large components are used on one side of each PCB, two PCBs …
KiCAD does not support length matching, but there is to achieve some manual length matching using FreeRouting[1]. Unfortunately, FreeRouting has little documentation outside of the official manual [2].The idea comes from this blog post at Numato Labs [3]. Designing a Spartan-6 FPGA board with SDRAM, they needed to …
The FLRe project restarts... with my first coffee machine ever!
Plan for the next steps: build an automated test system, so as to validate the FLRe source code for each LUT in the Spartan-6 LX9 FPGA. The test system will be supervised by a Raspberry Pi:
Someone: "Oh! You must be good in mathematics then!"
No! There is no need of mathematics to design a computer. Maybe this misconception comes from the English word computer itself, which is based on compute meaning calculate …
#include<stdint.h>/* Base address of Device1 */#define DEVICE1 0x01234567structMemoryMap{uint32_tReg1;uint32_tReg2;};template<uint32_tBASE_PTR>classMyDriver{public:staticuint32_tMyMethod(){return((structMemoryMap*)BASE_PTR)->Reg1;}};intmain(intargc,char*argv[]){uint32_treg=MyDriver<DEVICE1>::MyMethod();return0;}