Intel® C++ Compiler

Intel C++ Compiler 16.0 is now available in Intel Parallel Studio XE 2016

The new version Intel C++ Compiler 16.0 is now available in Intel Parallel Studio XE 2016 that has launched early this week. If your support license is current you can download and install this at no additional charge from the Intel Registration Center

You will find some blog postings about some new features and new free tools.

Оптимизировали, оптимизировали, да не выоптимизировали!

Оптимизация? Конечно, каждый сталкивался с данной задачей при разработке своих, сколь-нибудь значительных, требующих определённых вычислений, приложений. При этом способов оптимизировать код существует огромное множество, и, как следствие, различных путей сделать это в автоматическом режиме с помощью опций компилятора. Вот здесь и возникает проблема – как выбрать то, что нужно нам и не запутаться?

Linking issue with Intel Debug build ...


I get the following linking error when building a debug build with Intel 16.0 compiler:

 error LNK2019: unresolved external symbol ___intel_ssse3_strncpy referenced in function

Does anyone know the corresponding lib where this symbol resides?  

Many thanks,


ps>  Using windows with VS2013, Intel Compiler 16.0.

omp_get_num_procs() doesn't returns all processor

Hi, I have an application in c++ that is using Qt libraries.

When I call omp_get_num_procs() from any part of the program, doesn't return the maximum number of processors that my machine has, so all the threads are distributed in the available processors.

But, If I call  omp_get_num_procs() from main.cpp, before to QApplication constructor, I obtain all processor and the thread are distributed in all processors that the machine has.

I've tried to find out what exactly does  omp_get_num_procs() that is changing the available processors fro the application.

How to specify __mm512 to coreside with __mm256 or _mm128

In working with the intrinsics guide, and as for use with AVX512 one of the intrinsics I am wanting to use is

__m512d _mm512_broadcastsd_pd(__m128d a)

However, I'd like to avoid using a mov to move data from register to register, I'd rather use a cast.

The __m128 registers are co-resident with the low 8 __m512 registers. So, what I am asking for is

__m512d foo compilerDirective(use a register in range of 0:7);

Or one to specifically specify the zmm register to use (in range of 0:7). (I'd rather not regress to assembler)

__builtin_clrsbl undefined

__builtin_clrsb and __builtin_clrsbll exist, but __builtin_clrsbl seems to be missing.  Quick test:

#include <stdlib.h>
#include <stdio.h>

int main (void) {
  printf("int: %d\n", __builtin_clrsb(-1));
  printf("long: %d\n", __builtin_clrsbl(-1));
  printf("long long: %d\n", __builtin_clrsbll(-1));

  return EXIT_SUCCESS;

When attempting to compile:

Suscribirse a Intel® C++ Compiler