In the previous post I spoke briefly about motivations for implementing self-organizing maps in F# using GPU with CUDA. I have finally been able to outperform a single threaded C++ implementation by a factor of about 1.5. This is quite modest, but on the other hand rather impressive since we started out by being 60 … Continue reading Computing Self-Organizing Maps in a Massively Parallel Way with CUDA. Part 2: Algorithms
Author: fierval
Computing Self-Organizing Maps in a Massively Parallel Way with CUDA. Part 1: F#
By 2017, it is expected that GPUs will no longer be an external accelerator to a CPU; instead, CPUs and GPUs will be integrated on the same die with a unified memory architecture. Such a system eliminates some of accelerator architectures’ historical challenges, including requiring the programmer to manage multiple memory spaces, suffering from bandwidth … Continue reading Computing Self-Organizing Maps in a Massively Parallel Way with CUDA. Part 1: F#
Visualizing Crime with d3: Hooking up Data and Colors, Part 2
In the previous post, we derived a class from BubbleChart and this got us started on actually visualizing some meaningful data using bubbles. There are a couple of things to iron out before a visual can appear. Color Schemes I am using Cynthia Brewer color schemes, available for download in colorbrewer.css. This file is available … Continue reading Visualizing Crime with d3: Hooking up Data and Colors, Part 2
Visualizing Crime with d3: How to Make Bubbles and Influence People, Part 1
Previously: Visualizing Crime with d3: Intro Data and Visualization In order to make a bubble chart in d3 (the one similar to the Obama Budget 2013), using CoffeeScript, you need to: Download a few files from my git hub (you'll need coffee/BubbleChartSingle.coffee, css/visuals.css, css/colorbrewer.css) Define a class in a .coffee file: I also define a couple of … Continue reading Visualizing Crime with d3: How to Make Bubbles and Influence People, Part 1
F# vs C#. Fold and Aggregate
Suppose you need to write a script that finds n files, all called based on some pattern, say "c:\temp\my_file_x.txt", where "x" is replaced by a range of numbers [1..30] for instance, reads the content of these files and glues them together. Suppose also that the files are very small, so you can keep them in … Continue reading F# vs C#. Fold and Aggregate
Data and Visualization.
As the three of us embarked on this new data-mining project, we were the data scientist, the manager and the developer, who knew nothing about visualizations. We didn't even want to do any visuals at first. Then someone stumbled across the New York Times Obama Budget visual and the wheels started spinning. Pretty soon we … Continue reading Data and Visualization.
Visualizing Crime with d3: Intro
Figure a blog without pictures or conversations is just boring, so, here it is. Lately, I have been dealing a lot with data visualization. This was a brand new area for me and while we do use F# for data extraction, all of the front end is done using d3, an amazing toolkit by Mike … Continue reading Visualizing Crime with d3: Intro
Disposable Objects with Computation Expressions
The last post contains the description of a sqlMonad. It also happens to contain a silly and obvious (aren't they all in hindsight) bug. The bug is in implementing the containing CmdSqlBuilder with the IDisposable. While the intent was good (the class wraps resources that should be promptly disposed of - SqlCommand and SqlConnection): there … Continue reading Disposable Objects with Computation Expressions
Exploring Monadic Landscape: Sql Command Computation Expression
Most of the developers have dealt with calling SQL server stored procedures from their applications at least once or twice. In my last project, where intense data mining is done on the SQL side, this is basically all I am doing. There is always a desire to wrap and abstract the ever-repetitive code to get … Continue reading Exploring Monadic Landscape: Sql Command Computation Expression
Retry Monad: An Implementation
One application that seems quite intuitively to be a good case for "monadization" is that of retrying a function call upon an exception that is thrown while executing it. This may be needed for inherently unreliable operations, dependent on a network connection, for example. Discussions of this can be easily found. Here is one on … Continue reading Retry Monad: An Implementation