Jump to content

This year in school I am required to complete a year long project that results in a final product and learned skills. I have decided that I want to learn parallel/multi-core programing. The linked form is for the sole purpose of deciding which language I should use for my project based on ease of use and possible support base (popularity). I would greatly appreciate if you guys, and gals, could fill out the included Google form to assist me with this research.

Thanks,

scorcher646

https://goo.gl/forms/mrTSilLs72idd64v2

Link to comment
https://linustechtips.com/topic/795179-preferred-programing-language-research/
Share on other sites

Link to post
Share on other sites

I use C# with the unity game engine.

 

Since I am to lazy to put something interesting here, I will put everything, but slightly abbreviated. Here is everything:

 

42

 

also, some questions to make you wonder about life:

 

What is I and who is me? Who is you? Which armrest in the movie theatre is yours?

 

also,

 

Welcome to the internet, I will be your guide. Or something.

 

 

My build:

CPU: Intel Core i5-7400 3.0GHz Quad-Core Processor,

 Motherboard: ASRock B250M Pro4 Micro ATX LGA1151 Motherboard, 

Memory: Corsair 8GB (1 x 8GB) DDR4-2133 Memory,

Storage: Seagate Barracuda 1TB 3.5" 7200RPM Internal Hard Drive, 

Video Card: MSI Radeon RX 480 4GB ARMOR OC Video Card, 

Case: Corsair 100R ATX Mid Tower Case , 

Power Supply: Corsair CXM 450W 80+ Bronze Certified Semi-Modular ATX Power Supply, 

Operating System: Microsoft Windows 10 Home Full, 

Wireless Network Adapter: TP-Link TL-WN725N USB 2.0 802.11b/g/n Wi-Fi Adapter, Case Fan: Corsair Air Series White 2 pack 52.2 CFM  120mm Fan

 

ou do not ask why, you ask why not -me

 

Remeber kinds, the only differ between screwing around and scince is writing it down. -Adam Savage.

 

Only two things are infinite: the universe and human stupidity, and I'm not even sure of the former. - Albert Einstein.

Link to post
Share on other sites

python for me i created a script download images from a webpage using all the cores the cpu. 

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to post
Share on other sites

C, C++, C#, Python, these all work more or less for what you want.

 

However, I find just multi-threaded programming by itself vague at best. You should find a problem that can be parallelized easily and scales up with the number of cores. An easy one I think is running the basis of JPEG compression.

Link to post
Share on other sites

I have 2 favorite languages: Python and C++.

I write multi threaded applications with them regularly.

 

By the way, does GPGPU also count towards multithreading?

Desktop: Intel i9-10850K (R9 3900X died 😢 )| MSI Z490 Tomahawk | RTX 2080 (borrowed from work) - MSI GTX 1080 | 64GB 3600MHz CL16 memory | Corsair H100i (NF-F12 fans) | Samsung 970 EVO 512GB | Intel 665p 2TB | Samsung 830 256GB| 3TB HDD | Corsair 450D | Corsair RM550x | MG279Q

Laptop: Surface Pro 7 (i5, 16GB RAM, 256GB SSD)

Console: PlayStation 4 Pro

Link to post
Share on other sites

41 minutes ago, mathijs727 said:

By the way, does GPGPU also count towards multithreading?

I guess it depends on what the work. SIMD is multithreading, but at the same time when I think of it, I also think of multiple workers doing different, independent things that require managing resources and such multithreading (and probably the more interesting variant).

Link to post
Share on other sites

Personally my favorite programming languages at the moment are: Common Lisp, Python, Lua, C and C++ (at least those are what I use most at the moment). All of them have some way of doing multicore programming (although admittingly Lua doesn't have this natively, although it is possible through something like LuaLanes). When I was programming on Windows (which I don't do anymore) I did a lot with C#, which also has support for multi-core programming. I think you will find that even if a language doesn't support multi-core/parallel programming natively there will likely be a library for the language that implements it (at least that is the case most of the time, there are exceptions to the rule of course).

 

If you don't know what language you should do your project in then you should do some research on languages which you know have support for multi-core/parallel programming, and find one that you like using.

Link to post
Share on other sites

6 hours ago, mathijs727 said:

I have 2 favorite languages: Python and C++.

I write multi threaded applications with them regularly.

 

By the way, does GPGPU also count towards multithreading?

As someone who only did python concurrency in college in a janky project (which ended up getting me my current job), is there a clean way to get true non-shared concurrency in python? The only way I did it was (again, janky college code from years ago), programmatically spinning up more instances of the python interpreter and having them work on sectioned segments of data, since memory isn't shared as each interpreter is its own process in windows.. It was the only way I knew how to get around the global interlock. 

Anyway, to answer the thread, C++ is my favorite hands down. 

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to post
Share on other sites

4 hours ago, reniat said:

As someone who only did python concurrency in college in a janky project (which ended up getting me my current job), is there a clean way to get true non-shared concurrency in python? The only way I did it was (again, janky college code from years ago), programmatically spinning up more instances of the python interpreter and having them work on sectioned segments of data, since memory isn't shared as each interpreter is its own process in windows.. It was the only way I knew how to get around the global interlock. 

Anyway, to answer the thread, C++ is my favorite hands down. 

Python contains a multiprocessing module which functions to such as a parallel map and apply.

It still works by spinning up multiple processes, but the module also contains primitives to communicate between the threads/processes.

 

If you have data parallelism then you probably dont need communication and the map function will be all you need.

Desktop: Intel i9-10850K (R9 3900X died 😢 )| MSI Z490 Tomahawk | RTX 2080 (borrowed from work) - MSI GTX 1080 | 64GB 3600MHz CL16 memory | Corsair H100i (NF-F12 fans) | Samsung 970 EVO 512GB | Intel 665p 2TB | Samsung 830 256GB| 3TB HDD | Corsair 450D | Corsair RM550x | MG279Q

Laptop: Surface Pro 7 (i5, 16GB RAM, 256GB SSD)

Console: PlayStation 4 Pro

Link to post
Share on other sites

I would recommend Haxe. It is a beautiful language that can "compile" to many different "languages" (targets) allowing it to be used for a vast array of things.

 

It doesn't see much use, but it is far from dead.

 

It is by far the cleanest and most pleasant language I've used.

Link to post
Share on other sites

9 hours ago, reniat said:

As someone who only did python concurrency in college in a janky project (which ended up getting me my current job), is there a clean way to get true non-shared concurrency in python? The only way I did it was (again, janky college code from years ago), programmatically spinning up more instances of the python interpreter and having them work on sectioned segments of data, since memory isn't shared as each interpreter is its own process in windows.. It was the only way I knew how to get around the global interlock.

There's a multithreading module you can use. I've used it in a few examples on a post I did a while ago:

 

Link to post
Share on other sites

2 hours ago, M.Yurizaki said:

There's a multithreading module you can use. I've used it in a few examples on a post I did a while ago:

 

does it let you get around the GIL if your goal was true simultaneous processing on different cores?

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to post
Share on other sites

2 hours ago, reniat said:

does it let you get around the GIL if your goal was true simultaneous processing on different cores?

Probably not, but the notes about GIL on the Python wiki say it's a problem if you use CPython as your interpreter. If you use Jython or IronPython, there is no GIL

Link to post
Share on other sites

1 hour ago, M.Yurizaki said:

Probably not, but the notes about GIL on the Python wiki say it's a problem if you use CPython as your interpreter. If you use Jython or IronPython, there is no GIL

I wonder if they'll ever move the reference implementation from C to C++, to allow for stuff like native simultaneous concurrency.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to post
Share on other sites

3 minutes ago, reniat said:

I wonder if they'll ever move the reference implementation from C to C++, to allow for stuff like native simultaneous concurrency.

C++ may not be better. .NET was designed with thread safety in mind and with facilities for thread safe access. Not sure if Java or the latest revision of C++ is the same way.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×