Slight update on parallel processing

I’ve written previously on parallel programming; once on APIs, and twice on smaller hardware implementations (1) (2). As is bound to happen, I missed some, made some mistakes, and the world moved on.

You’ll be glad to know all the major PLD developers offer gratis synthesis tools now, including Xilinx, Altera, Lattice and Actel (now MicroSemi). The latter two don’t have their own tools, though, which complicates matters a bit; the software vendors insist on tacking on sabotage systems like FlexLM, some options are time restricted, and even from the big two support for the largest chips isn’t included – but then, those require a hefty budget in the first place. That’s why I haven’t bought a Lattice ECP3 kit already; the software is only covered for a few months, after which it costs as much every year as the kit did in the first place. And that’s a low cost one.

OpenCL is alive and well, with company backed implementations from Apple, AMD, nVidia, Intel, IBM, S3/VIA and Zii Labs, and properly free software in pocl (Portable OpenCL) and Clover (for Gallium 3D). Admittedly the quality of these may vary, but it’s great to see it moving into budget devices (S3/VIA), non-GPU systems (Intel, AMD, pocl) and even low-power mobile devices (Zii Labs).

Speaking of Zii Labs, you may recall my negative comments regarding their blatant lies in marketing. They seem to have moved on (I don’t even find those materials now), as there are now some details (extremely little, but some), devices exist (although very few), and with OpenCL support (albeit in a restricted beta they haven’t replied to my inquiry about) their processing arrays become usable with portable code. I really hope they launch a good device this year, because the old ZiiO tablet isn’t quite worth the asking price where I live.

I’m still very annoyed when companies lie at me instead of presenting their products. One of the devices recently brought to my attention, Venray Technology’s TOMI, suffers from this. At its core, it’s a low instruction set computer with tightly coupled DRAM. It’s not a parallel processor at all, but the design is aimed at systems with multiple chips. It features four memory access units (including the instruction fetcher), eight general purpose registers, and one operation unit (with ARM-like preshifting in front of an ALU). It’s interesting in that it tries to deal with the memory bandwidth limited processing by distributing the processors (calling it a CPU would be way off). But the front and center marketing is, simply put, bullshit. Stop lying to your prospective customers.

I’d also failed to remember Ubicom in my list of parallel chips. It appears to be a barrel processor much like the XMOS ones, but in a higher end system on chip with ready designs for routers and an “internet radio” player. They’ve stayed away from video, however, so it’s perhaps not that remarkable in actual performance; more likely the architecture helps with responsiveness.

More unsorted Android addons

I’m sure everybody’s collection grows as time goes by, but I thought I’d note down a few more tools I’ve come across – mostly because for some, there are so many options it’s actual work to try them out, and it’s a pain to have to customize one just to find another did the job better.

A fundamental annoyance with phones is how they track a lot of information about their environs only to not use it to assist me. For instance, they are constantly connecting to cell stations, which gives them their approximate location, but mapping it to a location takes an extra database lookup. And while most wifi networks we use stay put, we normally can’t associate them with locations. Enter tools like Llama. It lets me define things like times to keep the phone quiet, to turn wifi off when I’m out of range to save battery, or even turn alarms off based on calendar events. There are other similar tools, like Tasker and Profiles, but Llama was free and works nicely. If I were to request an improvement, it would be an idea I’ve had for a long time – associate the areas with travel time between them, and use that to adjust reminders.

Also on a related note, telephony is fundamentally timing sensitive, yet for some reason the current time and date are not set on phones – even when they have multiple sources. My carrier doesn’t seem to send calendar time on GSM, but what gives with not having the option to set the time from GPS? Anyhow, ClockSync let me set time from NTP, although doing it automatically requires root.

A less security oriented machine I was supposed to log in to remotely uses VNC. The simple pick for a viewer was android-vnc-viewer, which I would have found a lot faster had I not first searched for “remote desktop”.

When I looked up PwdHash again, a tool for having unique passwords for every website without needing to either memorize or store them all, I found that there are multiple implementations for Android. The one I settled on is Password Hash, because it has published source, properly avoids any Android privileges (so you know it’s not sending your passwords elsewhere), and the resulting hash can be read off the screen. That last thing is not so good if someone else can see, of course, but it means you can use it together with other machines you don’t trust with your master password(s). Within the Android browser, the page sharing feature is used to call up the hasher with the site filled in, and you can paste the hash.

I went looking for a different launcher mostly because I find it annoying that the layout has the same grid size no matter how the screen is oriented in ADW Launcher. I did not find one that fixed that. I did however find a tool to reduce the pointless wait in task swapping. Normally, you have to long-press home, and the most recent apps list fades in slowly. With SwipePad, you can swipe from the edge of the screen to launch pretty much anything – although making it aware of what programs are running takes a modestly priced add-on. If you find yourself demanding multiple of those addons, perhaps Power Strip or Wave Launcher is a better option.

I’ve also added a few network tools, like AndFTP (which does file transfers with a bunch of protocols) and Fing (which is a more general network toolbox starting with a scanner like nmap), but I haven’t actually had much use or need for them yet. They were suggested by AppBrain, a service for cataloguing Android software slightly better than the Market – albeit only slightly. For instance, I can filter on free apps, but not ad-free ones.

Piano Booster

I rather like performing games like SingStar or Performous, but what they can teach you is in general rather limited. Most of your technique will be based on practice, and with things like Rock Band, that’s not going to be much good because the instruments aren’t really playable (though Band Hero’s drum set comes closer, being a MIDI set). In addition, they tend to use a simplification of the standard notation.

Recently I came across an exception. Piano Booster plays common MIDI files and expects you to play along with a MIDI instrument; I’d encountered keyboard specific ones before, but this time is uses standard notation. In addition, the difficulty is much more tunable than I’ve seen elsewhere – you can choose what track to play, adjust tempo and transpose, restrict hands (for piano) and even get it to pause the music until you get the chords right. In short, it’s more of a trainer than a game, and a competent one at that. For more details, check their website.

(Found, like many of the things I hear about, via Debian.)