• Stars
    star
    132
  • Rank 274,298 (Top 6 %)
  • Language
    F#
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SIMD enhanced Array operations

Build & test for dotnet 3.1, 5.0, 6.0

SIMDArray FSharp

SIMD and other Performance enhanced Array operations for F#

Example Usage

//Faster map

let array = [| 1 .. 1000 |]
let squaredArray = array |> Array.SIMD.map (fun x -> x*x) (fun x -> x*x)  

// Map and many other functions need one lambda to map the Vector<T>, 
// and one to handle any leftover elements if array is not divisible by 
// Vector<T>.Count. In the case of simple arithmetic operations they can
// often be the same as shown here. If you arrange your arrays such that 
// they will never have leftovers, or don't care how leftovers are treated 
// just pass a nop like so:

open SIMDArrayUtils

let array = [|1;2;3;4;5;6;7;8|]
let squaredArray = array |> Array.SIMD.map (fun x -> x*x) nop


// Some functions can be used just like the existing array functions but run faster
// such as create and sum:

let newArray = Array.SIMD.create 1000 5 //create a new array of length 1000 filled with 5
let sum = Array.SIMD.sum newArray

// The Performance module has functions that are faster and/or use less memory
// via other means than SIMD. Usually by relaxing ordering constraints or adding
// constraints to predicates:

let distinctElements = Array.Performance.distinctUnordered someArray
let filteredElements = Array.Performance.filterLessThan 5 someArray
let filteredElements = Array.Performance.filterSimplePredicate (fun x -> x*x < 100) someArray
Array.Performance.mapInPlace (fun x-> x*x) someArray

// The SIMDParallel module has parallelized versions of some of the SIMD operations:

let sum = Array.SIMDParallel.sum array
let map = Array.SIMDParallel.map (fun x -> x*x) array

// Two extensions are added to System.Threading.Tasks.Parallel, to enable Parallel.For loops
// with a stride length efficiently. They also have much less overhead. You can use them to roll your own 
// parallel SIMD functions, or any parallel operation that needs a stride length > 1

// Using:
// ForStride (fromInclusive : int) (toExclusive :int) (stride : int) (f : int -> unit)
// You can map each Vector in an array and store it in result
Parallel.ForStride 0 array.Length (Vector< ^T>.Count) 
        (fun i -> (vf (Vector< ^T>(array,i ))).CopyTo(result,i))

// Using:
// ForStrideAggreagate (fromInclusive : int) (toExclusive :int) (stride : int) (acc: ^T) (f : int -> ^T -> ^T) combiner
// You can sum or otherwise aggregate the elements of an array a Vector at a time, starting from an initial acc
let result = Parallel.ForStrideAggreagate 0 array.Length (Vector< ^T>.Count) Vector< ^T>(0)
					(fun i acc -> acc + (Vector< ^T>(array,i)))  
					(fun x acc -> x + acc)  //combines the results from each task into a final Vector that is returned

Notes

Only 64 bit builds are supported. Mono should work with 5.0+, but I have not yet tested it. Performance improvements will vary depending on your CPU architecture, width of Vector type, and the operations you apply. For small arrays the core libs may be faster due SIMD overhead. When measuring performance be sure to use Release builds with optimizations turned on.

Floating point addition is not associative, so results with SIMD operations will not be identical, though often they will be more accurate, such as in the case of sum, or average.

Upd: .NET 7.0 Basic Tests

// * Summary *

BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19044.1526 (21H2)
AMD Ryzen 7 3800X, 1 CPU, 16 logical and 8 physical cores
.NET SDK=7.0.100-preview.3.22179.4
  [Host]     : .NET 7.0.0 (7.0.22.17504), X64 RyuJIT DEBUG
  DefaultJob : .NET 7.0.0 (7.0.22.17504), X64 RyuJIT


|     Method |  Length |            Mean |         Error |        StdDev |   Gen 0 |   Gen 1 |   Gen 2 |   Allocated |
|----------- |-------- |----------------:|--------------:|--------------:|--------:|--------:|--------:|------------:|
|     ForSum |     100 |        98.78 ns |      0.533 ns |      0.473 ns |  0.0507 |       - |       - |       424 B |
| ForSumSIMD |     100 |        56.32 ns |      0.378 ns |      0.353 ns |  0.0507 |  0.0001 |       - |       424 B |
|        Dot |     100 |       157.32 ns |      0.672 ns |      0.629 ns |       - |       - |       - |           - |
|    DotSIMD |     100 |        19.59 ns |      0.121 ns |      0.107 ns |       - |       - |       - |           - |
|        Max |     100 |        55.57 ns |      0.146 ns |      0.129 ns |       - |       - |       - |           - |
|    MaxSIMD |     100 |        13.53 ns |      0.070 ns |      0.065 ns |       - |       - |       - |           - |
|      MaxBy |     100 |        60.37 ns |      0.163 ns |      0.153 ns |       - |       - |       - |           - |
|  MaxBySIMD |     100 |        20.06 ns |      0.063 ns |      0.056 ns |       - |       - |       - |           - |
|     ForSum |    1000 |       862.28 ns |      5.412 ns |      5.063 ns |  0.4807 |  0.0067 |       - |     4,024 B |
| ForSumSIMD |    1000 |       441.22 ns |      2.874 ns |      2.548 ns |  0.4809 |  0.0072 |       - |     4,024 B |
|        Dot |    1000 |     1,484.23 ns |      5.292 ns |      4.691 ns |       - |       - |       - |           - |
|    DotSIMD |    1000 |       162.66 ns |      1.095 ns |      0.971 ns |       - |       - |       - |           - |
|        Max |    1000 |       526.03 ns |      2.177 ns |      1.818 ns |       - |       - |       - |           - |
|    MaxSIMD |    1000 |        44.45 ns |      0.101 ns |      0.094 ns |       - |       - |       - |           - |
|      MaxBy |    1000 |       506.51 ns |      0.619 ns |      0.548 ns |       - |       - |       - |           - |
|  MaxBySIMD |    1000 |       139.48 ns |      0.126 ns |      0.106 ns |       - |       - |       - |           - |
|     ForSum | 1000000 | 1,642,884.15 ns | 32,686.799 ns | 52,783.087 ns | 93.7500 | 93.7500 | 93.7500 | 4,000,061 B |
| ForSumSIMD | 1000000 |   484,576.66 ns |  9,685.048 ns |  9,512.012 ns | 95.7031 | 95.7031 | 95.7031 | 4,000,055 B |
|        Dot | 1000000 | 1,468,907.49 ns |  6,495.111 ns |  5,070.956 ns |       - |       - |       - |           - |
|    DotSIMD | 1000000 |   160,549.66 ns |    277.915 ns |    232.071 ns |       - |       - |       - |           - |
|        Max | 1000000 |   485,969.64 ns |    565.230 ns |    501.061 ns |       - |       - |       - |           - |
|    MaxSIMD | 1000000 |    48,748.71 ns |     72.373 ns |     67.698 ns |       - |       - |       - |           - |
|      MaxBy | 1000000 |   490,922.69 ns |    563.828 ns |    470.822 ns |       - |       - |       - |           - |
|  MaxBySIMD | 1000000 |   135,049.15 ns |     57.546 ns |     51.013 ns |       - |       - |       - |           - |


Performance Comparison vs Standard Array Functions

Host Process Environment Information:
BenchmarkDotNet=v0.9.8.0
OS=Microsoft Windows NT 6.2.9200.0
Processor=Intel(R) Core(TM) i7-4712HQ CPU 2.30GHz, ProcessorCount=8
Frequency=2240907 ticks, Resolution=446.2479 ns, Timer=TSC
CLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
GC=Concurrent Workstation
JitModules=clrjit-v4.6.1590.0

Type=SIMDBenchmark  Mode=Throughput  Platform=X64  
Jit=RyuJit  GarbageCollection=Concurrent Workstation  

Sum 1 million 32bit ints, ParallelSIMD vs SIMD vs Core Lib

Method Length Median StdDev Scaled Gen 0 Gen 1 Gen 2 Bytes Allocated/Op
sum 1000000 979.9477 us 15.4036 us 1.00 - - 1.00 14,967.09
SIMDsum 1000000 163.5663 us 2.7872 us 0.17 - - 0.17 1,960.97
SIMDParallelsum 1000000 82.3069 us 6.4637 us 0.08 3.74 - 0.04 1,674.94

With 32bit Floats Vs Core Lib. Map function (fun x -> x*x)

Method Length Median StdDev Gen 0 Gen 1 Gen 2 Bytes Allocated/Op
SIMDContains 10 32.3354 ns 0.0933 ns 0.04 - - 22.80
Contains 10 13.0234 ns 0.6457 ns - - - 0.00
SIMDMap 10 37.3615 ns 0.0693 ns 0.09 - - 53.95
Map 10 15.6651 ns 0.2422 ns 0.04 - - 25.80
SIMDSum 10 19.3450 ns 0.1866 ns - - - 0.00
Sum 10 6.2273 ns 0.2982 ns - - - 0.00
SIMDMax 10 20.8972 ns 0.7380 ns - - - 0.00
Max 10 7.9275 ns 0.9701 ns - - - 0.00
SIMDContains 100 61.6295 ns 5.0472 ns 0.04 - - 24.92
Contains 100 140.9920 ns 2.4739 ns - - - 0.01
SIMDMap 100 75.8733 ns 0.5875 ns 0.33 - - 192.40
Map 100 120.3029 ns 0.4232 ns 0.29 - - 172.39
SIMDSum 100 32.0058 ns 1.1225 ns - - - 0.00
Sum 100 77.6100 ns 2.4902 ns - - - 0.00
SIMDMax 100 35.9042 ns 2.0587 ns - - - 0.00
Max 100 92.1754 ns 9.6637 ns - - - 0.00
SIMDContains 1000 417.0760 ns 10.6672 ns - - - 0.04
Contains 1000 1,333.0239 ns 11.8959 ns - - - 0.07
SIMDMap 1000 439.8549 ns 7.5810 ns 3.05 - - 2,176.91
Map 1000 1,073.2894 ns 16.1444 ns 2.93 - - 2,086.24
SIMDSum 1000 162.8308 ns 5.8158 ns - - - 0.01
Sum 1000 947.1124 ns 14.4370 ns - - - 0.07
SIMDMax 1000 167.0257 ns 5.3584 ns - - - 0.01
Max 1000 698.2252 ns 21.2244 ns - - - 0.03
SIMDContains 1000000 427,765.2001 ns 3,541.8344 ns - - 0.23 7,507.17
Contains 1000000 1,315,198.8375 ns 19,634.6409 ns - - 0.36 14,912.24
SIMDMap 1000000 1,747,002.9295 ns 18,219.0807 ns - - 519.18 1,198,305.57
Map 1000000 1,962,408.1761 ns 23,319.8186 ns - - 746.00 1,702,687.72
SIMDSum 1000000 160,972.7015 ns 3,359.1696 ns - - 0.05 1,960.97
Sum 1000000 955,224.0942 ns 12,365.7613 ns - - 0.38 14,853.87
SIMDMax 1000000 158,835.3746 ns 3,773.1697 ns - - 0.06 1,961.66
Max 1000000 633,761.7634 ns 6,149.8767 ns - - 0.24 7,495.76

With 64bit Floats vs Core Lib. Map function (fun x -> x*x+x)

Method Length Median StdDev Gen 0 Gen 1 Gen 2 Bytes Allocated/Op
SIMDContains 1000 842.2604 ns 36.6615 ns - - - 0.13
Contains 1000 1,338.2032 ns 21.7835 ns - - - 0.13
SIMDSum 1000 302.8986 ns 12.0417 ns - - - 0.03
Sum 1000 953.9314 ns 7.3770 ns - - - 0.13
SIMDMax 1000 302.3690 ns 11.8064 ns - - - 0.03
Max 1000 713.9227 ns 23.1721 ns - - - 0.07
SIMDMap 1000 905.3396 ns 21.1726 ns 2.79 - - 4,447.68
Map 1000 1,369.6668 ns 17.1072 ns 2.88 - - 4,591.74
SIMDContains 100000 86,987.0417 ns 212.5612 ns - - - 204.08
Contains 100000 129,737.5287 ns 2,300.6178 ns - - - 398.91
SIMDSum 100000 30,836.7527 ns 52.3596 ns - - - 103.84
Sum 100000 97,310.6367 ns 444.7469 ns - - - 203.88
SIMDMax 100000 30,755.6959 ns 189.2460 ns - - - 103.84
Max 100000 65,190.8396 ns 810.8605 ns - - - 203.88
SIMDMap 100000 250,263.5686 ns 23,822.3931 ns - - 351.03 384,182.34
Map 100000 239,693.9435 ns 20,283.1824 ns - - 350.24 383,399.62
SIMDContains 1000000 952,116.9191 ns 22,885.3666 ns - - 0.17 29,960.47
Contains 1000000 1,469,353.0761 ns 44,872.5327 ns - - 0.15 28,150.78
SIMDSum 1000000 493,523.5731 ns 6,629.8292 ns - - 0.12 15,020.79
Sum 1000000 1,059,862.2497 ns 21,029.2608 ns - - 0.17 29,921.97
SIMDMax 1000000 486,232.3883 ns 3,963.6126 ns - - 0.11 15,080.61
Max 1000000 771,554.3061 ns 7,083.0659 ns - - 0.12 15,008.20
SIMDMap 1000000 3,625,255.0307 ns 40,939.9131 ns - - 439.00 3,763,516.65
Map 1000000 3,490,854.2334 ns 51,255.2300 ns - - 413.00 3,589,365.95

With 32bit Floats vs MathNET.Numerics managed. Map function (fun x -> x*x+x)

Method Length Median StdDev Gen 0 Gen 1 Gen 2 Bytes Allocated/Op
SIMDMapInPlace 100 46.5269 ns 4.9229 ns 0.08 - - 22.54
MathNETMapInPlace 100 354.0866 ns 7.5375 ns 0.36 - - 99.59
SIMDSum 100 32.0283 ns 2.9529 ns - - - 0.00
MathNETSum 100 88.7532 ns 1.9561 ns - - - 0.00
SIMDMapInPlace 1000 165.7885 ns 9.0778 ns - - - 0.01
MathNETMapInPlace 1000 3,057.9378 ns 56.8845 ns 0.30 - - 94.64
SIMDSum 1000 163.1672 ns 6.7001 ns - - - 0.01
MathNETSum 1000 962.2084 ns 13.9839 ns - - - 0.12
SIMDMapInPlace 100000 21,078.0491 ns 627.8978 ns - - - 56.61
MathNETMapInPlace 100000 104,831.7547 ns 8,823.8473 ns 5.26 - - 2,267.50
SIMDSum 100000 15,134.0240 ns 708.8177 ns - - - 46.02
MathNETSum 100000 97,051.7780 ns 875.9276 ns - - - 217.82
SIMDMapInPlace 1000000 220,760.2212 ns 7,167.1597 ns - - 0.46 7,402.18
MathNETMapInPlace 1000000 824,388.9221 ns 47,134.8321 ns - - 1.87 33,210.67
SIMDSum 1000000 159,887.6959 ns 5,030.3486 ns - - 0.18 3,433.93
MathNETSum 1000000 967,761.7422 ns 17,557.1206 ns - - 2.00 29,450.93

With 32bit Floats vs MathNET.Numerics MKL Native. Adding two arrays

Method Length Median StdDev Gen 0 Gen 1 Gen 2 Bytes Allocated/Op
SIMDMap2 100 92.1515 ns 3.0304 ns 2.70 - - 212.76
MathNETAdd 100 156.7522 ns 7.3969 ns 2.92 - - 230.42
SIMDMap2 1000 493.5448 ns 8.1340 ns 21.40 - - 2,048.32
MathNETAdd 1000 444.0753 ns 5.9375 ns 20.12 - - 1,553.56
SIMDMap2 100000 161,024.7782 ns 24,704.0627 ns - - 2,348.29 197,602.33
MathNETAdd 100000 155,985.3149 ns 1,478.0502 ns - - 1,755.36 155,754.29
SIMDMap2 1000000 2,024,351.2170 ns 242,101.0167 ns - - 3,317.76 2,025,584.78
MathNETAdd 1000000 1,551,270.9391 ns 216,545.6630 ns - - 2,466.00 1,693,319.93

More Repositories

1

Paket

A dependency manager for .NET with support for NuGet packages and Git repositories.
F#
2,019
star
2

FAKE

FAKE - F# Make
F#
1,279
star
3

awesome-fsharp

A curated list of awesome F# frameworks, libraries, software and resources.
1,194
star
4

Avalonia.FuncUI

Develop cross-plattform GUI Applications using F# and Avalonia!
F#
952
star
5

FSharpPlus

Extensions for F#
F#
845
star
6

FSharp.Data

F# Data: Library for Data Access
F#
813
star
7

fantomas

FSharp source code formatter
F#
772
star
8

FSharpx.Extras

Functional programming and other utilities from the original "fsharpx" project
F#
683
star
9

Rezoom.SQL

Statically typechecks a common SQL dialect and translates it to various RDBMS backends
F#
670
star
10

SQLProvider

A general F# SQL database erasing type provider, supporting LINQ queries, schema exploration, individuals, CRUD operations and much more besides.
F#
578
star
11

ProjectScaffold

A prototypical .NET solution (file system layout and tooling), recommended for F# projects
F#
517
star
12

FSharp.Formatting

F# tools for generating documentation (Markdown processor and F# code formatter)
F#
464
star
13

Argu

A declarative CLI argument parser for F#
F#
454
star
14

FsHttp

A lightweight F# HTTP library by @SchlenkR and @dawedawe
F#
445
star
15

IfSharp

F# for Jupyter Notebooks
Jupyter Notebook
442
star
16

FsUnit

FsUnit makes unit-testing with F# more enjoyable. It adds a special syntax to your favorite .NET testing framework.
F#
425
star
17

FSharp.Data.GraphQL

FSharp implementation of Facebook GraphQL query language.
F#
399
star
18

fsharp-companies

Community curated list of companies that use F#
385
star
19

fsharp-cheatsheet

This cheatsheet aims to succinctly cover the most important aspects of F# 6.0.
F#
328
star
20

zarchive-fsharpbinding

Archive of F# Language Bindings for Open Editors
Emacs Lisp
308
star
21

FSharpLint

Lint tool for F#
F#
303
star
22

pulsar-client-dotnet

Apache Pulsar native client for .NET (C#/F#/VB)
F#
301
star
23

FSharp.TypeProviders.SDK

The SDK for creating F# type providers
F#
298
star
24

FSharp.Control.Reactive

Extensions and wrappers for using Reactive Extensions (Rx) with F#.
F#
284
star
25

SwaggerProvider

F# generative Type Provider for Swagger
F#
264
star
26

FsReveal

FsReveal parses markdown and F# script file and generates reveal.js slides.
F#
258
star
27

FSharp.Data.Adaptive

On-demand adaptive/incremental data for F# https://fsprojects.github.io/FSharp.Data.Adaptive/
F#
249
star
28

FSharpx.Collections

FSharpx.Collections is a collection of datastructures for use with F# and C#.
F#
247
star
29

FSharp.Json

F# JSON Reflection based serialization library
F#
226
star
30

fsharp-language-server

F#
219
star
31

fsharp-ai-tools

TensorFlow API for F# + F# for AI Models eDSL
F#
213
star
32

FsLexYacc

Lexer and parser generators for F#
F#
207
star
33

FSharp.Data.SqlClient

A set of F# Type Providers for statically typed access to MS SQL database
F#
205
star
34

Fleece

Json mapper for F#
F#
199
star
35

ExcelFinancialFunctions

.NET Standard library providing the full set of financial functions from Excel.
F#
194
star
36

Chessie

Railway-oriented programming for .NET
F#
187
star
37

FsXaml

F# Tools for working with XAML Projects
F#
172
star
38

FSharp.UMX

F# units of measure for primitive non-numeric types
F#
162
star
39

FSharp.Control.AsyncSeq

Asynchronous sequences for F#
F#
161
star
40

Paket.VisualStudio

Manage your Paket (http://fsprojects.github.io/Paket/) dependencies from Visual Studio!
C#
147
star
41

ExcelProvider

This library is for the .NET platform implementing a Excel type provider.
F#
141
star
42

TickSpec

Lean .NET BDD framework with powerful F# integration
F#
134
star
43

FsBlog

Blog aware, static site generation using F#.
CSS
132
star
44

FSharp.Configuration

The FSharp.Configuration project contains type providers for the configuration of .NET projects.
F#
114
star
45

FSharp.Interop.Dynamic

DLR interop for F# -- works like dynamic keyword in C#
F#
95
star
46

FSharpx.Async

Asynchronous programming utilities for F#
F#
94
star
47

FSharp.Control.TaskSeq

A computation expression and module for seamless working with IAsyncEnumerable<'T> as if it is just another sequence
F#
93
star
48

FSharp.Management

The FSharp.Management project contains various type providers for the management of the machine.
F#
91
star
49

AzureStorageTypeProvider

An F# Azure Type Provider which can be used to explore Blob, Table and Queue Azure Storage assets and easily apply CRUD operations on them.
F#
84
star
50

Foq

A unit testing framework for F#
F#
79
star
51

FSharp.Azure.Storage

F# API for using Microsoft Azure Table Storage service
F#
75
star
52

FSharp.ViewModule

Library providing MVVM and INotifyPropertyChanged support for F# projects
F#
74
star
53

FSharp.Text.RegexProvider

A type provider for regular expressions.
F#
74
star
54

Incremental.NET

A library for incremental computations. Based on janestreet/incremental (https://github.com/janestreet/incremental) for OCaml.
F#
72
star
55

FSharp.Core.Fluent

Fluent members for F# FSharp.Core functions
F#
71
star
56

Mechanic

F#
68
star
57

FSharp.Collections.ParallelSeq

Parallel (multi-core) sequence operations
F#
68
star
58

FSharp.Quotations.Evaluator

A quotations evaluator/compiler for F# based on LINQ expression tree compilation
F#
68
star
59

FSharp.Linq.ComposableQuery

Compositional Query Framework for F# Queries, based on "A Practical Theory of Language-Integrated Query"
F#
67
star
60

OpenAPITypeProvider

F# type provider for Open API specification
F#
65
star
61

fsharp-hashcollections

Library providing fast hash based immutable map and set
F#
60
star
62

FSharp.AWS.DynamoDB

F# wrapper API for AWS DynamoDB
F#
58
star
63

FSharp.Data.Toolbox

F# Data-based library for various data access APIs
F#
57
star
64

DynamoDb.SQL

SQL-like external DSL for querying and scanning Amazon DynamoDB
F#
54
star
65

FsRandom

A purely-functional random number generator framework designed for F#
F#
52
star
66

Z3Fs

Simple DSL to solve SMT problems using Z3 API in F#
F#
52
star
67

FSharp.Data.JsonSchema

F#
49
star
68

fantomas-for-vs

Visual Studio Formatter for F#
HTML
46
star
69

SyntacticVersioning

Helper tool to verify semantic version changes based on API surface area changes
F#
45
star
70

FSharp.Compatibility

Compatibility libraries for F#
F#
44
star
71

Interstellar

Cross-platform desktop apps in F# using web tech - https://www.nuget.org/packages/Interstellar.Core/
F#
43
star
72

FSharp.Interop.PythonProvider

Early experimental F# type provider for python
F#
42
star
73

FSharp.Compiler.PortaCode

The PortaCode F# code format and corresponding interpreter. Used by Fabulous and others.
F#
42
star
74

FSharp.CloudAgent

Allows running F# Agents in a distributed manner using Azure Service Bus.
F#
39
star
75

FSharp.Data.TypeProviders

F# Type Providers for SqlDataConnection, SqlEntityConnection, ODataService, WsdlService and EdmxFile using .NET Framework generators
F#
38
star
76

Roslyn.FSharp

Roslyn read-only API to work with F# code (via bridge to FSharp.Compiler.Service)
F#
37
star
77

FnuPlot

An F# wrapper for gnuplot charting library
F#
35
star
78

GraphProvider

A state machine type provider
F#
35
star
79

FSharp.Span.Utils

Makes Span/ReadOnlySpan easy to use from F#.
F#
34
star
80

fantomas-tools

Collection of tools used when developing for Fantomas
F#
34
star
81

fsharp-linting-for-vs

Visual Studio Linter for F#
C#
33
star
82

LocSta

An F# library for composing state-aware functions by @SchlenkR
JavaScript
33
star
83

FSharp.Data.Xsd

XML Type Provider with schema support
F#
32
star
84

zarchive-sublime-fsharp-package

F# development tools for SublimeText 3
Python
32
star
85

.github

The place to request for projects to be added or removed from the incubation space
28
star
86

zarchive-xamarin-monodevelop-fsharp-addin

(No longer Used) F# Editing Support In MonoDevelop and Xamarin Studio
F#
27
star
87

Zander

Regular expression for matrix information. I.e. parse structured blocks of information from csv or excel files (or similar 2d matrixes)
F#
27
star
88

FSharp.Compiler.CodeDom

An F# CodeDOM implementation (based on the old F# Power Pack)
F#
25
star
89

BioProviders

F# library for accessing and manipulating bioinformatic datasets.
F#
24
star
90

ReasoningEngine

Symbolic analysis of discrete dynamical systems
F#
24
star
91

FSharp.Data.WsdlProvider

An implementation of the WsdlProvider compatible with netfx and netcore
F#
24
star
92

FsMath3D

F# 3D Math Library for realtime applications
F#
22
star
93

S3Provider

Experimental type provider for Amazon S3
F#
22
star
94

FSharpPerf

A set of performance test scripts for the F# compiler.
F#
20
star
95

MarkerClustering

A component to cluster map markers.
F#
19
star
96

DynamicsCRMProvider

A type provider for Microsoft Dynamics CRM 2011.
F#
16
star
97

Amazon.SimpleWorkflow.Extensions

Extensions to AmazonSDK's SimpleWorkflow capabilities to make it more intuitive to use
F#
16
star
98

Canopy.Mobile

Canopy testing framework for mobile apps
F#
14
star
99

LSON

Lisp inspired serialization (intended for when you don't even want to take a dependency on JSON serializer)
F#
14
star
100

FSharp.Codecs.Redis

FSharp redis codecs based on Fleece patterns
F#
13
star