Does parallel version of Z3 work for BV logic? - parallel-processing

I could not utilize both cores of the processor with parallel Z3 3.2 (from bin_mt or x64_mt directory) with PAR_NUM_THREADS=2 on Windows7. The same 50% and no time difference with single threaded version.
Is parallel version supported for these logics or it works with QF_IDL only?

By mistake, parallel execution hasn't been included in Z3 3.2. That's why Z3 still runs sequentially when you set PAR_NUM_THREADS=2. Z3 team has corrected the mistake so parallel feature will be available in the next release.
EDIT:
As #Leo mentioned in the comment, parallel feature is now planned for Z3 4.1.

Related

Advantages of intel oneAPI versus the older Parallel Studio XE (Fortran user)

I program numerical models to solve Partial Differential Equations in Fortran, in serial and parallel (with MPI). Only Fortran, I do not know/need other languages. I see I now need to migrate to Intel OneAPI, before I had Parallel Studio XE 2019. Any advantage/new feature after migrating to OneAPI that a Fortran average user will enjoy? I never used GPUs, will OneAPI make the transition easier if in the future I wanna learn how to parallelize the code and run it on GPU?
There is no necessity for a transition to speak about. You will get the same ifort you had before, just an updated version. And an option to try the new (LLVM-based) ifx, but it is just an option, I did not use it yet either.
The ifort compiler is the same compiler you are used to, just updated to (as of now) version 2021.2 with various small improvements and bug fixes as always with their new version.
If you do want to try new ifx, it indeed comes with new GPU features. Only the ifx compiler supports GPU offload. See Get Started with OpenMP* Offload to GPU for the IntelĀ® oneAPI DPC/C++ Compiler and IntelĀ® Fortran Compiler (Beta)

Is it somehow possible to use current nightly builds of SUMO in Veins?

I would like to use Veins with functionality that was only recently added to SUMO and that is still being further developed. The work that I have in mind is a PhD project that has recently started, and I suppose the simulation part will not start before 2021. Given that Veins currently uses SUMO version 1.2.0, and that, IIRC, the TraCI protocol has been updated after that, how difficult would it be for us to update the system so that Veins works with SUMO 1.4.x or even better with the future 1.5.x? Which skills would be needed?
The current Veins master works with Sumo 1.3.1 already. Afaik, neither version 1.4.0 nor the current progress on Sumo's master branch have been tested, but looking at the changelogs, it seems that there were no changes that look like they should break the current implementation, as mostly new functions have been added that are not yet implemented in Veins. I'd suggest simply running the Veins example against a Sumo-master, if this works without issues that's a good indicator that also more sophisticated simulations will work.

What is difference between Linux kernel versions?

What is Linux kernel versions(like 2.x, 3.x, 4.x)'s major difference?
And 2.x and 3.x version have stable version?
Actually I think you should know that stable/EOL and longterm mean:
As kernels move from the mainline into the stable category, two things can happen:
They can reach End of Life after a few bugfix revisions, which means that kernel maintainers will release no more bugfixes for this kernel version, or
They can be put into longterm maintenance, which means that maintainers will provide bugfixes for this kernel revision for a much longer period of time.
And here are longterm release kernels and stable kernels:
mainline: 4.10-rc4
stable: 4.9.4
stable: 4.8.17
longterm: 4.4.43
longterm: 4.1.37
longterm: 3.18.46
longterm: 3.16.39
longterm: 3.12.69
longterm: 3.10.104
longterm: 3.4.113
longterm: 3.2.84
If you want to see Linux kernel changelog or bugs,you can check out this,and also you can read the feature history of Linux kernel.
Hope this helps.
I have no experience whatsoever with kernel development but this same question about the significance of major version numbers came to my mind at some point too.
The first point of call to answer this question is The Linux Kernel Archives that groups the versions into:
v0.x - historic
v1.0 - changelog
v1.1
v1.2
v1.3
v2.0 - changelog
v2.1 - development
v2.2 - stable
v2.3 - development
v2.4 - stable, stayed around for ~10 years
v2.5 - development
v2.6 - stable, stayed around for ~12 years
v3.x - the transition from version 2.6.39 to 3.0 is a perfectly normal version increment, following the pattern set for the 2.6 series *
v4.x - switch from 3.x to 4.0 version numbers is entirely meaningless and it should not be associated to any important changes in the kernel *
So while up to version 2.6 there is a development/stable pattern (see timeline), from version 2.6 the different major version number appears to signify nothing and the things one should pay attention to when switching kernels is the changelog and length of support. Beyond that changing from 2 to 3 or from 3 to 4 is not going to be any different than switching from 3.x to 3.y.
There is a post on Unix & Linux that goes more into gore details of the highlights of particular kernel versions.
Please find this reference to start for your question.

how to get started with cilk++

I want to use cilk++ for writing parallel code. I want to know the the simplest way to get started either in windows or ubuntu 10.04.What should I istall to get started with cilk++.
Thanx.
cilk++ is an earlier implementation of the Cilk extension to C++. It is no longer supported.
Cilk has been implemented in the Intel Composer XE C++ compiler, as well as the "cilkplus" branch of GCC.
I'd start with the article http://www.cilkplus.org/which-license at the Cilk Plus website. Be aware that the "cilkplus" branch of GCC is off of the GCC 4.8 stream, which is under active development.
Barry Tannenbaum -
Intel Cilk Plus Runtime Development
Go here.
Cilk Plus OSS Website

gcc for MIPS, 3.4.4 or 4.3.2?

We've made a number of changes to gcc 3.3.2 (for MIPS) to support the vagaries of an embedded system we're working on. gcc 3.4 and later appear to have substantially improved the MIPS code generation, so I'm planning to port our changes forward. The question is which gcc version should I target: 3.4.4 or straight to 4.3.2? Its a substantial amount of work to port the changes, I don't want to do it twice and pick the better result.
The Linux-MIPS project still recommends gcc 3.4.4, and MIPS Technologies maintains a modified SDE toolchain based on gcc 3.4.4. Though my embedded system is not running Linux, I respect their expertise.
From what I've read the MIPS backend does not benefit from the higher level optimizations in 4.x, and actually produces slower code than 3.4.4. Can anyone confirm or deny this?
I haven't used MIPS since the classroom so I can't directly answer your question.
I would suggest sending an e-mail to someone on the Linux-MIPS project, and ask when they plan to upgrade. Assuming it is not soon. It looks like 3.4.4 is a worthy upgrade.

Resources