https://wiki.kip.uni-heidelberg.de/KIPwiki/api.php?action=feedcontributions&user=Sschmitt&feedformat=atomKIP Wiki - User contributions [en]2024-03-28T19:08:03ZUser contributionsMediaWiki 1.39.4https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=38120Visions:NoobiesTutorial2020-11-30T07:32:14Z<p>Sschmitt: /* Meetings, sorted by time */</p>
<hr />
<div>=Abbreviated Names=<br />
AB: Andreas Baumbach<br />
AE: Arne Emmel<br />
AFK: Ákos Kungl<br />
AG: Andreas Grübl<br />
AL: Aron Leibfried<br />
BC: Benjamin Cramer<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
CVR: Carl Von Randow<br />
DD: Dominik Dold<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FE: Falk Ebert<br />
FK: Felicitas Kleveta<br />
FP: Felix Passenberg<br />
HS: Hartmut Schmidt<br />
JG: Julian Goeltz<br />
JI: Joscha Ilmberger<br />
JM: José Montes<br />
JK: Jakob Kaiser<br />
JS: Johannes Schemmel<br />
JW: Johannes Weis<br />
KS: Korbinian Schreiber<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
OMA: Oscar Martín-Almendral<br />
OJB: Oliver Breitwieser<br />
PSP: Philipp Spilger<br />
SB: Sebastian Billaudelle<br />
StB: Stefan Becker<br />
SK: Simeon Kanya<br />
SS: Sebastian Schmitt<br />
TT: Tobias Thommes<br />
VK: Vitali Karasenko<br />
YS: Yannik Stradmann<br />
QS: Quirinus Schwarzenboeck<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| BMBF Wettbewerb – Morgenrunde<br />
| Short daily status report of direct participants in the BMBF competition for low-energy inference.<br />
| ENI, zoom "EXA"<br />
| Daily (besides Thursdays) at 11:30<br />
| YS (backup: JI)<br />
|-<br />
|-<br />
| BrainScaleS-1 Users Meeting<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI, zoom 1<br />
| Weekly, Monday at 10:30<br />
| MG (backup: ECM or CM)<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered. [https://chat.bioai.eu/visions/channels/wsi-hardies #MeetingLog].<br />
| ENI, zoom 1?<br />
| Weekly, Monday after Hardware Users Meeting (if necessary)<br />
| AG<br />
|-<br />
| BrainScaleS-2 Hardware Meeting<br />
| Chip design meeting. Logs and agenda can be found [https://openproject.bioai.eu/projects/symap2ic/meetings here].<br />
| ENI, zoom 1<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| Software Meeting 😍 ❤<br />
| The Softies meet ☕ and talk 🚀. Logs and agenda can be found [https://openproject.bioai.eu/projects/symap2ic/meetings here].<br />
| ENI, zoom 1<br />
| Weekly, Tuesday at 14:30<br />
| ECM (backup: OJB, CM, SS)<br />
|-<br />
| BrainScaleS-2 Users Meeting<br />
| Next-generation hardware systems users talk about progress and problems.<br />
| ENI, zoom 1<br />
| Weekly, Wednesday at 10:00<br />
| CM (backup: ECM)<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/model/wiki#TMA-Meetings here].<br />
| ENI, dfn?<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI, zoom 1<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
|-<br />
| FPGA Development Meeting<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI, zoom 1<br />
| Weekly, Thursday at 13:15<br />
| AG (backup: ECM).<br />
|-<br />
| <s>[https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]</s><br />
| <s>Stay up-to-date with scientific literature (one featured publication + spot lights) [https://chat.bioai.eu/visions/channels/journal-club channel].</s><br />
| <s>ENI</s><br />
| <s>Weekly, Friday at 11:00</s><br />
| <s>DD, KS</s><br />
|-<br />
|}<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
== Login ==<br />
<br />
=== KIP ===<br />
<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* students should '''not''' use their URZ account name but rather a readable abbreviation of their real name, e.g. <code>emueller</code><br />
* state that the student should be added to f9 mailing list (IT) ... (it is an *alias* mailing list for kip_vision)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
You will have to collect all signatures and give your 50€ key deposit to Mrs. Hafranke or Mrs. Potthoff. Suggested waypoints:<br />
* 1st floor: Signature of JS and FK<br />
* Ground floor: deposit for key in room 00.304<br />
* 2nd floor: Signature of H. Jacobsen or alternatively E. Schmetzer<br />
* 3rd floor: First go to EDV (they will cut off the lower part of the form) then go to P. Doust to ask for a key (he will keep the upper part of the form)<br />
<br />
=== Vision(s) ===<br />
<br />
* inform cluster commissioner, i.e. CM, ECM, they will create wang home and slurm user<br />
* Sign form to allow open sourcing of contributions.<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
== OpenProject Gitolite Repository Permissions ==<br />
<br />
When your login works, please create ssh keys '''as indicated in [https://openproject.bioai.eu/projects/symap2ic/wiki/Symap2icGitvizHowto]''' and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/JS, the gitviz administrators.<br />
<br />
=Workplace=<br />
<br />
==Who should I call for help? (FAQ) ==<br />
* '''The power is not working/toilet is overflowing/...''' → 54-5111 Störungsstelle („Alles was zur Grundversorgung gehört: Strom/Gas/Wasser“; „der Hausmeister würde ohnehin nur dort anrufen“)<br />
* Office doors don't open (e.g. empty lock battery), and other "Haustechnik" stuff ⇒ haustechnik@kip.uni-heidelberg.de<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask StB.<br />
Bugs and requests should be posted [https://openproject.bioai.eu/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://openproject.bioai.eu/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
The list of visionary desktop computers can be found here [[Visions_Privat:ComputerUsage]].<br />
Available unused machines can be found in this list.<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://chat.bioai.eu/visions (externally reachable).<br />
<br />
=Computing=<br />
<br />
==Know your Tools==<br />
<br />
<blockquote><br />
Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there’s one critical subject that’s rarely covered, and is instead left to students to figure out on their own: proficiency with their tools. We’ll teach you how to master the command-line, use a powerful text editor, use fancy features of version control systems, and much more!<br />
</blockquote><br />
https://missing.csail.mit.edu/<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both are managed by ECM and CM.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* hel<br />
and you can access them via (example for hel, but works with any other name too)<br />
<code> ssh -X hel </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 11022: hel<br />
* 12022: comicsans (only a selection of users has access, "currently heavy WIP")<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
If the mosh port (e.g. 61022) is already being used by someone else, try the next one (or something in the range of [50000 + X, 50000 + 1000 + X)).<br />
mosh does not work from within eduroam.<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
Short overview is given here. A more detailed intro can be found at [https://openproject.bioai.eu/projects/symap2ic/wiki/slurmviz]!<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 2 CPUs (1 hyperthreaded core) and 1/4 of nodes RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 2 CPUs, 16GB RAM):<br />
<br />
srun -p compile -c 2 --mem 16G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Each Slurm partition has a defined default and max time. You can look it up with<br />
<br />
scontrol show partition [partitionname]<br />
<br />
If your job runs longer than the default time it will be killed automatically by Slurm unless you give <br />
<br />
--time hh:mm:ss<br />
<br />
so your srun/sbatch command. You can not enforce times longer than the max time of this partition.<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://openproject.bioai.eu/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. / M.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
== Thesis Publication ==<br />
<br />
* It is strongly suggested to upload your Thesis to the KIP publications archive https://www.kip.uni-heidelberg.de/Veroeffentlichungen/new.php<br />
<br />
== Results Guidelines ==<br />
<br />
* https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/visionarythesisguidelines<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://openproject.bioai.eu/projects/vacation/work_packages/calendar our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
Username: KIP\$your_accountname<br />
<br />
(From the outside you can perform a port-forwarding via <code>ssh -L 3389:kipwin.kip.uni-heidelberg.de:3389 hel</code> (if <code>hel</code> is in your ssh config) and run <code>rdesktop localhost</code>.)<br />
<br />
== Orders ==<br />
<br />
* above 500€ => multiple offers (print out from some comparison website) needed<br />
* up to 2.5k€ => get three different offers (ask three shops for offers)<br />
** e.g. write to first three cheapest shops listed on some comparison websites<br />
** KIP "Kundennummer"s:<br />
*** Mindfactory: 10970071<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| SSD<br />
| —<br />
| —<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| —<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| —<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>/fasthome</code><br />
| NVM<br />
| —<br />
| —<br />
| <br />
| <br />
| Software projects (lots of compiling)<br />
|}<br />
<br />
= Software Environment =<br />
<br />
We apply container technology to improve reproducibility. Continuously built container images are deployed to ''/containers'' (e.g. ''/containers/stable/latest'').<br />
<br />
<br />
= Software Development =<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* [https://www.sbf5.com/~cduan/technical/git/ Understanding Git Conceptually] Highly recommended as additional reading because it focuses on the concepts behind ''git''<br />
* TODO add one or two more?<br />
<br />
The F9 gitolite server is hosted on our OpenProject server: https://openproject.bioai.eu<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
== Code Review (Gerrit) ==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://gerrit.bioai.eu F9's Gerrit Server] and a small tutorial can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
== Continuous Integration (Jenkins) ==<br />
We encourage continuous and automatic testing, see [https://jenkins.bioai.eu F9's Jenkins Server].<br />
Contact YS (or ECM) for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
== Bug Reports and Project Management (OpenProject) ==<br />
<br />
Bugs should be posted immediately in the OpenProject project associated with the module that produced the error. The title should be descriptive. As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://openproject.bioai.eu F9's OpenProject Server]<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://openproject.bioai.eu/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
* Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs (-c8) or 20GB RAM (--mem=20G). We use singularity container to manage external dependencies, see [https://openproject.bioai.eu/projects/symap2ic/wiki/container Singularity]<br />
<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=*<br />
<br />
*Set environment variable e.g. LD_LIBRARY_PATH or PATH to the compiled software<br />
<br />
> module load localdir<br />
<br />
*In order to pull and install the complete software stack such that the BrainScaleS [https://electronicvisions.github.io/hbp-sp9-guidebook/ Guidebook] examples are executable follow (assuming that we build on the cluster)<br />
<br />
> module load waf<br />
> waf setup --project=pyhmf --repo-db-url=https://github.com/electronicvisions/projects.git<br />
> singularity exec --app visionary-wafer /containers/stable/latest waf configure<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=* <br />
> module load localdir # load the compiled software stack<br />
<br />
*After installation changesets can be reviewed and uploaded to the Gerrit server.<br />
<br />
== Style ==<br />
<br />
We have style guides for C++ and Python. [[https://openproject.bioai.eu/projects/symap2ic/wiki/CodeStyleGuide]]<br />
<br />
To format your code properly, run git-clang-format and inspect/add the resulting changes before committing.<br />
To apply clang format on the current commit<br />
<br />
> singularity exec --app visionary-defaults /containers/stable/latest git-clang-format HEAD^<br />
<br />
There is also a convenient vim plugin<br />
[[https://github.com/rhysd/vim-clang-format]]<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://openproject.bioai.eu/projects/waf/wiki/Wiki<br />
<br />
== Common ==<br />
<br />
=== PyNN ===<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you).<br />
<br />
=== PyHMF ===<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM<br />
<br />
=== halco ===<br />
Hardware coordinate system for all modern (BSS-1 and later) systems.<br />
Maintainers: ECM, CM<br />
<br />
=== HostARQ ===<br />
The communication protocol stack for communication between the BrainScaleS-1/2 hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM, JI<br />
<br />
<br />
== Spikey ==<br />
<br />
=== PyNN.hardware/PyHAL ===<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
=== SpikeyHAL ===<br />
Spikey hardware access layer.<br />
Maintainers: AG or ECM<br />
<br />
<br />
== BrainScaleS-1 ==<br />
<br />
=== Cake ===<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS<br />
<br />
=== Euter/Ester ===<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM<br />
<br />
=== Marocco ===<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
=== StHALbe, hicann-system ===<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CM, SS<br />
<br />
=== ESS ===<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OJB, SS<br />
<br />
<br />
== BrainScaleS-2 ==<br />
<br />
=== hxcomm ===<br />
Communication interface between HICANN-X and Host computer (via HostARQ)<br />
Maintainers: PSP, ECM<br />
<br />
=== fisch ===<br />
FPGA Instruction Set Compiler (adapter between a "pretty" FPGA interface and the real world)<br />
Maintainers: PSP, ECM<br />
<br />
=== haldls ===<br />
Hardware Abstraction Layer for BrainScaleS-2 systems.<br />
Maintainers: PSP, ECM, CM<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [Tutorial[https://gerrit.bioai.eu/gitweb?p=model-nmsampling-sbs.git;a=blob;f=example/tutorial.py;h=4de680a72298c60d8eb46a6865853481965ce772;hb=HEAD]] (requires access to gitweb) Maintainer: OJB<br />
<br />
= Documentation =<br />
<br />
Central starting points for documentation besides this page are<br />
<br />
* [https://openproject.bioai.eu/projects/hbp-sp9-specification--d9-7-1 SP9 specification for BrainScaleS-1]<br />
* [https://openproject.bioai.eu/projects/symap2ic/wiki symap2ic Wiki]<br />
* [http://www.kip.uni-heidelberg.de/vision/publications/ Publications], especially BSc, MSc, PhD theses</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=37426Visions:NoobiesTutorial2020-02-04T08:04:41Z<p>Sschmitt: /* Computing */</p>
<hr />
<div>=Abbreviated Names=<br />
AB: Andreas Baumbach<br />
AFK: Ákos Kungl<br />
AG: Andreas Grübl<br />
AL: Aron Leibfried<br />
BC: Benjamin Cramer<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DD: Dominik Dold<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
FP: Felix Passenberg<br />
HS: Hartmut Schmidt<br />
JG: Julian Goeltz<br />
JI: Joscha Ilmberger<br />
JM: José Montes<br />
JK: Jakob Kaiser<br />
JS: Johannes Schemmel<br />
JW: Johannes Weis<br />
KS: Korbinian Schreiber<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
OMA: Oscar Martín-Almendral<br />
OJB: Oliver Breitwieser<br />
PSP: Philipp Spilger<br />
SB: Sebastian Billaudelle<br />
StB: Stefan Becker<br />
SK: Simeon Kanya<br />
SS: Sebastian Schmitt<br />
TT: Tobias Thommes<br />
VK: Vitali Karasenko<br />
YS: Yannik Stradmann<br />
QS: Quirinus Schwarzenboeck<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| BMBF Wettbewerb – Morgenrunde<br />
| Short daily status report of direct participants in the BMBF competition for low-energy inference.<br />
| ENI<br />
| Daily at 11:30<br />
| YS (backup: JI)<br />
|-<br />
|-<br />
| BrainScaleS-1 Users Meeting<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: ECM or CM)<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered. [https://chat.bioai.eu/visions/channels/wsi-hardies #MeetingLog].<br />
| ENI<br />
| Weekly, Monday after Hardware Users Meeting (if necessary)<br />
| AG<br />
|-<br />
| BrainScaleS-2 Hardware Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| Software Meeting 😍 ❤<br />
| The Softies meet ☕ and talk 🚀. Logs and agenda can be found [https://openproject.bioai.eu/projects/symap2ic/meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM (backup: OJB, CM, SS)<br />
|-<br />
| BrainScaleS-2 Users Meeting<br />
| Next-generation hardware systems users talk about progress and problems.<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM (backup: ECM)<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
|-<br />
| FPGA Development Meeting<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Thursday at 13:00<br />
| AG (backup: ECM).<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights) [https://chat.bioai.eu/visions/channels/journal-club channel].<br />
| ENI<br />
| Weekly, Friday at 11:00<br />
| DD, KS<br />
|-<br />
|}<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
== Login ==<br />
<br />
=== KIP ===<br />
<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* students should '''not''' use their URZ account name but rather a readable abbreviation of their real name, e.g. <code>emueller</code><br />
* state that the student should be added to f9 mailing list (IT) ... (it is an *alias* mailing list for kip_vision)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
You will have to collect all signatures and give your 50€ key deposit to Mrs. Hafranke or Mrs. Potthoff. Suggested waypoints:<br />
* 1st floor: Signature of JS and FK<br />
* Ground floor: deposit for key in room 00.304<br />
* 2nd floor: Signature of H. Jacobsen or alternatively E. Schmetzer<br />
* 3rd floor: First go to EDV (they will cut off the lower part of the form) then go to P. Doust to ask for a key (he will keep the upper part of the form)<br />
<br />
=== Vision(s) ===<br />
<br />
* inform cluster commissioner, i.e. CM, ECM, they will create wang home and slurm user<br />
* Sign form to allow open sourcing of contributions.<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
== OpenProject Gitolite Repository Permissions ==<br />
<br />
When your login works, please create ssh keys '''as indicated in [https://openproject.bioai.eu/projects/symap2ic/wiki/Symap2icGitvizHowto]''' and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/JS, the gitviz administrators.<br />
<br />
=Workplace=<br />
<br />
==Who should I call for help? (FAQ) ==<br />
- '''The power is not working/toilet is overflowing/...''' → 54-5111 Störungsstelle („Alles was zur Grundversorgung gehört: Strom/Gas/Wasser“; „der Hausmeister würde ohnehin nur dort anrufen“)<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask StB.<br />
Bugs and requests should be posted [https://openproject.bioai.eu/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://openproject.bioai.eu/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
The list of visionary desktop computers can be found here [[Visions_Privat:ComputerUsage]].<br />
Available unused machines can be found in this list.<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://chat.bioai.eu/visions (externally reachable).<br />
<br />
=Computing=<br />
<br />
==Know your Tools==<br />
<br />
<blockquote><br />
Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there’s one critical subject that’s rarely covered, and is instead left to students to figure out on their own: proficiency with their tools. We’ll teach you how to master the command-line, use a powerful text editor, use fancy features of version control systems, and much more!<br />
</blockquote><br />
https://missing.csail.mit.edu/<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both are managed by ECM and CM.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* hel<br />
and you can access them via (example for hel, but works with any other name too)<br />
<code> ssh -X hel </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 11022: hel<br />
* 12022: beli (only a selection of users has access, "currently heavy WIP")<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
If the mosh port (e.g. 61022) is already being used by someone else, try the next one (or something in the range of [50000 + X, 50000 + 1000 + X)).<br />
mosh does not work from within eduroam.<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
Short overview is given here. A more detailed intro can be found at [https://openproject.bioai.eu/projects/symap2ic/wiki/slurmviz]!<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 2 CPUs (1 hyperthreaded core) and 1/4 of nodes RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 2 CPUs, 16GB RAM):<br />
<br />
srun -p compile -c 2 --mem 16G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Each Slurm partition has a defined default and max time. You can look it up with<br />
<br />
scontrol show partition [partitionname]<br />
<br />
If your job runs longer than the default time it will be killed automatically by Slurm unless you give <br />
<br />
--time hh:mm:ss<br />
<br />
so your srun/sbatch command. You can not enforce times longer than the max time of this partition.<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://openproject.bioai.eu/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. / M.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
== Thesis Publication ==<br />
<br />
* It is strongly suggested to upload your Thesis to the KIP publications archive https://www.kip.uni-heidelberg.de/Veroeffentlichungen/new.php<br />
<br />
== Results Guidelines ==<br />
<br />
* https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/visionarythesisguidelines<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://openproject.bioai.eu/projects/vacation/work_packages/calendar our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
Username: KIP\$your_accountname<br />
<br />
== Orders ==<br />
<br />
* above 500€ => multiple offers (print out from some comparison website) needed<br />
* up to 2.5k€ => get three different offers (ask three shops for offers)<br />
** e.g. write to first three cheapest shops listed on some comparison websites<br />
** KIP "Kundennummer"s:<br />
*** Mindfactory: 10970071<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| SSD<br />
| —<br />
| —<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| —<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| —<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>/fasthome</code><br />
| NVM<br />
| —<br />
| —<br />
| <br />
| <br />
| Software projects (lots of compiling)<br />
|}<br />
<br />
= Software Environment =<br />
<br />
We apply container technology to improve reproducibility. Continuously built container images are deployed to ''/containers'' (e.g. ''/containers/stable/latest'').<br />
<br />
<br />
= Software Development =<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
The F9 gitolite server is hosted on our OpenProject server: https://openproject.bioai.eu<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
== Code Review (Gerrit) ==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://gerrit.bioai.eu F9's Gerrit Server] and a small tutorial can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
== Continuous Integration (Jenkins) ==<br />
We encourage continuous and automatic testing, see [https://jenkins.bioai.eu F9's Jenkins Server].<br />
Contact YS (or ECM) for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
== Bug Reports and Project Management (OpenProject) ==<br />
<br />
Bugs should be posted immediately in the OpenProject project associated with the module that produced the error. The title should be descriptive. As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://openproject.bioai.eu F9's OpenProject Server]<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://openproject.bioai.eu/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
* Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs (-c8) or 20GB RAM (--mem=20G). We use singularity container to manage external dependencies, see [https://openproject.bioai.eu/projects/symap2ic/wiki/container Singularity]<br />
<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=*<br />
<br />
*Set environment variable e.g. LD_LIBRARY_PATH or PATH to the compiled software<br />
<br />
> module load localdir<br />
<br />
*In order to pull and install the complete software stack such that the BrainScaleS [https://electronicvisions.github.io/hbp-sp9-guidebook/ Guidebook] examples are executable follow (assuming that we build on the cluster)<br />
<br />
> module load waf<br />
> waf setup --project=pyhmf --repo-db-url=https://github.com/electronicvisions/projects.git<br />
> singularity exec --app visionary-wafer /containers/stable/latest waf configure<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=* <br />
> module load localdir # load the compiled software stack<br />
<br />
*After installation changesets can be reviewed and uploaded to the Gerrit server.<br />
<br />
== Style ==<br />
<br />
We have style guides for C++ and Python. [[https://openproject.bioai.eu/projects/symap2ic/wiki/CodeStyleGuide]]<br />
<br />
To format your code properly, run git-clang-format and inspect/add the resulting changes before committing.<br />
To apply clang format on the current commit<br />
<br />
> singularity exec --app visionary-defaults /containers/stable/latest git-clang-format HEAD^<br />
<br />
There is also a convenient vim plugin<br />
[[https://github.com/rhysd/vim-clang-format]]<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://openproject.bioai.eu/projects/waf/wiki/Wiki<br />
<br />
== Common ==<br />
<br />
=== PyNN ===<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you).<br />
<br />
=== PyHMF ===<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM<br />
<br />
=== halco ===<br />
Hardware coordinate system for all modern (BSS-1 and later) systems.<br />
Maintainers: ECM, CM<br />
<br />
=== HostARQ ===<br />
The communication protocol stack for communication between the BrainScaleS-1/2 hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM, JI<br />
<br />
<br />
== Spikey ==<br />
<br />
=== PyNN.hardware/PyHAL ===<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
=== SpikeyHAL ===<br />
Spikey hardware access layer.<br />
Maintainers: AG or ECM<br />
<br />
<br />
== BrainScaleS-1 ==<br />
<br />
=== Cake ===<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS<br />
<br />
=== Euter/Ester ===<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM<br />
<br />
=== Marocco ===<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
=== StHALbe, hicann-system ===<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CM, SS<br />
<br />
=== ESS ===<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OJB, SS<br />
<br />
<br />
== BrainScaleS-2 ==<br />
<br />
=== hxcomm ===<br />
Communication interface between HICANN-X and Host computer (via HostARQ)<br />
Maintainers: PSP, ECM<br />
<br />
=== fisch ===<br />
FPGA Instruction Set Compiler (adapter between a "pretty" FPGA interface and the real world)<br />
Maintainers: PSP, ECM<br />
<br />
=== haldls ===<br />
Hardware Abstraction Layer for BrainScaleS-2 systems.<br />
Maintainers: PSP, ECM, CM<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [Tutorial[https://gerrit.bioai.eu/gitweb?p=model-nmsampling-sbs.git;a=blob;f=example/tutorial.py;h=4de680a72298c60d8eb46a6865853481965ce772;hb=HEAD]] (requires access to gitweb) Maintainer: OJB<br />
<br />
= Documentation =<br />
<br />
Central starting points for documentation besides this page are<br />
<br />
* [https://openproject.bioai.eu/projects/hbp-sp9-specification--d9-7-1 SP9 specification for BrainScaleS-1]<br />
* [https://openproject.bioai.eu/projects/symap2ic/wiki symap2ic Wiki]<br />
* [http://www.kip.uni-heidelberg.de/vision/publications/ Publications], especially BSc, MSc, PhD theses</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=37171Visions:NoobiesTutorial2019-11-08T19:17:05Z<p>Sschmitt: /* Cluster Access */</p>
<hr />
<div>=Abbreviated Names=<br />
AB: Andreas Baumbach<br />
AFK: Ákos Kungl<br />
AG: Andreas Grübl<br />
AL: Aron Leibfried<br />
BC: Benjamin Cramer<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DD: Dominik Dold<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
FP: Felix Passenberg<br />
HS: Hartmut Schmidt<br />
JG: Julian Goeltz<br />
JI: Joscha Ilmberger<br />
JM: José Montes<br />
JK: Jakob Kaiser<br />
JS: Johannes Schemmel<br />
JW: Johannes Weis<br />
KS: Korbinian Schreiber<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
OMA: Oscar Martín-Almendral<br />
OJB: Oliver Breitwieser<br />
PSP: Philipp Spilger<br />
SB: Sebastian Billaudelle<br />
StB: Stefan Becker<br />
SK: Simeon Kanya<br />
SS: Sebastian Schmitt<br />
TT: Tobias Thommes<br />
VK: Vitali Karasenko<br />
YS: Yannik Stradmann<br />
QS: Quirinus Schwarzenboeck<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| BMBF Wettbewerb – Morgenrunde<br />
| Short daily status report of direct participants in the BMBF competition for low-energy inference.<br />
| ENI<br />
| Daily at 11:30<br />
| YS (backup: JI)<br />
|-<br />
|-<br />
| BrainScaleS-1 Users Meeting<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: ECM or CM)<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered. [https://chat.bioai.eu/visions/channels/wsi-hardies #MeetingLog].<br />
| ENI<br />
| Weekly, Monday after Hardware Users Meeting (if necessary)<br />
| AG<br />
|-<br />
| BrainScaleS-2 Hardware Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| Software Meeting 😍 ❤<br />
| The Softies meet ☕ and talk 🚀. Logs and agenda can be found [https://openproject.bioai.eu/projects/symap2ic/meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM (backup: OJB, CM, SS)<br />
|-<br />
| BrainScaleS-2 Users Meeting<br />
| Next-generation hardware systems users talk about progress and problems.<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM (backup: ECM)<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
|-<br />
| FPGA Development Meeting<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Thursday at 13:00<br />
| AG (backup: ECM).<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights) [https://chat.bioai.eu/visions/channels/journal-club channel].<br />
| ENI<br />
| Weekly, Friday at 11:00<br />
| DD, KS<br />
|-<br />
|}<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
== Login ==<br />
<br />
=== KIP ===<br />
<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* students should '''not''' use their URZ account name but rather a readable abbreviation of their real name, e.g. <code>emueller</code><br />
* state that the student should be added to f9 mailing list (IT) ... (it is an *alias* mailing list for kip_vision)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
You will have to collect all signatures and give your 50€ key deposit to Mrs. Hafranke or Mrs. Potthoff. Suggested waypoints:<br />
* 1st floor: Signature of JS and FK<br />
* Ground floor: deposit for key in room 00.304<br />
* 2nd floor: Signature of H. Jacobsen or alternatively E. Schmetzer<br />
* 3rd floor: First go to EDV (they will cut off the lower part of the form) then go to P. Doust to ask for a key (he will keep the upper part of the form)<br />
<br />
=== Vision(s) ===<br />
<br />
* inform cluster commissioner, i.e. CM, ECM, they will create wang home and slurm user<br />
* Sign form to allow open sourcing of contributions.<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
== OpenProject Gitolite Repository Permissions ==<br />
<br />
When your login works, please create ssh keys '''as indicated in [https://openproject.bioai.eu/projects/symap2ic/wiki/Symap2icGitvizHowto]''' and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/JS, the gitviz administrators.<br />
<br />
=Workplace=<br />
<br />
==Who should I call for help? (FAQ) ==<br />
- '''The power is not working/toilet is overflowing/...''' → 54-5111 Störungsstelle („Alles was zur Grundversorgung gehört: Strom/Gas/Wasser“; „der Hausmeister würde ohnehin nur dort anrufen“)<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask StB.<br />
Bugs and requests should be posted [https://openproject.bioai.eu/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://openproject.bioai.eu/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
The list of visionary desktop computers can be found here [[Visions_Privat:ComputerUsage]].<br />
Available unused machines can be found in this list.<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://chat.bioai.eu/visions (externally reachable).<br />
<br />
=Computing=<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both are managed by ECM and CM.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* hel<br />
and you can access them via (example for hel, but works with any other name too)<br />
<code> ssh -X hel </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 11022: hel<br />
* 12022: beli (only a selection of users has access, "currently heavy WIP")<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
If the mosh port (e.g. 61022) is already being used by someone else, try the next one (or something in the range of [50000 + X, 50000 + 1000 + X)).<br />
mosh does not work from within eduroam.<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
Short overview is given here. A more detailed intro can be found at [https://openproject.bioai.eu/projects/symap2ic/wiki/slurmviz]!<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 2 CPUs (1 hyperthreaded core) and 1/4 of nodes RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 2 CPUs, 16GB RAM):<br />
<br />
srun -p compile -c 2 --mem 16G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Each Slurm partition has a defined default and max time. You can look it up with<br />
<br />
scontrol show partition [partitionname]<br />
<br />
If your job runs longer than the default time it will be killed automatically by Slurm unless you give <br />
<br />
--time hh:mm:ss<br />
<br />
so your srun/sbatch command. You can not enforce times longer than the max time of this partition.<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://openproject.bioai.eu/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. / M.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
== Thesis Publication ==<br />
<br />
* It is strongly suggested to upload your Thesis to the KIP publications archive https://www.kip.uni-heidelberg.de/Veroeffentlichungen/new.php<br />
<br />
== Results Guidelines ==<br />
<br />
* https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/visionarythesisguidelines<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://openproject.bioai.eu/projects/vacation/work_packages/calendar our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
Username: KIP\$your_accountname<br />
<br />
== Orders ==<br />
<br />
* above 500€ => multiple offers (print out from some comparison website) needed<br />
* up to 2.5k€ => get three different offers (ask three shops for offers)<br />
** e.g. write to first three cheapest shops listed on some comparison websites<br />
** KIP "Kundennummer"s:<br />
*** Mindfactory: 10970071<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| SSD<br />
| —<br />
| —<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| —<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| —<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>/fasthome</code><br />
| NVM<br />
| —<br />
| —<br />
| <br />
| <br />
| Software projects (lots of compiling)<br />
|}<br />
<br />
= Software Environment =<br />
<br />
We apply container technology to improve reproducibility. Continuously built container images are deployed to ''/containers'' (e.g. ''/containers/stable/latest'').<br />
<br />
<br />
= Software Development =<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
The F9 gitolite server is hosted on our OpenProject server: https://openproject.bioai.eu<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
== Code Review (Gerrit) ==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://gerrit.bioai.eu F9's Gerrit Server] and a small tutorial can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
== Continuous Integration (Jenkins) ==<br />
We encourage continuous and automatic testing, see [https://jenkins.bioai.eu F9's Jenkins Server].<br />
Contact YS (or ECM) for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
== Bug Reports and Project Management (OpenProject) ==<br />
<br />
Bugs should be posted immediately in the OpenProject project associated with the module that produced the error. The title should be descriptive. As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://openproject.bioai.eu F9's OpenProject Server]<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://openproject.bioai.eu/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
* Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs (-c8) or 20GB RAM (--mem=20G). We use singularity container to manage external dependencies, see [https://openproject.bioai.eu/projects/symap2ic/wiki/container Singularity]<br />
<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=*<br />
<br />
*Set environment variable e.g. LD_LIBRARY_PATH or PATH to the compiled software<br />
<br />
> module load localdir<br />
<br />
*In order to pull and install the complete software stack such that the BrainScaleS [https://electronicvisions.github.io/hbp-sp9-guidebook/ Guidebook] examples are executable follow (assuming that we build on the cluster)<br />
<br />
> module load waf<br />
> waf setup --project=pyhmf --repo-db-url=https://github.com/electronicvisions/projects.git<br />
> singularity exec --app visionary-wafer /containers/stable/latest waf configure<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=* <br />
> module load localdir # load the compiled software stack<br />
<br />
*After installation changesets can be reviewed and uploaded to the Gerrit server.<br />
<br />
== Style ==<br />
<br />
We have style guides for C++ and Python. [[https://openproject.bioai.eu/projects/symap2ic/wiki/CodeStyleGuide]]<br />
<br />
To format your code properly, run git-clang-format and inspect/add the resulting changes before committing.<br />
To apply clang format on the current commit<br />
<br />
> singularity exec --app visionary-defaults /containers/stable/latest git-clang-format HEAD^<br />
<br />
There is also a convenient vim plugin<br />
[[https://github.com/rhysd/vim-clang-format]]<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://openproject.bioai.eu/projects/waf/wiki/Wiki<br />
<br />
== Common ==<br />
<br />
=== PyNN ===<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you).<br />
<br />
=== PyHMF ===<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM<br />
<br />
=== halco ===<br />
Hardware coordinate system for all modern (BSS-1 and later) systems.<br />
Maintainers: ECM, CM<br />
<br />
=== HostARQ ===<br />
The communication protocol stack for communication between the BrainScaleS-1/2 hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM, JI<br />
<br />
<br />
== Spikey ==<br />
<br />
=== PyNN.hardware/PyHAL ===<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
=== SpikeyHAL ===<br />
Spikey hardware access layer.<br />
Maintainers: AG or ECM<br />
<br />
<br />
== BrainScaleS-1 ==<br />
<br />
=== Cake ===<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS<br />
<br />
=== Euter/Ester ===<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM<br />
<br />
=== Marocco ===<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
=== StHALbe, hicann-system ===<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CM, SS<br />
<br />
=== ESS ===<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OJB, SS<br />
<br />
<br />
== BrainScaleS-2 ==<br />
<br />
=== hxcomm ===<br />
Communication interface between HICANN-X and Host computer (via HostARQ)<br />
Maintainers: PSP, ECM<br />
<br />
=== fisch ===<br />
FPGA Instruction Set Compiler (adapter between a "pretty" FPGA interface and the real world)<br />
Maintainers: PSP, ECM<br />
<br />
=== haldls ===<br />
Hardware Abstraction Layer for BrainScaleS-2 systems.<br />
Maintainers: PSP, ECM, CM<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [Tutorial[https://gerrit.bioai.eu/gitweb?p=model-nmsampling-sbs.git;a=blob;f=example/tutorial.py;h=4de680a72298c60d8eb46a6865853481965ce772;hb=HEAD]] (requires access to gitweb) Maintainer: OJB<br />
<br />
= Documentation =<br />
<br />
Central starting points for documentation besides this page are<br />
<br />
* [https://openproject.bioai.eu/projects/hbp-sp9-specification--d9-7-1 SP9 specification for BrainScaleS-1]<br />
* [https://openproject.bioai.eu/projects/symap2ic/wiki symap2ic Wiki]<br />
* [http://www.kip.uni-heidelberg.de/vision/publications/ Publications], especially BSc, MSc, PhD theses</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=36884Visions:NoobiesTutorial2019-07-23T11:59:14Z<p>Sschmitt: /* Meetings, sorted by time */</p>
<hr />
<div>=Abbreviated Names=<br />
ASA: Aamir, Syed Ahmed<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CK: Christoph Koke<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
IB: Ilja Bytschok<br />
JB: Johannes Bill<br />
JI: Joscha Ilmberger<br />
JK: Johann Klähn<br />
JS: Johannes Schemmel<br />
KHS: Kai Husmann<br />
KM: Karlheinz Meier<br />
LL: Luziwei Leng<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
MK: Mitja Kleider<br />
OA: Oscar Martín-Almendral<br />
OJB: Oliver Breitwieser<br />
PM: Paul Müller<br />
SS: Sebastian Schmitt<br />
TP: Tom Pfeil<br />
VK: Vitali Karasenko<br />
YS: Yannik Stradmann<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| BrainScaleS-1<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 9:30<br />
| SS (backup: MK or ECM)<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered. [https://chat.bioai.eu/visions/channels/wsi-hardies #MeetingLog].<br />
| ENI<br />
| Weekly, Monday after Hardware Users Meeting (if necessary)<br />
| AG<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://openproject.bioai.eu/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| DLS Users Meeting<br />
| HICANN DLS users meeting (DLSHWFUM)<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights) [https://chat.bioai.eu/visions/channels/journal-club channel].<br />
| ENI<br />
| Weekly, Friday at 11:00<br />
| DD, KS<br />
|-<br />
|}<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
== Login ==<br />
<br />
=== KIP ===<br />
<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* students should '''not''' use their URZ account name but rather a readable abbreviation of their real name, e.g. <code>emueller</code><br />
* state that the student should be added to f9 mailing list (IT) ... (it is an *alias* mailing list for kip_vision)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
You will have to collect all signatures and give your 50€ key deposit to Mrs. Hafranke or Mrs. Potthoff. Suggested waypoints:<br />
* 1st floor: Signature of JS and FK<br />
* Ground floor: deposit for key in room 00.304<br />
* 2nd floor: Signature of H. Jacobsen or alternatively E. Schmetzer<br />
* 3rd floor: First go to EDV (they will cut off the lower part of the form) then go to P. Doust to ask for a key (he will keep the upper part of the form)<br />
<br />
=== Vision(s) ===<br />
<br />
* inform cluster commissioner, i.e. CM, ECM, they will create wang home and slurm user<br />
* Sign form to allow open sourcing of contributions.<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys '''as indicated in [https://openproject.bioai.eu/projects/symap2ic/wiki/Symap2icGitvizHowto]''' and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/JS, the gitviz/redmine administrators.<br />
<br />
=Workplace=<br />
<br />
==Who should I call for help? (FAQ) ==<br />
- '''The power is not working/toilet is overflowing/...''' → 54-5111 Störungsstelle („Alles was zur Grundversorgung gehört: Strom/Gas/Wasser“; „der Hausmeister würde ohnehin nur dort anrufen“)<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://openproject.bioai.eu/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://openproject.bioai.eu/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
The list of visionary desktop computers can be found here [[Visions_Privat:ComputerUsage]].<br />
Available unused machines can be found in this list.<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://chat.bioai.eu/visions (externally reachable).<br />
<br />
The software also supports IRC access via port 6667 (KIP-internally).<br />
<br />
Examples for IRC Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidgin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC on server "chatviz" port 6667. To authenticate yourself, add a "buddy pounce" on pseudo user "mattermost" and send "LOGIN yourMailaddress yourPassword" (recurring).<br />
<br />
=Computing=<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both are managed by ECM and CM.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 7022: ice<br />
* 11022: hel<br />
* 12022: beli (only a selection of users has access, "currently heavy WIP")<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
If the mosh port (e.g. 61022) is already being used by someone else, try the next one (or something in the range of [50000 + X, 50000 + 1000 + X)).<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
Short overview is given here. A more detailed intro can be found at [https://openproject.bioai.eu/projects/symap2ic/wiki/slurmviz]!<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 2 CPUs (1 hyperthreaded core) and 1/4 of nodes RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 2 CPUs, 16GB RAM):<br />
<br />
srun -p compile -c 2 --mem 16G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Each Slurm partition has a defined default and max time. You can look it up with<br />
<br />
scontrol show partition [partitionname]<br />
<br />
If your job runs longer than the default time it will be killed automatically by Slurm unless you give <br />
<br />
--time hh:mm:ss<br />
<br />
so your srun/sbatch command. You can not enforce times longer than the max time of this partition.<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://openproject.bioai.eu/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. / M.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
== Thesis Publication ==<br />
<br />
* It is strongly suggested to upload your Thesis to the KIP publications archive https://www.kip.uni-heidelberg.de/Veroeffentlichungen/new.php<br />
<br />
== Results Guidelines ==<br />
<br />
* https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/visionarythesisguidelines<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://openproject.bioai.eu/projects/vacation/work_packages/calendar our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
Username: KIP\$your_accountname<br />
<br />
== Orders ==<br />
<br />
* above 500€ => multiple offers (print out from some comparison website) needed<br />
* up to 2.5k€ => get three different offers (ask three shops for offers)<br />
** e.g. write to first three cheapest shops listed on some comparison websites<br />
** KIP "Kundennummer"s:<br />
*** Mindfactory: 10970071<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
The F9 gitolite server is hosted on our OpenProject server: https://openproject.bioai.eu<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://gerrit.bioai.eu F9's Gerrit Server] and a small tutorial can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://jenkins.bioai.eu F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://openproject.bioai.eu F9's Redmine/OpenProject Server]<br />
<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://openproject.bioai.eu/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
* Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs (-c8) or 20GB RAM (--mem=20G). We use singularity container to manage external dependencies, see [https://openproject.bioai.eu/projects/symap2ic/wiki/container Singularity]<br />
<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=*<br />
<br />
*Set environment variable e.g. LD_LIBRARY_PATH or PATH to the compiled software<br />
<br />
> module load localdir<br />
<br />
*In order to pull and install the complete software stack such that the BrainScaleS [https://electronicvisions.github.io/hbp-sp9-guidebook/ Guidebook] examples are executable follow (assuming that we build on the cluster)<br />
<br />
> module load waf<br />
> waf setup --project=pyhmf --repo-db-url=https://github.com/electronicvisions/projects.git<br />
> singularity exec --app visionary-wafer /containers/stable/latest waf configure<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=* <br />
> module load localdir # load the compiled software stack<br />
<br />
*After installation changesets can be reviewed and uploaded to the Gerrit server.<br />
<br />
== Style ==<br />
<br />
We have style guides for C++ and Python. [[https://openproject.bioai.eu/projects/symap2ic/wiki/CodeStyleGuide]]<br />
<br />
To format your code properly, run git-clang-format and inspect/add the resulting changes before committing.<br />
To apply clang format on the current commit<br />
<br />
> singularity exec --app visionary-defaults /containers/stable/latest git-clang-format HEAD^<br />
<br />
There is also a convenient vim plugin<br />
[[https://github.com/rhysd/vim-clang-format]]<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://openproject.bioai.eu/projects/waf/wiki/Wiki<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OJB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [Tutorial[https://gerrit.bioai.eu/gitweb?p=model-nmsampling-sbs.git;a=blob;f=example/tutorial.py;h=4de680a72298c60d8eb46a6865853481965ce772;hb=HEAD]] (requires access to gitweb) Maintainer: OJB<br />
<br />
= Documentation =<br />
<br />
Central starting points for documentation besides this page are<br />
<br />
* [https://openproject.bioai.eu/projects/hbp-sp9-specification--d9-7-1 SP9 specification for BrainScaleS-1]<br />
* [https://openproject.bioai.eu/projects/symap2ic/wiki symap2ic Wiki]<br />
* [http://www.kip.uni-heidelberg.de/vision/publications/ Publications], especially BSc, MSc, PhD theses</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=36873Visions:NoobiesTutorial2019-07-15T11:59:55Z<p>Sschmitt: /* B.Sc. / M.Sc. */</p>
<hr />
<div>=Abbreviated Names=<br />
ASA: Aamir, Syed Ahmed<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CK: Christoph Koke<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
IB: Ilja Bytschok<br />
JB: Johannes Bill<br />
JI: Joscha Ilmberger<br />
JK: Johann Klähn<br />
JS: Johannes Schemmel<br />
KHS: Kai Husmann<br />
KM: Karlheinz Meier<br />
LL: Luziwei Leng<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
MK: Mitja Kleider<br />
OA: Oscar Martín-Almendral<br />
OJB: Oliver Breitwieser<br />
PM: Paul Müller<br />
SS: Sebastian Schmitt<br />
TP: Tom Pfeil<br />
VK: Vitali Karasenko<br />
YS: Yannik Stradmann<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| BrainScaleS-1<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: MK or ECM)<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered. [https://chat.bioai.eu/visions/channels/wsi-hardies #MeetingLog].<br />
| ENI<br />
| Weekly, Monday after Hardware Users Meeting (if necessary)<br />
| AG<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://openproject.bioai.eu/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| DLS Users Meeting<br />
| HICANN DLS users meeting (DLSHWFUM)<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://openproject.bioai.eu/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights) [https://chat.bioai.eu/visions/channels/journal-club channel].<br />
| ENI<br />
| Weekly, Friday at 11:00<br />
| DD, KS<br />
|-<br />
|}<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
== Login ==<br />
<br />
=== KIP ===<br />
<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* students should '''not''' use their URZ account name but rather a readable abbreviation of their real name, e.g. <code>emueller</code><br />
* state that the student should be added to f9 mailing list (IT) ... (it is an *alias* mailing list for kip_vision)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
You will have to collect all signatures and give your 50€ key deposit to Mrs. Hafranke or Mrs. Potthoff. Suggested waypoints:<br />
* 1st floor: Signature of JS and FK<br />
* Ground floor: deposit for key in room 00.304<br />
* 2nd floor: Signature of H. Jacobsen or alternatively E. Schmetzer<br />
* 3rd floor: First go to EDV (they will cut off the lower part of the form) then go to P. Doust to ask for a key (he will keep the upper part of the form)<br />
<br />
=== Vision(s) ===<br />
<br />
* inform cluster commissioner, i.e. CM, ECM, they will create wang home and slurm user<br />
* Sign form to allow open sourcing of contributions.<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys '''as indicated in [https://openproject.bioai.eu/projects/symap2ic/wiki/Symap2icGitvizHowto]''' and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/JS, the gitviz/redmine administrators.<br />
<br />
=Workplace=<br />
<br />
==Who should I call for help? (FAQ) ==<br />
- '''The power is not working/toilet is overflowing/...''' → 54-5111 Störungsstelle („Alles was zur Grundversorgung gehört: Strom/Gas/Wasser“; „der Hausmeister würde ohnehin nur dort anrufen“)<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://openproject.bioai.eu/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://openproject.bioai.eu/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
The list of visionary desktop computers can be found here [[Visions_Privat:ComputerUsage]].<br />
Available unused machines can be found in this list.<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://chat.bioai.eu/visions (externally reachable).<br />
<br />
The software also supports IRC access via port 6667 (KIP-internally).<br />
<br />
Examples for IRC Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidgin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC on server "chatviz" port 6667. To authenticate yourself, add a "buddy pounce" on pseudo user "mattermost" and send "LOGIN yourMailaddress yourPassword" (recurring).<br />
<br />
=Computing=<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both are managed by ECM and CM.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 7022: ice<br />
* 11022: hel<br />
* 12022: beli (only a selection of users has access, "currently heavy WIP")<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
If the mosh port (e.g. 61022) is already being used by someone else, try the next one (or something in the range of [50000 + X, 50000 + 1000 + X)).<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
Short overview is given here. A more detailed intro can be found at [https://openproject.bioai.eu/projects/symap2ic/wiki/slurmviz]!<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 2 CPUs (1 hyperthreaded core) and 1/4 of nodes RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 2 CPUs, 16GB RAM):<br />
<br />
srun -p compile -c 2 --mem 16G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Each Slurm partition has a defined default and max time. You can look it up with<br />
<br />
scontrol show partition [partitionname]<br />
<br />
If your job runs longer than the default time it will be killed automatically by Slurm unless you give <br />
<br />
--time hh:mm:ss<br />
<br />
so your srun/sbatch command. You can not enforce times longer than the max time of this partition.<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://openproject.bioai.eu/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. / M.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
== Thesis Publication ==<br />
<br />
* It is strongly suggested to upload your Thesis to the KIP publications archive https://www.kip.uni-heidelberg.de/Veroeffentlichungen/new.php<br />
<br />
== Results Guidelines ==<br />
<br />
* https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/visionarythesisguidelines<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://openproject.bioai.eu/projects/vacation/work_packages/calendar our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
Username: KIP\$your_accountname<br />
<br />
== Orders ==<br />
<br />
* above 500€ => multiple offers (print out from some comparison website) needed<br />
* up to 2.5k€ => get three different offers (ask three shops for offers)<br />
** e.g. write to first three cheapest shops listed on some comparison websites<br />
** KIP "Kundennummer"s:<br />
*** Mindfactory: 10970071<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
The F9 gitolite server is hosted on our OpenProject server: https://openproject.bioai.eu<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://gerrit.bioai.eu F9's Gerrit Server] and a small tutorial can be found here [https://openproject.bioai.eu/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://jenkins.bioai.eu F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://openproject.bioai.eu F9's Redmine/OpenProject Server]<br />
<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://openproject.bioai.eu/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
* Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs (-c8) or 20GB RAM (--mem=20G). We use singularity container to manage external dependencies, see [https://openproject.bioai.eu/projects/symap2ic/wiki/container Singularity]<br />
<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=*<br />
<br />
*Set environment variable e.g. LD_LIBRARY_PATH or PATH to the compiled software<br />
<br />
> module load localdir<br />
<br />
*In order to pull and install the complete software stack such that the BrainScaleS [https://electronicvisions.github.io/hbp-sp9-guidebook/ Guidebook] examples are executable follow (assuming that we build on the cluster)<br />
<br />
> module load waf<br />
> waf setup --project=pyhmf --repo-db-url=https://github.com/electronicvisions/projects.git<br />
> singularity exec --app visionary-wafer /containers/stable/latest waf configure<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest waf install --targets=* <br />
> module load localdir # load the compiled software stack<br />
<br />
*After installation changesets can be reviewed and uploaded to the Gerrit server.<br />
<br />
== Style ==<br />
<br />
We have style guides for C++ and Python. [[https://openproject.bioai.eu/projects/symap2ic/wiki/CodeStyleGuide]]<br />
<br />
To format your code properly, run git-clang-format and inspect/add the resulting changes before committing.<br />
To apply clang format on the current commit<br />
<br />
> singularity exec --app visionary-defaults /containers/stable/latest git-clang-format HEAD^<br />
<br />
There is also a convenient vim plugin<br />
[[https://github.com/rhysd/vim-clang-format]]<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://openproject.bioai.eu/projects/waf/wiki/Wiki<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OJB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [Tutorial[https://gerrit.bioai.eu/gitweb?p=model-nmsampling-sbs.git;a=blob;f=example/tutorial.py;h=4de680a72298c60d8eb46a6865853481965ce772;hb=HEAD]] (requires access to gitweb) Maintainer: OJB<br />
<br />
= Documentation =<br />
<br />
Central starting points for documentation besides this page are<br />
<br />
* [https://openproject.bioai.eu/projects/hbp-sp9-specification--d9-7-1 SP9 specification for BrainScaleS-1]<br />
* [https://openproject.bioai.eu/projects/symap2ic/wiki symap2ic Wiki]<br />
* [http://www.kip.uni-heidelberg.de/vision/publications/ Publications], especially BSc, MSc, PhD theses</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=36036Visions:NoobiesTutorial2018-11-26T12:01:10Z<p>Sschmitt: /* Meetings, sorted by time */</p>
<hr />
<div>=Abbreviated Names=<br />
ASA: Aamir, Syed Ahmed<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CK: Christoph Koke<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
IB: Ilja Bytschok<br />
JB: Johannes Bill<br />
JI: Joscha Ilmberger<br />
JK: Johann Klähn<br />
JS: Johannes Schemmel<br />
KHS: Kai Husmann<br />
KM: Karlheinz Meier<br />
LL: Luziwei Leng<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
MK: Mitja Kleider<br />
OA: Oscar Martín-Almendral<br />
OB: Oliver Breitwieser<br />
PM: Paul Müller<br />
SS: Sebastian Schmitt<br />
TP: Tom Pfeil<br />
VK: Vitali Karasenko<br />
YS: Yannik Stradmann<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| BrainScaleS-1<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: MK or ECM)<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered. [https://brainscales-r.kip.uni-heidelberg.de:6443/visions/channels/wsi-hardies #MeetingLog].<br />
| ENI<br />
| Weekly, Monday after Hardware Users Meeting (if necessary)<br />
| AG<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| DLS Users Meeting<br />
| HICANN DLS users meeting (DLSHWFUM)<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights) [https://brainscales-r.kip.uni-heidelberg.de:6443/visions/channels/journal-club channel].<br />
| ENI<br />
| Weekly, Friday at 11:00<br />
| DD, KS<br />
|-<br />
|}<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
== Login ==<br />
<br />
=== KIP ===<br />
<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* students should '''not''' use their URZ account name but rather a readable abbreviation of their real name, e.g. <code>emueller</code><br />
* state that the student should be added to f9 mailing list (IT) ... (it is an *alias* mailing list for kip_vision)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
You will have to collect all signatures and give your 50€ key deposit to Mrs. Hafranke or Mrs. Potthoff. Suggested waypoints:<br />
* 1st floor: Signature of JS and FK<br />
* Ground floor: deposit for key in room 00.304<br />
* 2nd floor: Signature of H. Jacobsen or alternatively E. Schmetzer<br />
* 3rd floor: First go to EDV (they will cut off the lower part of the form) then go to P. Doust to ask for a key (he will keep the upper part of the form)<br />
<br />
=== Vision(s) ===<br />
<br />
* inform cluster commissioner, i.e. CM, KHS, ECM, they will create wang home and slurm user<br />
* Sign form to allow open sourcing of contributions.<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys '''as indicated in [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Symap2icGitvizHowto]''' and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/KHS/JS, the gitviz/redmine administrators.<br />
<br />
=Workplace=<br />
<br />
==Who should I call for help? (FAQ) ==<br />
- '''The power is not working/toilet is overflowing/...''' → 54-5111 Störungsstelle („Alles was zur Grundversorgung gehört: Strom/Gas/Wasser“; „der Hausmeister würde ohnehin nur dort anrufen“)<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://brainscales-r.kip.uni-heidelberg.de/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
The list of visionary desktop computers can be found here [[Visions_Privat:ComputerUsage]].<br />
Available unused machines can be found in this list.<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://brainscales-r.kip.uni-heidelberg.de:6443/visions (externally reachable).<br />
<br />
The software also supports IRC access via port 6667 (KIP-internally).<br />
<br />
Examples for IRC Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidgin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC on server "chatviz" port 6667. To authenticate yourself, add a "buddy pounce" on pseudo user "mattermost" and send "LOGIN yourMailaddress yourPassword" (recurring).<br />
<br />
=Computing=<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both is managed by ECM and KHS.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 7022: ice<br />
* 11022: hel<br />
* 12022: beli (only a selection of users has access, "currently heavy WIP")<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
If the mosh port (e.g. 61022) is already being used by someone else, try the next one (or something in the range of [50000 + X, 50000 + 1000 + X)).<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
Short overview is given here and a more detailed intro can be found at [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 2 CPUs (1 hyperthreaded core) and 1/4 of nodes RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 2 CPUs, 16GB RAM):<br />
<br />
srun -p compile -c 2 --mem 16G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Each Slurm partition has a defined default and max time. You can look it up with<br />
<br />
scontrol show partition [partitionname]<br />
<br />
If your job runs longer than the default time it will be killed automatically by Slurm unless you give <br />
<br />
--time hh:mm:ss<br />
<br />
so your srun/sbatch command. You can not enforce times longer than the max time of this partition.<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://brainscales-r.kip.uni-heidelberg.de/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. / M.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
== Thesis Publication ==<br />
<br />
* It is strongly suggested to upload your Thesis to the KIP publications archive https://www.kip.uni-heidelberg.de/Veroeffentlichungen/new.php<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://brainscales-r.kip.uni-heidelberg.de/projects/vacation/work_packages/calendar our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
<br />
== Orders ==<br />
<br />
* above 500€ => multiple offers (print out from some comparison website) needed<br />
* up to 2.5k€ => get three different offers (ask three shops for offers)<br />
** e.g. write to first three cheapest shops listed on some comparison websites<br />
** KIP "Kundennummer"s:<br />
*** Mindfactory: 10970071<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://brainscales-r.kip.uni-heidelberg.de:9443 F9's Gerrit Server] and a small tutorial can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://brainscales-r.kip.uni-heidelberg.de:11443 F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://brainscales-r.kip.uni-heidelberg.de F9's Redmine Server]<br />
<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
*Load project dependencies via the current spack module which you can find in the MOTD for hel. A small introduction to spack you can find [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
> module load spack_visionary-defaults/2017-01-26_0.2.3<br />
<br />
*Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs, 20GB RAM): <br />
<br />
> srun -p compile -c8 --pty waf configure install<br />
<br />
*In order to pull and install the complete software stack such that the BrainScaleS [https://electronicvisions.github.io/hbp-sp9-guidebook/ Guidebook] examples are executable follow (assuming that we build on the cluster)<br />
<br />
> git clone https://github.com/electronicvisions/waf.git -b symwaf2ic symwaf2ic<br />
> cd symwaf2ic && make && cd .. && ln -s symwaf2ic/waf<br />
> ./waf setup --project=pyhmf --repo-db-url=https://github.com/electronicvisions/projects.git<br />
> singularity exec --app visionary-wafer /containers/stable/latest ./waf configure<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest ./waf install --targets=* <br />
> module load localdir # load the compiled software stack<br />
<br />
*After installation changesets can be reviewed and uploaded to the Gerrit server.<br />
<br />
== Style ==<br />
<br />
We have style guides for C++ and Python. TODO: link them here<br />
<br />
To format your code properly, run git-clang-format and inspect/add the resulting changes before committing.<br />
It may be convenient to add an alias to your bashrc.<br />
<br />
> echo "singularity exec --app visionary-defaults /containers/stable/latest git-clang-format" >> ~/.bashrc<br />
> source ~/.bashrc<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki/Wiki<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [Tutorial[https://brainscales-r.kip.uni-heidelberg.de:9443/gitweb?p=model-nmsampling-sbs.git;a=blob;f=example/tutorial.py;h=4de680a72298c60d8eb46a6865853481965ce772;hb=HEAD]] (requires access to gitweb) Maintainer: OB</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=36035Visions:NoobiesTutorial2018-11-26T12:00:55Z<p>Sschmitt: /* Meetings, sorted by time */</p>
<hr />
<div>=Abbreviated Names=<br />
ASA: Aamir, Syed Ahmed<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CK: Christoph Koke<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
IB: Ilja Bytschok<br />
JB: Johannes Bill<br />
JI: Joscha Ilmberger<br />
JK: Johann Klähn<br />
JS: Johannes Schemmel<br />
KHS: Kai Husmann<br />
KM: Karlheinz Meier<br />
LL: Luziwei Leng<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
MK: Mitja Kleider<br />
OA: Oscar Martín-Almendral<br />
OB: Oliver Breitwieser<br />
PM: Paul Müller<br />
SS: Sebastian Schmitt<br />
TP: Tom Pfeil<br />
VK: Vitali Karasenko<br />
YS: Yannik Stradmann<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| BrainScaleS-1<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: PM or ECM)<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered. [https://brainscales-r.kip.uni-heidelberg.de:6443/visions/channels/wsi-hardies #MeetingLog].<br />
| ENI<br />
| Weekly, Monday after Hardware Users Meeting (if necessary)<br />
| AG<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| DLS Users Meeting<br />
| HICANN DLS users meeting (DLSHWFUM)<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights) [https://brainscales-r.kip.uni-heidelberg.de:6443/visions/channels/journal-club channel].<br />
| ENI<br />
| Weekly, Friday at 11:00<br />
| DD, KS<br />
|-<br />
|}<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
== Login ==<br />
<br />
=== KIP ===<br />
<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* students should '''not''' use their URZ account name but rather a readable abbreviation of their real name, e.g. <code>emueller</code><br />
* state that the student should be added to f9 mailing list (IT) ... (it is an *alias* mailing list for kip_vision)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
You will have to collect all signatures and give your 50€ key deposit to Mrs. Hafranke or Mrs. Potthoff. Suggested waypoints:<br />
* 1st floor: Signature of JS and FK<br />
* Ground floor: deposit for key in room 00.304<br />
* 2nd floor: Signature of H. Jacobsen or alternatively E. Schmetzer<br />
* 3rd floor: First go to EDV (they will cut off the lower part of the form) then go to P. Doust to ask for a key (he will keep the upper part of the form)<br />
<br />
=== Vision(s) ===<br />
<br />
* inform cluster commissioner, i.e. CM, KHS, ECM, they will create wang home and slurm user<br />
* Sign form to allow open sourcing of contributions.<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys '''as indicated in [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Symap2icGitvizHowto]''' and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/KHS/JS, the gitviz/redmine administrators.<br />
<br />
=Workplace=<br />
<br />
==Who should I call for help? (FAQ) ==<br />
- '''The power is not working/toilet is overflowing/...''' → 54-5111 Störungsstelle („Alles was zur Grundversorgung gehört: Strom/Gas/Wasser“; „der Hausmeister würde ohnehin nur dort anrufen“)<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://brainscales-r.kip.uni-heidelberg.de/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
The list of visionary desktop computers can be found here [[Visions_Privat:ComputerUsage]].<br />
Available unused machines can be found in this list.<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://brainscales-r.kip.uni-heidelberg.de:6443/visions (externally reachable).<br />
<br />
The software also supports IRC access via port 6667 (KIP-internally).<br />
<br />
Examples for IRC Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidgin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC on server "chatviz" port 6667. To authenticate yourself, add a "buddy pounce" on pseudo user "mattermost" and send "LOGIN yourMailaddress yourPassword" (recurring).<br />
<br />
=Computing=<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both is managed by ECM and KHS.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 7022: ice<br />
* 11022: hel<br />
* 12022: beli (only a selection of users has access, "currently heavy WIP")<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
If the mosh port (e.g. 61022) is already being used by someone else, try the next one (or something in the range of [50000 + X, 50000 + 1000 + X)).<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
Short overview is given here and a more detailed intro can be found at [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 2 CPUs (1 hyperthreaded core) and 1/4 of nodes RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 2 CPUs, 16GB RAM):<br />
<br />
srun -p compile -c 2 --mem 16G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Each Slurm partition has a defined default and max time. You can look it up with<br />
<br />
scontrol show partition [partitionname]<br />
<br />
If your job runs longer than the default time it will be killed automatically by Slurm unless you give <br />
<br />
--time hh:mm:ss<br />
<br />
so your srun/sbatch command. You can not enforce times longer than the max time of this partition.<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://brainscales-r.kip.uni-heidelberg.de/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. / M.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
== Thesis Publication ==<br />
<br />
* It is strongly suggested to upload your Thesis to the KIP publications archive https://www.kip.uni-heidelberg.de/Veroeffentlichungen/new.php<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://brainscales-r.kip.uni-heidelberg.de/projects/vacation/work_packages/calendar our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
<br />
== Orders ==<br />
<br />
* above 500€ => multiple offers (print out from some comparison website) needed<br />
* up to 2.5k€ => get three different offers (ask three shops for offers)<br />
** e.g. write to first three cheapest shops listed on some comparison websites<br />
** KIP "Kundennummer"s:<br />
*** Mindfactory: 10970071<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://brainscales-r.kip.uni-heidelberg.de:9443 F9's Gerrit Server] and a small tutorial can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://brainscales-r.kip.uni-heidelberg.de:11443 F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://brainscales-r.kip.uni-heidelberg.de F9's Redmine Server]<br />
<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
*Load project dependencies via the current spack module which you can find in the MOTD for hel. A small introduction to spack you can find [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
> module load spack_visionary-defaults/2017-01-26_0.2.3<br />
<br />
*Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs, 20GB RAM): <br />
<br />
> srun -p compile -c8 --pty waf configure install<br />
<br />
*In order to pull and install the complete software stack such that the BrainScaleS [https://electronicvisions.github.io/hbp-sp9-guidebook/ Guidebook] examples are executable follow (assuming that we build on the cluster)<br />
<br />
> git clone https://github.com/electronicvisions/waf.git -b symwaf2ic symwaf2ic<br />
> cd symwaf2ic && make && cd .. && ln -s symwaf2ic/waf<br />
> ./waf setup --project=pyhmf --repo-db-url=https://github.com/electronicvisions/projects.git<br />
> singularity exec --app visionary-wafer /containers/stable/latest ./waf configure<br />
> srun -p compile -c8 --pty singularity exec --app visionary-wafer /containers/stable/latest ./waf install --targets=* <br />
> module load localdir # load the compiled software stack<br />
<br />
*After installation changesets can be reviewed and uploaded to the Gerrit server.<br />
<br />
== Style ==<br />
<br />
We have style guides for C++ and Python. TODO: link them here<br />
<br />
To format your code properly, run git-clang-format and inspect/add the resulting changes before committing.<br />
It may be convenient to add an alias to your bashrc.<br />
<br />
> echo "singularity exec --app visionary-defaults /containers/stable/latest git-clang-format" >> ~/.bashrc<br />
> source ~/.bashrc<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki/Wiki<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [Tutorial[https://brainscales-r.kip.uni-heidelberg.de:9443/gitweb?p=model-nmsampling-sbs.git;a=blob;f=example/tutorial.py;h=4de680a72298c60d8eb46a6865853481965ce772;hb=HEAD]] (requires access to gitweb) Maintainer: OB</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=34836Visions:NoobiesTutorial2018-02-23T09:17:43Z<p>Sschmitt: </p>
<hr />
<div>=Abbreviated Names=<br />
ASA: Aamir, Syed Ahmed<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CK: Christoph Koke<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
IB: Ilja Bytschok<br />
JB: Johannes Bill<br />
JK: Johann Klähn<br />
JS: Johannes Schemmel<br />
KHS: Kai Husmann<br />
KM: Karlheinz Meier<br />
LL: Luziwei Leng<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
MK: Mitja Kleider<br />
OA: Oscar Martín-Almendral<br />
OB: Oliver Breitwieser<br />
PM: Paul Müller<br />
SS: Sebastian Schmitt<br />
TP: Tom Pfeil<br />
VK: Vitali Karasenko<br />
YS: Yannik Stradmann<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| Hardware Users Meeting<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: PM or ECM)<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| DLS Users Meeting<br />
| HICANN DLS users meeting (DLSHWFUM)<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights)<br />
| ENI<br />
| Weekly, Wednesday at 11:00<br />
| JB, AH<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered.<br />
| ENI<br />
| Weekly, Thursday at 15:00<br />
| AG<br />
|-<br />
|}<br />
<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
== Login ==<br />
<br />
=== KIP ===<br />
<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* students should not use their URZ account name but rather a readable abbreviation of their real name, e.g. <code>emueller</code><br />
* state that the student should be added to kip_vision mailing list (IT) ... tell them that it is an *alias* mailing list<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
You will have to collect all signatures and give your 50€ key deposit to J. Kohlhaas. Suggested waypoints:<br />
* 1st floor: Signature of JS and FK<br />
* Ground floor: deposit for key in room 00.304<br />
* 2nd floor: Signature of H. Jacobsen or alternatively E. Schmetzer<br />
* 3rd floor: First go to EDV (they will cut off the lower part of the form) then go to P. Doust to ask for a key (he will keep the upper part of the form)<br />
<br />
=== Vision(s) ===<br />
<br />
Sign form to allow open sourcing of contributions.<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys (as indicated in [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Symap2icGitvizHowto]) and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/KHS/JS, the gitviz/redmine administrators.<br />
<br />
=Workplace=<br />
<br />
==Who should I call for help? (FAQ) ==<br />
- '''The power is not working/toilet is overflowing/...''' → 54-5111 Störungsstelle („Alles was zur Grundversorgung gehört: Strom/Gas/Wasser“; „der Hausmeister würde ohnehin nur dort anrufen“)<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://brainscales-r.kip.uni-heidelberg.de/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://brainscales-r.kip.uni-heidelberg.de:6443/visions (externally reachable).<br />
<br />
The software also supports IRC access via port 6667 (KIP-internally).<br />
<br />
Examples for IRC Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidgin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC on server "chatviz" port 6667. To authenticate yourself, add a "buddy pounce" on pseudo user "mattermost" and send "LOGIN yourMailaddress yourPassword" (recurring).<br />
<br />
=Computing=<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both is managed by ECM and KHS.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 7022: ice<br />
* 11022: hel<br />
* 12022: beli (only a selection of users has access, "currently heavy WIP")<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
If the mosh port (e.g. 61022) is already being used by someone else, try the next one (or something in the range of [50000 + X, 50000 + 1000 + X)).<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 1 CPU and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 4 CPUs, 8GB RAM):<br />
<br />
srun -p compile -c 4 --mem 8G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://brainscales-r.kip.uni-heidelberg.de/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://brainscales-r.kip.uni-heidelberg.de/projects/vacation/work_packages/calendar our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
<br />
== Orders ==<br />
<br />
* above 500€ => multiple offers (print out from some comparison website) needed<br />
* up to 2.5k€ => get three different offers (ask three shops for offers)<br />
** e.g. write to first three cheapest shops listed on some comparison websites<br />
** KIP "Kundennummer"s:<br />
*** Mindfactory: 10970071<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://brainscales-r.kip.uni-heidelberg.de:9443 F9's Gerrit Server] and a small tutorial can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://brainscales-r.kip.uni-heidelberg.de:11443 F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://brainscales-r.kip.uni-heidelberg.de F9's Redmine Server]<br />
<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
*Load project dependencies via the current spack module which you can find in the MOTD for hel. A small introduction to spack you can find [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
> module load spack_visionary-defaults/2017-01-26_0.2.3<br />
<br />
*Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs, 20GB RAM): <br />
<br />
> srun -p compile -c8 --mem 20g --pty waf configure install<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki/Wiki<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [[Tutorial]]<br />
Maintainer: OB<br />
<br />
TODO: Tutorial link is dead!</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=34121Visions:NoobiesTutorial2017-06-29T08:30:52Z<p>Sschmitt: /* Cluster Access */</p>
<hr />
<div>=Abbreviated Names=<br />
ASA: Aamir, Syed Ahmed<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CK: Christoph Koke<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
IB: Ilja Bytschok<br />
JB: Johannes Bill<br />
JK: Johann Klähn<br />
JS: Johannes Schemmel<br />
KHS: Kai Husmann<br />
KM: Karlheinz Meier<br />
LL: Luziwei Leng<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
MK: Mitja Kleider<br />
OA: Oscar Martín-Almendral<br />
OB: Oliver Breitwieser<br />
PM: Paul Müller<br />
SS: Sebastian Schmitt<br />
TP: Tom Pfeil<br />
VK: Vitali Karasenko<br />
<br />
= KIP Institute Login =<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* state that the student should be added to kip_vision mailing list (IT)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| Hardware Users Meeting<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: PM or ECM)<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| DLS Users Meeting<br />
| HICANN DLS users meeting (DLSHWFUM)<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights)<br />
| ENI<br />
| Weekly, Wednesday at 11:00<br />
| JB, AH<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered.<br />
| ENI<br />
| Weekly, Thursday at 15:00<br />
| AG<br />
|-<br />
|}<br />
<br />
=Workplace=<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://brainscales-r.kip.uni-heidelberg.de/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
If the GUI session is blocked by a previous user, go to a non GUI session (Ctrl+Alt+F1/2/3) log in and start GUI with <code>startx</code><br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://brainscales-r.kip.uni-heidelberg.de:6443/visions (externally reachable).<br />
<br />
The software also supports IRC access via port 6667 (KIP-internally).<br />
<br />
Examples for IRC Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidgin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC on server "chatviz" port 6667. To authenticate yourself, add a "buddy pounce" on pseudo user "mattermost" and send "LOGIN yourMailaddress yourPassword" (recurring).<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys (as indicated in [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Symap2icGitvizHowto]) and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/KHS/JS, the gitviz/redmine administrators.<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both is managed by ECM and KHS.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 7022: ice<br />
* 11022: hel<br />
* 12022: beli<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel (<code>mosh brainscales-r.kip.uni-heidelberg.de --ssh="ssh -p 11022" -p 61022</code>).<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 1 CPU and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 4 CPUs, 8GB RAM):<br />
<br />
srun -p compile -c 4 --mem 8G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://brainscales-r.kip.uni-heidelberg.de/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Vacation ==<br />
<br />
* Ask your supervisor, you might be needed urgently during the desired time.<br />
* Fill out your personal "Urlaubskarte" and get a signature from JS. If you have no contract, skip this step. Otherwise it is obligatory before you leave!<br />
* Hand it over to FK. It will arrive in your post box a few days later with another signature. Now is a good time to note these days as vacation in your timesheet.<br />
* Create an issue with start and due date of your absence for [https://brainscales-r.kip.uni-heidelberg.de/projects/vacation/issues/gantt our vacation calendar] so your colleagues know that you are on vacation.<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://brainscales-r.kip.uni-heidelberg.de:9443 F9's Gerrit Server] and a small tutorial can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Gerrit].<br />
<br />
Gerrit uses BrainScaleS or Flagship accounts for authentication. Use<br />
export MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT=myBssOrFlagshipUsername<br />
ldapsearch -h visions-ldap -x -W -D uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT},ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de -b ou=brainscales,ou=people,dc=kip.uni-heidelberg,dc=de uid=${MY_BRAINSCALES_OR_FLAGSHIP_ACCOUNT}<br />
to register your account (or to verify your credentials).<br />
<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://brainscales-r.kip.uni-heidelberg.de:11443 F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
Jenkins uses BrainScaleS or Flagship accounts for authentication, see Gerrit section.<br />
<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://brainscales-r.kip.uni-heidelberg.de F9's Redmine Server]<br />
<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
*Load project dependencies via the current spack module which you can find in the MOTD for hel. A small introduction to spack you can find [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
> module load spack_visionary-defaults/2017-01-26_0.2.3<br />
<br />
*Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs, 20GB RAM): <br />
<br />
> srun -p compile -c8 --mem 20g --pty waf configure install<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki/Wiki<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [[Tutorial]]<br />
Maintainer: OB<br />
<br />
TODO: Tutorial link is dead!</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=33557Visions:NoobiesTutorial2017-04-04T10:56:14Z<p>Sschmitt: /* Cluster Access */</p>
<hr />
<div>=Abbreviated Names=<br />
ASA: Aamir, Syed Ahmed<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CK: Christoph Koke<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
IB: Ilja Bytschok<br />
JB: Johannes Bill<br />
JK: Johann Klähn<br />
JS: Johannes Schemmel<br />
KHS: Kai Husmann<br />
KM: Karlheinz Meier<br />
LL: Luziwei Leng<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
MK: Mitja Kleider<br />
OA: Oscar Martín-Almendral<br />
OB: Oliver Breitwieser<br />
PM: Paul Müller<br />
SS: Sebastian Schmitt<br />
TP: Tom Pfeil<br />
VK: Vitali Karasenko<br />
<br />
= KIP Institute Login =<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* state that the student should be added to kip_vision mailing list (IT)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
=Meetings, sorted by time=<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| Hardware Users Meeting<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: PM or ECM)<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 10:00<br />
| JS<br />
|-<br />
| DLS Users Meeting<br />
| HICANN DLS users meeting (DLSHWFUM)<br />
| ENI<br />
| Weekly, Wednesday at 10:00<br />
| CM<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| [https://wiki.kip.uni-heidelberg.de/KIPwiki/index.php/Visions_Privat:JournalClub Journal Club]<br />
| Stay up-to-date with scientific literature (one featured publication + spot lights)<br />
| ENI<br />
| Weekly, Wednesday at 11:00<br />
| JB, AH<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
| Seminarbox 1.Stock KIP, SB1<br />
| Weekly, Wednesday at 16:00, alternating between ASIC classic and ASIC DLS<br />
| JS<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
|-<br />
| PCB Meeting<br />
| PCB and System-Design related discussions. Platform setup and installation also covered.<br />
| ENI<br />
| Weekly, Thursday at 15:00<br />
| AG<br />
|-<br />
|}<br />
<br />
=Workplace=<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://brainscales-r.kip.uni-heidelberg.de/projects/admin-computing/ here].<br />
<br />
The [https://spack.readthedocs.io/en/latest/ spack] package manager is used to provide modules, if you run into issues try to find your question [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
==Network==<br />
If you want to use your own laptop inside the KIP network, you first need to register your laptop's MAC address. AG, JS are allowed to edit the list.<br />
<br />
From inside the KIP network, outgoing traffic has to go through the [[EDV:KIPProxy]]. You can create a [https://en.wikipedia.org/wiki/Proxy_auto-config proxy auto-config] file, e.g. <code>/etc/proxy.pac</code> and configure your browser and system to use it. This way you do not need to manually switch proxy settings when switching between KIP and other networks.<br />
<pre><br />
function FindProxyForURL(url, host)<br />
{<br />
if (isInNet(myIpAddress(), "129.206.180.0", "255.255.255.0")) {<br />
if (isInNet(host, "129.206.0.0", "255.255.0.0")) {<br />
return "DIRECT";<br />
}<br />
return "PROXY proxy.kip.uni-heidelberg.de:8080" ;<br />
} else {<br />
return "DIRECT";<br />
}<br />
}<br />
</pre><br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://brainscales-r.kip.uni-heidelberg.de:6443/visions (externally reachable).<br />
<br />
The software also supports IRC access via port 6667 (KIP-internally).<br />
<br />
Examples for IRC Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidgin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC on server "chatviz" port 6667. To authenticate yourself, add a "buddy pounce" on pseudo user "mattermost" and send "LOGIN yourMailaddress yourPassword" (recurring).<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys (as indicated in [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Symap2icGitvizHowto]) and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/KHS/JS, the gitviz/redmine administrators.<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both is managed by ECM and KHS.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
If you are working from outside the institute, you can access the frontend via<br />
<code> ssh -p <port> <kipuser>@brainscales-r.kip.uni-heidelberg.de </code><br />
The following ports give access to:<br />
* 7022: ice<br />
* 11022: hel<br />
* 12022: beli<br />
<br />
Mosh ports are 50000 + X, e.g. 61022 for hel.<br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
srun -p [partitionname] [your command]<br />
<br />
The default job gets 1 CPU and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 4 CPUs, 8GB RAM):<br />
<br />
srun -p compile -c 4 --mem 8G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch -p simulation --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>experiment</code> queue.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
DLS is accessible via <code>dls</code> queue. To select a specific dls board, the <code>--gres=[board id]</code> option is used.<br />
<br />
More details can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://brainscales-r.kip.uni-heidelberg.de/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= B.Sc. =<br />
<br />
== Thesis ==<br />
<br />
* When thinking about how to structure your thesis, consider these [[Visions_Privat:ThesesCriteria|internal recommendations]].<br />
<br />
== B.Sc. colloquium / Theses hand-in dates ==<br />
<br />
* Find a suitable date for your colloquium and other things (KM & JS & you). A lot of people have full schedules, so do it well in advance!<br />
* Set all the dates, inform the examination office (Prüfungssek.) '''and''' make sure that Felicitas Kleveta is up2date, too.<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
== Windows Software ==<br />
<br />
If you need Windows software, e.g. to fill out forms (Word, Excel), you can log in remotely to a Windows machine:<br />
<pre><br />
rdesktop kipwin<br />
</pre><br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://brainscales-r.kip.uni-heidelberg.de:9443 F9's Gerrit Server] and a small tutorial can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Gerrit].<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://brainscales-r.kip.uni-heidelberg.de:8443 F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://brainscales-r.kip.uni-heidelberg.de F9's Redmine Server]<br />
<br />
<br />
==How to: Building Software==<br />
<br />
*log onto frontend (exp: hel)<br />
<br />
> ssh hel<br />
* Create and switch to project directory (choose path according to personal preference):<br />
<br />
> mkdir -p code/project_name<br />
> cd code/project_name<br />
<br />
* Load the waf build tool module. More information on [https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki waf]<br />
<br />
> module load waf<br />
<br />
* Normally ssh will ask for the password of your private key every time you connect to another machine (e.g. during <code>git pull</code>). If you want to avoid this you can start <code>ssh-agent</code>, which will load/unlock your private key by asking you once and keep running in the background.<br />
<br />
> eval $(ssh-agent)<br />
<br />
*Add your personal ssh key agent to the agent (link -> create key?)<br />
<br />
> ssh-add<br />
<br />
*Choose the wanted project (exp: sthal)<br />
<br />
> waf setup --project sthal<br />
# ——— or specify multiple projects: ———<br />
> waf setup --project sthal --project cake<br />
<br />
*Load project dependencies via the current spack module which you can find in the MOTD for hel. A small introduction to spack you can find [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Spack here].<br />
<br />
> module load spack_visionary-defaults/2017-01-26_0.2.3<br />
<br />
*Configure and compile on the cluster. The default job gets 2 CPUs and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 8 CPUs, 20GB RAM): <br />
<br />
> srun -p compile -c8 --mem 20g --pty waf configure install<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki/Wiki<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [[Tutorial]]<br />
Maintainer: OB<br />
<br />
TODO: Tutorial link is dead!</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=30745Visions:NoobiesTutorial2016-03-31T08:16:26Z<p>Sschmitt: /* Server Usage */</p>
<hr />
<div>=Abbreviated Names=<br />
<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BK: Björn Kindler<br />
BV: Bernhard Vogginger<br />
CK: Christoph Koke<br />
CM: Christian Mauch<br />
CP: Christian Pehle<br />
DH: Dan Husmann<br />
ECM: Eric Müller<br />
FK: Felicitas Kleveta<br />
IB: Ilja Bytschok<br />
JK: Johann Klähn<br />
JS: Johannes Schemmel<br />
KHS: Kai Husmann<br />
KM: Karlheinz Meier<br />
LL: Luziwei Leng<br />
MAP: Mihai Petrovici<br />
MD: Markus Dorn<br />
MG: Maurice Güttler<br />
MK: Mitja Kleider<br />
OA: Oscar Martín-Almendral<br />
OB: Oliver Breitwieser<br />
PM: Paul Müller<br />
SS: Sebastian Schmitt<br />
TP: Tom Pfeil<br />
VK: Vitali Karasenko<br />
<br />
= KIP Institute Login =<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* state that the student should be added to kip_vision mailing list (IT)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* '''internshippers and bachelor students should be assigned to primary group F9_guests''' (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
=Meetings=<br />
<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| Hardware Users Meeting<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: PM or ECM)<br />
|-<br />
| PCB Meeting<br />
|<br />
| ENI<br />
| Weekly, Monday at TODO<br />
| AG<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Weekly, Tuesday at 14:00<br />
| ECM<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI, KIP SB1<br />
| Weekly, alternating between Tuesday at 10:00 (ENI) and Wednesday at 16:00 (SB1, KIP)<br />
| JS<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| TMA Meeting<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/model/wiki#TMA-Meetings here].<br />
| ENI<br />
| Weekly, Wednesday at 14:00<br />
| MAP<br />
|-<br />
| ASIC Meeting<br />
|<br />
|<br />
| Weekly, Wednesday at 15:00?<br />
|<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here] (login using [[Visions:NoobiesTutorial#Flagship.2Fex-BrainScaleS|BrainScaleS account]]).<br />
| ENI<br />
| Weekly, Thursday at 9:00<br />
| JS<br />
|-<br />
| Journal Club<br />
| TODO<br />
| ENI<br />
| Friday at TODO<br />
| AH<br />
|-<br />
|}<br />
<br />
=Workplace=<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://brainscales-r.kip.uni-heidelberg.de/projects/admin-computing/ here].<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's own slack-like chat server on '''chatviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
You should create an account on https://brainscales-r.kip.uni-heidelberg.de:6443/visions (externally reachable).<br />
<br />
The software also supports IRC access via port 6667 (KIP-internally).<br />
<br />
Examples for IRC Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidgin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC on server "chatviz" port 6667. To authenticate yourself, add a "buddy pounce" on pseudo user "mattermost" and send "LOGIN yourMailaddress yourPassword" (recurring).<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account (see [[Visions:NoobiesTutorial#KIP_Institute_Login|KIP Institute Login]])<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
You can contact him directly. <br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys (as indicated in [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Symap2icGitvizHowto]) and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/KHS/JS, the gitviz/redmine administrators.<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both is managed by ECM and KHS.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
srun [your command]<br />
<br />
The default job gets 1 CPU and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 4 CPUs, 8GB RAM):<br />
<br />
srun -c 4 --mem 8G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used. For detailed information do:<br />
<br />
scontrol show jobid -dd <jobid><br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>wafer</code>, <code>nmpm</code> and <code>test_wafer</code> queues.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
<br />
More details can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
=====X on cluster nodes=====<br />
Although not recommended, some old tools require X support. Follow the instructions at [https://brainscales-r.kip.uni-heidelberg.de/projects/one-neuron-demo/wiki] if you encounter such an old tool.<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
== Internships ==<br />
<br />
[https://cloud.kip.uni-heidelberg.de/owncloud/index.php/s/m2KKZT1monFZ6QQ Schein]<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'' or ''tsocks'':<br />
<br />
socksify git clone git://external.server/repo.git # on wheezy default installation<br />
tsocks git clone git://external.server/repo.git # on 'new' jessie default installation<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://brainscales-r.kip.uni-heidelberg.de:9443 F9's Gerrit Server] and a small tutorial can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Gerrit].<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://brainscales-r.kip.uni-heidelberg.de:8443 F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://brainscales-r.kip.uni-heidelberg.de F9's Redmine Server]<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
Short introduction on how to get and build repos https://brainscales-r.kip.uni-heidelberg.de/projects/waf/wiki/Wiki<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [[Tutorial]]<br />
Maintainer: OB<br />
<br />
TODO: Tutorial link is dead!</div>Sschmitthttps://wiki.kip.uni-heidelberg.de/KIPwiki/index.php?title=Visions:NoobiesTutorial&diff=29030Visions:NoobiesTutorial2015-09-03T14:25:54Z<p>Sschmitt: /* Abbreviated Names */</p>
<hr />
<div>=Abbreviated Names=<br />
<br />
BK: Björn Kindler<br />
JS: Johannes Schemmel<br />
ECM: Eric Müller<br />
KHS: Kai Husmann<br />
CM: Christian Mauch<br />
CK: Christoph Koke<br />
TP: Tom Pfeil<br />
SS: Sebastian Schmitt<br />
PM: Paul Müller<br />
AG: Andreas Grübl<br />
AH: Andreas Hartel<br />
BV: Bernhard Vogginger<br />
OB: Oliver Breitwieser<br />
MD: Markus Dorn<br />
OA: Oscar Martín-Almendral<br />
FK: Felicitas Kleveta<br />
<br />
= KIP Institute Login =<br />
The KIP login process is used for both, physical (i.e. keys) and virtual (i.e. user login stuff) access to KIP facilities.<br />
All F9 group services use some kind of KIP account/authentication.<br />
The login form can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
Rules (as a hint for your supervisor) regarding the "LOGIN Computing" part:<br />
* state that the student should be added to kip_vision mailing list (IT)<br />
* same for kip visions wiki (IT)<br />
* chip design permission if needed<br />
* internshippers and bachelor students should be assigned to primary group F9_guests (field "3")<br />
* master students and beyond should be assigned to primary group F9 (field "3")<br />
<br />
<br />
=Meetings=<br />
<br />
<br />
{| border="1"<br />
! scope="col" | Meeting Title<br />
! scope="col" | Description<br />
! scope="col" | Location<br />
! scope="col" | Datetime<br />
! scope="col" | Manager<br />
|-<br />
| Hardware Users Meeting<br />
| Users and hardware guys discussing about current topics related to hardware usage.<br />
| ENI<br />
| Weekly, Monday at 10:30<br />
| SS (backup: PM)<br />
|-<br />
| PCB Meeting<br />
|<br />
| ENI<br />
| Weekly, Monday at TODO<br />
| AG<br />
|-<br />
| TMA Meeting<br />
|<br />
| ENI<br />
| Weekly, Monday 13:30<br />
|<br />
|-<br />
| HICANN DLS Meeting<br />
| Chip design meeting<br />
| ENI<br />
| Weekly, Tuesday at 9:00<br />
| JS<br />
|-<br />
| FPGA Development<br />
| Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/hmf-fpga/wiki/Hmf-fpga_meetings here].<br />
| ENI<br />
| Weekly, Tuesday at 15:30<br />
| AG (backup: ECM).<br />
|-<br />
| ASIC Meeting<br />
|<br />
|<br />
| Weekly, Wednesday at 15:00?<br />
|<br />
|-<br />
| F9/Electronic Vision(s)' Group Meeting<br />
| Mandatory group meeting. Logs and agenda can be found [https://brainscales.kip.uni-heidelberg.de/internal/jss/Ag?m=showListOfGroupMeetings here]<br />
| ENI<br />
| Thursday at 9:00<br />
| JS<br />
|-<br />
| Softies' Meeting<br />
| Mandatory Softies meeting ;). Logs and agenda can be found [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Logs_of_Past_TUD_Video_Conferences here].<br />
| ENI<br />
| Thursday at 14:00<br />
| ECM<br />
|-<br />
| Journal Club<br />
| TODO<br />
| ENI<br />
| Friday at TODO<br />
| AH<br />
|-<br />
|}<br />
<br />
=Workplace=<br />
<br />
==Computers==<br />
We use a Debian Jessie-based default installation.<br />
The configuration is automatically managed.<br />
In case of package requests, please ask KHS.<br />
Bugs and requests should be posted [https://brainscales-r.kip.uni-heidelberg.de/projects/admin-computing/ here].<br />
<br />
==Space==<br />
There are some places in the "Werkstatt" building (room 501) and in the container building.<br />
In case of a transient shortage of spaces, internshippers and bachelors are expected to "fill up" (i.e. they do not have a static assignment to a specific place) all available places.<br />
<br />
=Communication=<br />
To stay informed (and to provide information to others) you should join F9's irc server on '''bldviz'''.<br />
The main channels are:<br />
<br />
{| border="1"<br />
! scope="col" | Channel<br />
! scope="col" | Topic<br />
|-<br />
! scope="row" | <code>#softies</code><br />
| Software and stuff<br />
|-<br />
! scope="row" | <code>#hardies</code><br />
| Hardware<br />
|-<br />
! scope="row" | <code>#tma</code><br />
| Modeling<br />
|-<br />
! scope="row" | <code>#clusteraner</code><br />
| Cluster usage and announcements<br />
|}<br />
<br />
<br />
Clients:<br />
* hexchat (GUI)<br />
* weechat-curses (CLI)<br />
* Pidgin (GUI) / finch (CLI)<br />
You can access the channels in Pidigin by creating a new account (Accounts -> Manage Accounts) using the Protocol IRC, with your KIP-username and -password. And then joining the chatroom (Buddies -> Join a Chat) when using your IRC account. (Leave the password blank)<br />
<br />
=Accounts=<br />
<br />
Typically, you will need the following accounts:<br />
* KIP-Account<br />
* Flagship/ex-BrainScaleS-Account (which provides Access to the gitviz-Repository)<br />
<br />
If you work on the waferscale hardware or need access to the computer cluster ask your supervisor to write an email to ECM (+ get an introduction by your supervisor).<br />
If you do chip or FPGA development, you need ASIC permissions. Ask your supervisor to write an email to MD (+ get an introduction by your supervisor).<br />
<br />
==Flagship/ex-BrainScaleS==<br />
Flagship/ex-BrainScaleS accounts are managed by BK.<br />
Your supervisor should write him an email (+CC to you).<br />
This account is also needed for Redmine/GitViz access.<br />
<br />
==Redmine/GitViz Permissions==<br />
When your login works, please create ssh keys (as indicated in [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Symap2icGitvizHowto]) and upload the key to gitviz.<br />
Afterwards you should ask the project managers to add you to the needed repositories (your supervisor can help you).<br />
In case of ssh-key fails, please stick to the description in the symap2ic wiki (it's always the user's fault ;p).<br />
If you need further help, you may ask ECM/KHS/JS, the gitviz/redmine administrators.<br />
<br />
==Cluster Access==<br />
The F9 cluster is part of the BrainScaleS and HBP hardware systems.<br />
In times of idle nodes (i.e. the associated neuromorphic hardware parts are idle too), conventional software simulations can be run on the system.<br />
Please note, the cluster's main objective is controlling neuromorphic hardware and not number crunching.<br />
Having a KIP-Account gives you a home folder (distributed filesystem, AFS) on all machines running the default installation.<br />
However, this is not sufficient for cluster usage.<br />
You need a "wang" home and cluster access permissions.<br />
Both is managed by ECM and KHS.<br />
In case of a missing cluster_home you will see an error message when you lock into a compute server.<br />
<br />
The frontend/login nodes are named:<br />
* ice<br />
* ignatz<br />
and you can access them via (example for ice, but works with any other name too)<br />
<code> ssh -X ice </code><br />
<br />
===Server Usage===<br />
The machines mentioned above are not the compute nodes themselves, but are only the frontend to access the compute cluster.<br />
Large jobs (i.e. CPU/IO hogs or long-running things) on the frontend node will be killed by the administrators.<br />
So for heavy work (read everything after the bug/syntax fixing) please dispatch execution to the cluster:<br />
<br />
srun [your command]<br />
<br />
The default job gets 1 CPU and 2GB of RAM. If your code runs in parallel or needs more memory, please specify this (e.g. 4 CPUs, 8GB RAM):<br />
<br />
srun -c 4 --mem 8G [your command]<br />
<br />
To run the job in background, please use:<br />
<br />
sbatch --wrap [your command]<br />
<br />
This creates a <code>slurm-[jobid].out</code> log file containing all the console output.<br />
<br />
In order to check the status of your jobs the command <code>squeue</code> can be used.<br />
<br />
Jobs can be aborted (cancelled) by using:<br />
<br />
scancel [jobid]<br />
<br />
Accessing the BrainScaleS hardware is only possible via the <code>wafer</code>, <code>nmpm</code> and <code>test_wafer</code> queues.<br />
Spikey is accessible via <code>spikey</code> queue. To select a specific spikey, the <code>--gres=SpikeyXYZ</code> option is used.<br />
<br />
More details can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/SLURM].<br />
<br />
As a side note the compute nodes have localtime set to UTC, so all logging times will be offset to local time.<br />
However, this should never be a problem as you should always work with non-local date/time (e.g. UNIX epoch, UTC or something similar).<br />
<br />
==FPGA & ASIC==<br />
Servers, software and libraries are managed by MD.<br />
<br />
===Servers===<br />
There are several login nodes for ASIC work, e.g., <code>vmimas</code>, <code>vtitan</code>, <code>vrhea</code>.<br />
<br />
= Administrative Stuff =<br />
<br />
== Travel ==<br />
<br />
* before travel: fill out travel request form (Dienstreiseantrag) and hand over to FK<br />
* after travel: fill out reimbursement form (Dienstreiseabrechnungsformular) (provide invoices etc.) and hand over to FK<br />
* when getting back the result: check if everything is correct, hand over to OA<br />
<br />
The forms can be found here: https://www.kip.uni-heidelberg.de/service/verwaltung/form_forms (needs KIP login).<br />
<br />
=Using The Hardware=<br />
The [http://electronicvisions.github.io/hbp-sp9-guidebook/ HBP SP9 Guidebook] provides introductions to both, the Spikey system and the BrainScaleS system.<br />
<br />
=Core Hardware Components=<br />
<br />
For the BrainScaleS system, the NMPM hardware specification provides detailed information; see Jenkins doc job "HBP Spec".<br />
TODO: Write something about hardware stuff.<br />
<br />
<br />
=Data Management=<br />
<br />
The policy on F9-specific data storage is:<br />
<br />
<br />
{| border="1"<br />
|+ KIP/F9 Data Storage<br />
! scope="col" | Mount Point<br />
! scope="col" | Storage Backend<br />
! scope="col" | Redundancy<br />
! scope="col" | Backup Strategy<br />
! scope="col" | Usable Size<br />
! scope="col" | User Quota<br />
! scope="col" | Typical Application<br />
|-<br />
! scope="row" | <code>/afs/kip/user/USERNAME</code><br />
| HDD<br />
| RAID<br />
| yes (1 version)<br />
|<br />
| 10G<br />
| Distributed home directory<br />
|-<br />
! scope="row" | <code>/scratch</code><br />
| <br />
| <br />
| no<br />
| <br />
| <br />
| Scratch/temp data; might be deleted at any time<br />
|-<br />
! scope="row" | <code>/wang</code><br />
| HDD<br />
| RAID6 (2R)<br />
| no<br />
| 13T<br />
| 0.3T<br />
| General purpose<br />
|-<br />
! scope="row" | <code>/ley</code><br />
| HDD<br />
| RAID6 (2R)<br />
| yes (ADSM; 1 version)<br />
| 7T<br />
| 0.1T<br />
| Important stuff (not too large!)<br />
|-<br />
! scope="row" | <code>/loh</code><br />
| 4x Archive HDD<br />
| RAID5 (1R)<br />
| no<br />
| 16T<br />
| 1T<br />
| Archives of machines, homes, etc.<br />
|-<br />
! scope="row" | <code>???</code><br />
| SSD<br />
| <br />
| no<br />
| <br />
| <br />
| <br />
|}<br />
<br />
=Software Development=<br />
<br />
Most (all?) software developers work remotely on server machines.<br />
Tools like ''screen'' or ''tmux'' can keep your session open between reconnects.<br />
<br />
==Git==<br />
As a general rule, everything should be tracked in a version control system, in our case, that is ''git''. Period. If you hear git for the first time I highly recommend spending an hour going through a git tutorial of your choice. Here are some examples:<br />
* [http://rogerdudler.github.io/git-guide/ The Simple Guide]<br />
* TODO add one or two more?<br />
<br />
Whether your own work should be tracked in the group gitviz or not, should be decided together with your supervisor. But mostly, you will need to checkout some repo for read access.<br />
If your own/private work is not for the trash, you should request a repository (or contribute to an existing one) on gitviz. Have your supervisor ask KHS for a repository.<br />
<br />
Accessing external repositories using the git or ssh protocol requires the user to call ''socksify'':<br />
<br />
socksify git clone git://external.server/repo.git<br />
<br />
==License==<br />
Keep your code contributions (L)GPL-clean because we might want to publish it on a public web site.<br />
If you copy code from somewhere, verify license compatibility and '''mention''' the source as a code comment!<br />
<br />
==Code Review==<br />
For core software components (and other repositories involving multiple developers), we use gerrit as a code review tool.<br />
The server [https://brainscales-r.kip.uni-heidelberg.de:9443 F9's Gerrit Server] and a small tutorial can be found here [https://brainscales-r.kip.uni-heidelberg.de/projects/symap2ic/wiki/Gerrit].<br />
<br />
==Continuous Integration==<br />
We encourage continuous and automatic testing, see [https://brainscales-r.kip.uni-heidelberg.de:8443 F9's Jenkins Server].<br />
Contact KHS for details.<br />
<br />
== Bug reports and redmine project management ==<br />
Bugs should be posted immediately in the redmine project associated with the module that produced the error. The title should be descriptive (it may only be changed by 'project managers' after creating the ticket). As a general rule, the traceback is necessary for the developer to find the actual bug, but the more relevant information are given the easier the fix.<br />
Ideally, you create a minimal example that reproduces the problem and upload the script, including the module's loaded.<br />
[https://brainscales-r.kip.uni-heidelberg.de F9's Redmine Server]<br />
<br />
= Core Software Components =<br />
<br />
This section gives a very brief description of the main software packages developed for the NMPM-1 and Spikey systems.<br />
<br />
== PyNN ==<br />
A python API to specify neural networks, independent of the actual simulator used. Typical use case is to use it as frontend for simulations in nest or neuron.<br />
Documentation is available on its webpage (sort of at least) [http://neuralensemble.org/trac/PyNN], in order to get started it is best to ask someone for a simple working script and trying to reproduce it with minor changes (ideally your supervisor has some propositions for you)<br />
<br />
== PyHMF ==<br />
The BrainScaleS-hardware-specific PyNN implementation/backend.<br />
Maintainers: ECM, CK<br />
<br />
== PyNN.hardware/PyHAL ==<br />
The Spikey-hardware-specific PyNN implementation/backend.<br />
Maintainers: TP (backup: ECM)<br />
<br />
== Cake ==<br />
Calibration framework for the BrainScaleS hardware.<br />
Maintainers: SS and MK<br />
<br />
== Euter/Ester ==<br />
The C++-layer providing a representation of neuronal network descriptions (generated by PyHMF) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== Marocco ==<br />
The translation layer which converts abstract neuronal networks into a hardware bit stream (i.e. a valid hardware configuration) -- used for BrainScaleS hardware.<br />
Maintainers: ECM, SS<br />
<br />
== StHALbe, hicann-system ==<br />
StHAL, HALbe and hicann-system are the hardware access layers -- used for BrainScaleS hardware.<br />
Maintainers: ECM, CK<br />
<br />
== SpikeyHAL ==<br />
Spikey hardware access layer.<br />
Maintainers: TP (backup: AG or ECM)<br />
<br />
== HostARQ ==<br />
The communication protocol stack for communication between the BrainScaleS hardware (FCP FPGAs) and host computers.<br />
Maintainers: ECM, CM<br />
<br />
== ESS ==<br />
The Executable System Specification is a BrainScaleS hardware simulator.<br />
Originally developed as a chip verification software by AG, it evolved into a neuronal network simulator (by BV).<br />
Maintainer: BV, OB<br />
<br />
= Modeling Software Packages =<br />
<br />
== SBS ==<br />
Allows for simple creation and sampling of and with Boltzmann machines of PyNN neurons. See [[Tutorial]]<br />
Maintainer: OB<br />
<br />
TODO: Tutorial link is dead!</div>Sschmitt