Results 1 to 16 of 16

Thread: Mono 2.0 released - for most of your .NET needs

  1. #1
    Comfortably Numb directhex's Avatar
    Join Date
    Jul 2003
    Location
    /dev/urandom
    Posts
    17,074
    Thanks
    228
    Thanked
    1,027 times in 678 posts
    • directhex's system
      • Motherboard:
      • Asus ROG Strix B550-I Gaming
      • CPU:
      • Ryzen 5900x
      • Memory:
      • 64GB G.Skill Trident Z RGB
      • Storage:
      • 2TB Seagate Firecuda 520
      • Graphics card(s):
      • EVGA GeForce RTX 3080 XC3 Ultra
      • PSU:
      • EVGA SuperNOVA 850W G3
      • Case:
      • NZXT H210i
      • Operating System:
      • Ubuntu 20.04, Windows 10
      • Monitor(s):
      • LG 34GN850
      • Internet:
      • FIOS

    Mono 2.0 released - for most of your .NET needs

    http://www.mono-project.com/Release_Notes_Mono_2.0

    Mono-sourced (but MS.NET-capable) libs include:
    • GTK# 2.12, a binding to version 2.12 of the cross-platform GTK+ GUI library (works on Mac, Windows, Linux)
    • Mono.Cecil, an advanced enhanced too to do all the things you wish System.Reflection did
    • Mono.Cairo, a binding to the Cairo vector graphics library
    • Mono.Data.SqliteClient, an ADO.NET connector for the serverless file-based SQLite database
    • Mono.Posix, bindings to UNIX/Linux/Mac-specific functionality, with some limited compatibility provided on Windows platforms via MonoPosixHelper.dll (e.g. used for gettext-based i18n)


    Snazzy features include:
    • C# 3.0 compiler including LINQ
    • VB.NET compiler
    • Debugger
    • Gendarme - automated scanner for coding errors
    • "Managed" C++ execution support (Windows Only)
    • DTrace support (MacOS & Solaris only)
    • Greatly improved System.Windows.Forms support, including WebBrowser
    • 64-bit indexed arrays, a ECMA335 feature even MS.NET lacks (64-bit non-Windows only)


    Go on then, give .NET a shot, whatever your favourite OS

  2. #2
    Seething Cauldron of Hatred TheAnimus's Avatar
    Join Date
    Aug 2005
    Posts
    17,168
    Thanks
    803
    Thanked
    2,152 times in 1,408 posts

    Re: Mono 2.0 released - for most of your .NET needs

    Cecil is rather cool because you can just play about with your assemblies in a much more liberated fashion, this i hope will lead to some even better IoC type ideas.

    For a quick intro (its old thou) check:
    http://www.codeproject.com/KB/dotnet...lChapter1.aspx


    A thing to watch is this is already been leveraged in some cool projects:
    http://www.codeproject.com/KB/library/AOPLibrary.aspx

    (but a side note, you really really shouldn't be using CLI::Array for something that's getting even close to 8GB, even on the HPC .Net i do thats waaay out!)
    throw new ArgumentException (String, String, Exception)

  3. #3
    Comfortably Numb directhex's Avatar
    Join Date
    Jul 2003
    Location
    /dev/urandom
    Posts
    17,074
    Thanks
    228
    Thanked
    1,027 times in 678 posts
    • directhex's system
      • Motherboard:
      • Asus ROG Strix B550-I Gaming
      • CPU:
      • Ryzen 5900x
      • Memory:
      • 64GB G.Skill Trident Z RGB
      • Storage:
      • 2TB Seagate Firecuda 520
      • Graphics card(s):
      • EVGA GeForce RTX 3080 XC3 Ultra
      • PSU:
      • EVGA SuperNOVA 850W G3
      • Case:
      • NZXT H210i
      • Operating System:
      • Ubuntu 20.04, Windows 10
      • Monitor(s):
      • LG 34GN850
      • Internet:
      • FIOS

    Re: Mono 2.0 released - for most of your .NET needs

    Quote Originally Posted by TheAnimus View Post
    Cecil is rather cool because you can just play about with your assemblies in a much more liberated fashion, this i hope will lead to some even better IoC type ideas.

    For a quick intro (its old thou) check:
    http://www.codeproject.com/KB/dotnet...lChapter1.aspx


    A thing to watch is this is already been leveraged in some cool projects:
    http://www.codeproject.com/KB/library/AOPLibrary.aspx
    It's undoubtedly very cool, and it's how the MoMA (app which scans a bunch of assemblies & reports on cross-platform-readiness) works. Unfortunately, it's a lot slower than System.Reflection.

    (but a side note, you really really shouldn't be using CLI::Array for something that's getting even close to 8GB, even on the HPC .Net i do thats waaay out!)
    I dunno, I'd disagree, especially in an HPC context as you suggest. A lot of traditional HPC can be boiled down to matrix-matrix multiplication, which is basically just banging arrays together. And we're talking big data sets here (20GiB F77/C arrays are not uncommon). If people could move from archaic crap like F77 but keep the magnitude of their problems going, then I can only see that as a good thing

    And if MS didn't think it was a good idea, why's it in the CLI spec?

  4. #4
    Seething Cauldron of Hatred TheAnimus's Avatar
    Join Date
    Aug 2005
    Posts
    17,168
    Thanks
    803
    Thanked
    2,152 times in 1,408 posts

    Re: Mono 2.0 released - for most of your .NET needs

    i'm not saying the framework shouldn't have support for it, just that its a bad idea to use its current guise.

    System::Array is implemented contiguously in memory. Which is silly, i've yet to see an architecture that welcomes you to needlessly allocate more than 1 page. (ok say you've got amazing precaching, but even then, we're in meg terirtory).

    So until the systems get better. Its a no no.

    (and lets not talk about the fragementation issues of the Large object heap!)
    throw new ArgumentException (String, String, Exception)

  5. #5
    Comfortably Numb directhex's Avatar
    Join Date
    Jul 2003
    Location
    /dev/urandom
    Posts
    17,074
    Thanks
    228
    Thanked
    1,027 times in 678 posts
    • directhex's system
      • Motherboard:
      • Asus ROG Strix B550-I Gaming
      • CPU:
      • Ryzen 5900x
      • Memory:
      • 64GB G.Skill Trident Z RGB
      • Storage:
      • 2TB Seagate Firecuda 520
      • Graphics card(s):
      • EVGA GeForce RTX 3080 XC3 Ultra
      • PSU:
      • EVGA SuperNOVA 850W G3
      • Case:
      • NZXT H210i
      • Operating System:
      • Ubuntu 20.04, Windows 10
      • Monitor(s):
      • LG 34GN850
      • Internet:
      • FIOS

    Re: Mono 2.0 released - for most of your .NET needs

    Tee hee, cute. The "csharp" shell, a clever & functional c# scripting environment which will ship as part of Mono 2.2 in December, is being cloned as an official C# 5.0 feature. in 2012.

  6. #6
    Seething Cauldron of Hatred TheAnimus's Avatar
    Join Date
    Aug 2005
    Posts
    17,168
    Thanks
    803
    Thanked
    2,152 times in 1,408 posts

    Re: Mono 2.0 released - for most of your .NET needs

    2012!! What?! How can it take that long, something like that should be able to be developed by a parallel team.

    Honestly, even the mono team copy MS ideas faster than that

    In all seriousness thou, i do hope the mono team make sure like they did with their cecil, that it will work fine if your environment is mostly MS offical, so you can almost isolate and silo the mono stuff. There is still this problem of I won't get fired for using MS stuff as part of my core foundation projects if it screws up. If I where to use something from a different vendor, and it messes up, i have to justify why it was sane and OK to use them for running of a multi-billion dollar fund.

    It is really quite bizzare thou, because you still get brownie points of oh your really on the ball when u mention technologies like CUDA (even thou you don't use them).
    throw new ArgumentException (String, String, Exception)

  7. #7
    Comfortably Numb directhex's Avatar
    Join Date
    Jul 2003
    Location
    /dev/urandom
    Posts
    17,074
    Thanks
    228
    Thanked
    1,027 times in 678 posts
    • directhex's system
      • Motherboard:
      • Asus ROG Strix B550-I Gaming
      • CPU:
      • Ryzen 5900x
      • Memory:
      • 64GB G.Skill Trident Z RGB
      • Storage:
      • 2TB Seagate Firecuda 520
      • Graphics card(s):
      • EVGA GeForce RTX 3080 XC3 Ultra
      • PSU:
      • EVGA SuperNOVA 850W G3
      • Case:
      • NZXT H210i
      • Operating System:
      • Ubuntu 20.04, Windows 10
      • Monitor(s):
      • LG 34GN850
      • Internet:
      • FIOS

    Re: Mono 2.0 released - for most of your .NET needs

    Quote Originally Posted by TheAnimus View Post
    2012!! What?! How can it take that long, something like that should be able to be developed by a parallel team.

    Honestly, even the mono team copy MS ideas faster than that
    Yeah, MS lack the rip-off-other-people skills of open source teams :/

    In all seriousness thou, i do hope the mono team make sure like they did with their cecil, that it will work fine if your environment is mostly MS offical, so you can almost isolate and silo the mono stuff. There is still this problem of I won't get fired for using MS stuff as part of my core foundation projects if it screws up. If I where to use something from a different vendor, and it messes up, i have to justify why it was sane and OK to use them for running of a multi-billion dollar fund.
    Almost all Mono technologies run in MS.NET. The shell is one exception - and one of the major problems is that whilst Mono's compiler is written in C# (and therefore easy to subclass etc), Microsoft's csc is C++ (so rather less embeddable in a managed app)

    It is really quite bizzare thou, because you still get brownie points of oh your really on the ball when u mention technologies like CUDA (even thou you don't use them).
    http://www.gass-ltd.co.il/en/products/cuda.net/

    Note: An absolute ****ing nightmare to program. Brahma on the other hand (LINQ to GPU wrapper) is neato

  8. #8
    Seething Cauldron of Hatred TheAnimus's Avatar
    Join Date
    Aug 2005
    Posts
    17,168
    Thanks
    803
    Thanked
    2,152 times in 1,408 posts

    Re: Mono 2.0 released - for most of your .NET needs

    i think this thread seams to be for us two only, so i'll go off topic and talk about the CUDA thing i was evaluating.

    As it stands a lot of what my HPC is doing is looking at a 'Time Series' (ie KeyValuePair<DateTime,double>). I'll have about 2 to 50 of these, first thing i have to do is get the Intersection of each.

    Each time serious will probably have 5,040 points. I then need to get the 'Log Return' of each (
    ie Math.Log(timeSeries[0]/timeSeries[1])) point.

    With this i then need to work out the Correlation or Coveraince of each pairwise combination, on each day going back a year say (252 points). Then work out the Variance of each point going back a year too.

    Then i do some simple 're-weighting' of each member, based on the above data. And guess what i re-generate!

    As if that wasn't exciting enough, we do this for every day in the series we can. At present i use the big cache Xeons, because the interchange of data is a few K it gave better 64bit .Net performance than the AMD offerings we had on offer. (this shocked me, i recon someone in infrastructure 'nobbled' the results to get more air compression jobs from the sales girl).

    But the problem is this still takes quite a while, often into the minuites teritory.

    So with CUDA with shed loads of fast memory on each card seams like it might be a very tempting option (plus it seams very cost friendly in terms of OPs per U). Not to mention the obvious benefit for Monty Carlos, but those aren't bottlenecking with our current design pattern (nor likely to over the forseable future..... That statement is going to byte me in the arse i can tell).

    have you tried the GASS thing then? Programming in CUDA is a mind feck, but i'm sure thats just because i'm not used to it.
    throw new ArgumentException (String, String, Exception)

  9. #9
    Comfortably Numb directhex's Avatar
    Join Date
    Jul 2003
    Location
    /dev/urandom
    Posts
    17,074
    Thanks
    228
    Thanked
    1,027 times in 678 posts
    • directhex's system
      • Motherboard:
      • Asus ROG Strix B550-I Gaming
      • CPU:
      • Ryzen 5900x
      • Memory:
      • 64GB G.Skill Trident Z RGB
      • Storage:
      • 2TB Seagate Firecuda 520
      • Graphics card(s):
      • EVGA GeForce RTX 3080 XC3 Ultra
      • PSU:
      • EVGA SuperNOVA 850W G3
      • Case:
      • NZXT H210i
      • Operating System:
      • Ubuntu 20.04, Windows 10
      • Monitor(s):
      • LG 34GN850
      • Internet:
      • FIOS

    Re: Mono 2.0 released - for most of your .NET needs

    Quote Originally Posted by TheAnimus View Post
    have you tried the GASS thing then? Programming in CUDA is a mind feck, but i'm sure thats just because i'm not used to it.
    I gave it a quick spin - I'm evaluating .NET as a platform for what we do at work, and it was an avenue worth exploring.

    It's... well, it's a direct mapping of CUDA, so it's about as user-friendly as CUDA. But that means nasty things like not supporting .NET data types very well (e.g. Float works, Double not so much). Once I started getting into the land of needing unsafe{} and array pointers, I thought "bugger this, it's less fun than doing it in C"

    That said, one function it has is the ability to load a compiled GPU-loadable CUDA app (a .cubin file, at least on Linux) and run/return methods from that compiled C app, basically a smarter managed version of P/Invoke, but on the GPU. If you have a CUDA 'kernel' for your ops already written in C, then it's the better way to turn it into a .NET app, IMHO

    Or, as suggested, Brahma - use LINQ, run on GPU.

  10. #10
    Seething Cauldron of Hatred TheAnimus's Avatar
    Join Date
    Aug 2005
    Posts
    17,168
    Thanks
    803
    Thanked
    2,152 times in 1,408 posts

    Re: Mono 2.0 released - for most of your .NET needs

    Quote Originally Posted by directhex View Post
    Almost all Mono technologies run in MS.NET. The shell is one exception - and one of the major problems is that whilst Mono's compiler is written in C# (and therefore easy to subclass etc), Microsoft's csc is C++ (so rather less embeddable in a managed app)
    I am really taken with Cecil because Reflection.Emit is a pain in the arse to maintain (its pretty much write once code), and emitting C# code to temp folder and compiling it just seams wrong (i'm looking at you XmlSerializer).

    One of the things i've been looking at doing is embedding the DLR into excel via a C++/CLI DLL loaded via the old XLL interface. I might actually look at using the mono compiler, thing is thou if there are any differences between it and the old "you don't get fired for buying IBM" mentality that ensures I use the MS one for most things, I reckon that will come back to haunt me.

    Its really quite hard because on one hand you want to leverage all the latest and greatest of the new technologies, I did this with WPF, i absolutely love it, its just so flexible, and given that one of my most profitable apps is a trade finding platform, that accounts for about 80% of my budget, and has been really helping the desk through these turbulant times, i embraced it for this app. The request GUI changes when the wind does, we have something like 8 parameters for a simple correlation FFS! So WPF is just awsome for this. What did I not think of? How hard it is to learn, and get people who are skilled in. So it ends up with me having to do all of the code including stuff that i should really be able to delegate if it was in WinForms. (no don't even suggest using GTK). Its a real pain in the arse because that one decision has put this project behind track, i've been having to code to the small hours of the morning and weekends to keep it on target. I've spent about £6k in training to get more people upto pace but its such a steep learning curve its really slowing the pace of developement.

    So with stuff like CUDA i'll really have to dip my toe in the water. I'm thinking of asking for a:
    http://www.kikatek.com/product_info....ducts_id=76065

    With any luck when stuff quieten downs over xmas, i'll be able to have a play, and for £5k it really does seam like a viable option.
    throw new ArgumentException (String, String, Exception)

  11. #11
    Comfortably Numb directhex's Avatar
    Join Date
    Jul 2003
    Location
    /dev/urandom
    Posts
    17,074
    Thanks
    228
    Thanked
    1,027 times in 678 posts
    • directhex's system
      • Motherboard:
      • Asus ROG Strix B550-I Gaming
      • CPU:
      • Ryzen 5900x
      • Memory:
      • 64GB G.Skill Trident Z RGB
      • Storage:
      • 2TB Seagate Firecuda 520
      • Graphics card(s):
      • EVGA GeForce RTX 3080 XC3 Ultra
      • PSU:
      • EVGA SuperNOVA 850W G3
      • Case:
      • NZXT H210i
      • Operating System:
      • Ubuntu 20.04, Windows 10
      • Monitor(s):
      • LG 34GN850
      • Internet:
      • FIOS

    Re: Mono 2.0 released - for most of your .NET needs

    Quote Originally Posted by TheAnimus View Post
    So with stuff like CUDA i'll really have to dip my toe in the water. I'm thinking of asking for a:
    http://www.kikatek.com/product_info....ducts_id=76065
    Warning 1: Requires two PCIe 16x 2.0 slots to use fully (the S870 is four distinct GPUs, two "host cards" connect to the Tesla via a fat cable & allow access to 2 GPUs per host card)

    Warning 2: Linux-only

  12. #12
    Seething Cauldron of Hatred TheAnimus's Avatar
    Join Date
    Aug 2005
    Posts
    17,168
    Thanks
    803
    Thanked
    2,152 times in 1,408 posts

    Re: Mono 2.0 released - for most of your .NET needs

    Hmm a direct mapping is fine.

    Basically the problem i'm worrying about is the marshalling interop. As it stands i'd like to be able to create a 'world' inside the memory on the CUDA processors, i'd like to be able to do simple operations on the data in CUDA, and get the data back out.

    All of our current infrascture is .Net for calculating, part of me thinks it would be simpler to have a CLEAR isolation between a unix box running CUDA, and push it out with some mono in a .Net 2.0 remoting style (WCF + Big object graph (a double been an object ) = configuration hell.) and back into a complete .Net land. However i'm not sure if i'll be able to get everything i want done in CUDA. My playing attempts showed awful performance doing an intersection, however i'm fairly sure thats because i'm new to the language.
    throw new ArgumentException (String, String, Exception)

  13. #13
    Seething Cauldron of Hatred TheAnimus's Avatar
    Join Date
    Aug 2005
    Posts
    17,168
    Thanks
    803
    Thanked
    2,152 times in 1,408 posts

    Re: Mono 2.0 released - for most of your .NET needs

    Quote Originally Posted by directhex View Post
    Warning 1: Requires two PCIe 16x 2.0 slots to use fully (the S870 is four distinct GPUs, two "host cards" connect to the Tesla via a fat cable & allow access to 2 GPUs per host card)

    Warning 2: Linux-only
    To be honest, it could be apple only for this useage and it would be fine, its very much silo'd from every day stuff, and it would be easy to fall-over to our current slow system for DR etc. The biggest problem will be convincing infrastructure.

    The host server i'm write in saying thou dosen't have to be super high spec thou does it? I could probably get a respectable HP one, with a sheadload of fast ram, in 1U, bringing the total to < £10k.

    I can get away with that much cost easily for an experiment. The problem is the dev time, I don't have a signal resource that dosen't cost the company that much in a fortnight. Finding a good programmer who's cheap enough to work on something like this is damn hard in a FO environment (because the going rate is just so high).
    throw new ArgumentException (String, String, Exception)

  14. #14
    Comfortably Numb directhex's Avatar
    Join Date
    Jul 2003
    Location
    /dev/urandom
    Posts
    17,074
    Thanks
    228
    Thanked
    1,027 times in 678 posts
    • directhex's system
      • Motherboard:
      • Asus ROG Strix B550-I Gaming
      • CPU:
      • Ryzen 5900x
      • Memory:
      • 64GB G.Skill Trident Z RGB
      • Storage:
      • 2TB Seagate Firecuda 520
      • Graphics card(s):
      • EVGA GeForce RTX 3080 XC3 Ultra
      • PSU:
      • EVGA SuperNOVA 850W G3
      • Case:
      • NZXT H210i
      • Operating System:
      • Ubuntu 20.04, Windows 10
      • Monitor(s):
      • LG 34GN850
      • Internet:
      • FIOS

    Re: Mono 2.0 released - for most of your .NET needs

    Quote Originally Posted by TheAnimus View Post
    The host server i'm write in saying thou dosen't have to be super high spec thou does it? I could probably get a respectable HP one, with a sheadload of fast ram, in 1U, bringing the total to < £10k.
    That's correct - we use a 1U HP server (we only have one host card hooked up ATM)

  15. #15
    Get in the van. Fraz's Avatar
    Join Date
    Aug 2007
    Location
    Bristol
    Posts
    2,919
    Thanks
    284
    Thanked
    397 times in 231 posts
    • Fraz's system
      • Motherboard:
      • Gigabyte X58A-UD5
      • CPU:
      • Watercooled i7-980X @ 4.2 GHz
      • Memory:
      • 24GB Crucial DDR3-1333
      • Storage:
      • 240 GB Vertex2E + 2 TB of Disk
      • Graphics card(s):
      • Water-cooled Sapphire 7970 @ 1175/1625
      • PSU:
      • Enermax Modu87+
      • Case:
      • Corsair 700D
      • Operating System:
      • Linux Mint 12 / Windows 7
      • Monitor(s):
      • Dell 30" 3008WFP and two Dell 24" 2412M
      • Internet:
      • Virgin Media 60 Mbps

    Re: Mono 2.0 released - for most of your .NET needs

    Alright .Net geeks.

    I'm just about to start learning C#... I'm an experienced C++ programmer, but frankly C++ is p**sing me off these days what with all the tedium you have to go through to actually do something useful. I was contemplating improving my mediocre Python skills, but decided that C# sounded an altogether better propect.

    So... if I want to keep as open sourcey as possible, what's the best way of going about things? I potentially want to make apps that run on Linux, Mac OS X and Windows. Any good general advice? Is there a good IDE for doing things other than Visual Studio (which is obviously Windows-bound...)? I commonly use Eclipse for C++ dev, being that it runs on any of the above 3 platforms, but google doesn't give me much hope of C# and Eclipse going together too well.

    Other n00b questions: For running apps, you have to install Mono's runtime environment on whatever machine you want to run on right? Is the actual code then completely cross-platform?

  16. #16
    Comfortably Numb directhex's Avatar
    Join Date
    Jul 2003
    Location
    /dev/urandom
    Posts
    17,074
    Thanks
    228
    Thanked
    1,027 times in 678 posts
    • directhex's system
      • Motherboard:
      • Asus ROG Strix B550-I Gaming
      • CPU:
      • Ryzen 5900x
      • Memory:
      • 64GB G.Skill Trident Z RGB
      • Storage:
      • 2TB Seagate Firecuda 520
      • Graphics card(s):
      • EVGA GeForce RTX 3080 XC3 Ultra
      • PSU:
      • EVGA SuperNOVA 850W G3
      • Case:
      • NZXT H210i
      • Operating System:
      • Ubuntu 20.04, Windows 10
      • Monitor(s):
      • LG 34GN850
      • Internet:
      • FIOS

    Re: Mono 2.0 released - for most of your .NET needs

    Quote Originally Posted by Fraz View Post
    So... if I want to keep as open sourcey as possible, what's the best way of going about things? I potentially want to make apps that run on Linux, Mac OS X and Windows. Any good general advice? Is there a good IDE for doing things other than Visual Studio (which is obviously Windows-bound...)? I commonly use Eclipse for C++ dev, being that it runs on any of the above 3 platforms, but google doesn't give me much hope of C# and Eclipse going together too well.
    VS.NET is probably the "best" IDE out there, and primarily uses System.Windows.Forms (a pretty thin wrapper around the old MFC-style pixel-based toolkit). WinForms apps will run on non-Windows platforms, but look like **** (as well as suffering pixel-based side effects such as not scaling properly to different DPI or system font sizes).

    Alternative options include WPF (next-gen windows GUIs, Windows-only right now), GTK# (.NET version of toolkit used by Pidgin or GIMP, uses containers for layout, requires extra download for use on Windows, the GTK#-for-MS.NET package), Cocoa# (mac only), or other more uncommon options like Qyoto or WxNet

    Other n00b questions: For running apps, you have to install Mono's runtime environment on whatever machine you want to run on right? Is the actual code then completely cross-platform?
    You need to install Mono on any Linux/Mac you want to run on. Windows can use MS.NET instead. The produced assemblies are indeed cross-platform, unless you program them not to be

  17. Received thanks from:

    Fraz (06-11-2008)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 17
    Last Post: 15-07-2007, 03:59 PM
  2. Replies: 5
    Last Post: 17-03-2007, 08:20 PM
  3. Microsoft Baseline Security Analyzer 2.0 released
    By Paul Adams in forum Software
    Replies: 3
    Last Post: 04-07-2005, 07:29 AM
  4. Mono on Apache, any tips?
    By stytagm in forum Software
    Replies: 0
    Last Post: 28-02-2005, 07:48 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •